#dynamics-crm #odata #dynamics-crm-365
#dynamics-crm #odata #dynamics-crm-365
Вопрос:
Я не могу получить поля поиска при фильтрации запроса OData.
Я использовал следующие запросы :
https://mycrm.api.crm4.dynamics.com/api/data/v9.1/contacts(guid)?$select=contactid,ownerid,createdby,new_expirefin,new_testcumul_stat```
Этот запрос извлекает contactid, new_expirefin и new_testcumul_stat, но никаких следов ownerid и createdby.
С другой стороны, этот запрос:
https://mycrm.api.crm4.dynamics.com/api/data/v9.1/contacts(guid)
верните все поля, включая отсутствующие в другом запросе. Запросы отправляются как Guid.
В обоих запросах используется
Prefer = odata.include-annotations="*"
заголовок. Зная, что я не могу знать, в каком столбце находятся запросы (я работаю над универсальной библиотекой), как я мог бы получить эти запросы?
Ответ №1:
Использование формата _lookupName_value
позволяет получить запросы:
https://myOrg.api.crm.dynamics.com/api/data/v9.1/contacts(guid)?$select=contactid,fullname,_ownerid_value,_createdby_value
Что, конечно, оставляет проблему с определением, какие поля являются поисковыми и, следовательно, нуждаются в таком форматировании.
Это может помочь:
https://myOrg.api.crm.dynamics.com/api/data/v9.1/EntityDefinitions(LogicalName='contact')?$select=LogicalNameamp;$expand=ManyToOneRelationships($select=ReferencingAttribute,ReferencedEntity)
Комментарии:
1. Работает хорошо, я использовал это для написания механизма кэширования метаданных, к которому я обращаюсь каждый раз, когда выполняется запрос. Не самый эффективный, но работает хорошо.