Как получить атрибуты предмета через API?
Мы используем облако Dynamics 365 Business Central и пытаемся получить элементы со всеми атрибутами через OData.
В документации Microsoft мы нашли эту конечную точку:
api.businesscentral.dynamics.com/v1.0[our tenant id]/Sandbox/ODataV4/Company('CRONUS%20DE')/items
Но, к сожалению, ответ не содержит атрибутов и значений элементов, таких как Farbe, Tiefe и т. Д.
Далее мы попытались добавить новые веб-сервисы. Но некоторые из этих конечных точек возвращают пустые значения, а некоторые из них (7506, 7507, 7508, 7510) не работают и возвращают:
No HTTP resource was found that matches the request URI
Объекты 7500, 7501, 7503 содержат информацию об атрибутах. Но ни один из них (7500 - 7510) не содержит отношения между Предметом, Атрибутами и Значениями.
Может быть, есть другой способ получить элементы со значениями их атрибутов? Мы также пытались исследовать график Microsoft, но безуспешно.
2 ответа
у меня похожие проблемы с этим. Я считаю, что API динамики исключительно не интуитивно понятен и сложен в использовании. Самое большее, что я смог получить, это войти в настройки api для динамики и раскрыть таблицы для нескольких атрибутов элементов (я считаю, что номера таблиц такие, как показано ниже:
- 7500 - Атрибут предмета
- 7501 - Значение атрибута предмета
- 7502 - Преобразование атрибутов предмета
- 7504 - Выбор значения атрибута предмета
- 7505 - Отображение значения атрибута предмета
Я не могу комментировать, почему отсутствует 7503.
используя 7500 в качестве примера, когда вы открываете таблицу, система предоставляет конечную точку (к сожалению, они всегда продвигают OData и устаревшие ресурсы SOAP; я не могу понять, почему у них такая вендетта против простых и простых - использовать конечную точку REST).
https://api.businesscentral.dynamics.com/v2.0/<TENANT_ID>/<ENVIRONMENT_NAME>/ODataV4/Company('COMPANY_IDENTIFIER')/ItemAttributes
используя эту конечную точку, вы можете получить список самих типов атрибутов (например, скажем, вы определили атрибут с именем 'BaseColor', вы должны получить здесь результат для имени атрибута 'BaseColor', его идентификатора, его типа , так далее.),
с конечной точкой ItemAttributeValues вы должны получить фактические значения атрибутов, которые существуют (например, для некоторого элемента вы случайно установили для его атрибута BaseColor значение Blue, вы должны получить ответ для этого значения атрибута с типом атрибута BaseColor, значение в виде «Blue» вместе с идентификатором объекта и т. Д.).
тем не менее, когда дело доходит до любых созданных значений атрибутов для элементов, я не могу понять, как получить ассоциацию атрибутов с этими элементами. Я ожидаю, что опция «сопоставление значений атрибутов элемента» будет чем-то вроде пары item_id - attribute_id, чтобы для любого рассматриваемого элемента можно было запросить список атрибутов с помощью чего-то вроде фильтра. но, как вы сказали, после обнаружения некоторых из этих элементов их соответствующие конечные точки ничего не возвращают. вы доходите до того момента, когда вы говорите: «О ... УДИВИТЕЛЬНЫЙ! есть отображение «значение-элемент». это имеет смысл, и я определенно могу это использовать ». несколько мгновений спустя API плюет вам в лицо ошибкой или насмехается над вами, возвращая то, чего вы не ожидаете, например, пустой набор данных.
этот api - это постоянная тяжелая битва, полностью пронизанная наземными минами. полный взорвать меня-занозой в заднице.
Вы должны попробовать с конечной точкой ниже:
/v2.0/tenant_id/enviornment_name/ODataV4/Company(company_id)/Items