Я пытаюсь получить список контактов, которым назначена определенная роль. Если у моего контакта есть роль пользователя «Торговый представитель», то я хотел бы получить все контакты, для которых «Торговый представитель» входит в число их ролей.
Для контекста модель контакта выглядит следующим образом:
{
id: "7e87d8fc-6d18-4g95-8334-e54b69e2803t",
... // additional fields
UserInfo: { // <-- ContactUserInfo entity
id: "da1b408e-571c-4896-be61-a02c5f99b1ec",
... // additional fields,
Roles: [] // <-- Roles are stored here as ContactRole entities
}
}
Снимок экрана модели контакта в документах API
Что я пробовал такfar:
Согласно Руководству по развитию интеграции (стр. 65) , связанные и подробные сущности должны быть явно указаны в параметре раскрытия, так что я получаюследующее:
{{site}}/entity/Default/18.200.001/Contact?$expand=UserInfo/Roles
Однако, это дает мне ошибку:
Optimization cannot be performed.The following fields cause the error: UserInfo.Roles.RoleDescription: View Roles has BQL delegate.
Итак, я посмотрел на эту проблему BQL Delegate. В соответствии с Acumatica wiki (прокрутите вниз, «Замечания по использованию для конечных точек с версией контракта 3»), есть два решения:
2a. Не используйте эти поля ( не вариант )
2b. Получите проблемные поля по одному. НО я не могу этого сделать, потому что ни конечные точки ContactUserInfo, ни ContactRole не являются объектами верхнего уровня, то есть я не могу сделать HTTP-запрос к этим конечным точкам, даже если у меня есть их идентификаторы,
Поэтому я подумал, что, возможно, я смогу связать массив Roles с объектом Contact вместо объекта ContactUserInfo. Я выполнил действия
, описанные здесь в разделе
«Добавить связанный объект или объект подробностей к другому объекту» , но когда я перехожу к шагу 4, моя кнопка «Вставить» отключена, и я не могупродолжение.
Я видел где-то поток, который указывал, что, возможно, если бы я выбирал Контакты по одному, а не в виде списка, процесс оптимизации был бы проще, и массив Roles был бы видимым. Поэтому я поймал идентификатор контакта и изменил свой запрос на получение одного контакта вместо списка:
{{site}}/entity/Default/18.200.001/Contact/7e87d8fc-6d18-4g95-8334-e54b69e2803t?$expand=UserInfo
, но теперь по какой-то причине значение UserInfo
равно null
. Остальные поля такие же, как когда этот Контакт был в списке, поэтому он определенно получает правильные данные, но теперь поле UserInfo имеет значение null?
Спасибо
Надеюсь, одна из моих попыток оказалась на правильном пути. С удовольствием предоставим любую дополнительную информацию по запросу.