Интеграция систем 1С:ERP и 1С:Документооборот через веб-сервис DMService часто сопровождается трудностями при формировании XDTO-запросов. Одной из типичных проблем является получение ошибки «Неизвестное поле в условии отбора: performer» при попытке отобрать задачи по конкретному пользователю. Давайте разберем, почему это происходит и как правильно настроить взаимодействие между конфигурациями.
При использовании DMGetObjectListRequest для получения объектов системы мы сталкиваемся с жесткими ограничениями типизации. Этот объект предназначен для работы с конкретными элементами справочников или задачами бизнес-процессов, но он не обладает гибким механизмом динамической фильтрации, к которому мы привыкли в интерфейсе 1С. Попытка передать свойство performer в этот тип запроса закономерно вызывает ошибку, так как данное поле отсутствует в структуре DMObjectListCondition для этого класса.
Если ваша задача — получить список задач, которые отображаются в динамических списках 1С:Документооборот, следует пересмотреть подход к выбору типа запроса. Вместо DMGetObjectListRequest необходимо использовать DMGetDynamicListRequest.
Этот тип запроса специально разработан для работы с динамическими списками и поддерживает гораздо более широкий спектр условий отбора, включая поле performer. Проанализируем алгоритм перехода на новый тип запроса:
ОбработкаЗапросовXDTOБизнесПроцессыИЗадачи можно обнаружить, что именно DMGetDynamicListRequest является корректным методом для передачи условий фильтрации по исполнителям.
// Заменяем создание типа запроса
Запрос = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/dm", "DMGetDynamicListRequest"));
performer внутри условий отбора, так как динамический список ДО ожидает именно такой формат фильтрации для задач.Если архитектура вашего решения требует использования именно DMGetObjectListRequest, необходимо изменить тип объекта, который вы запрашиваете. Вместо DMTaskAction следует использовать DMBusinessProcessTask.
Однако просто заменить тип недостаточно. Чтобы фильтрация сработала, при передаче исполнителя необходимо соблюдать строгую типизацию:
value для условия отбора должно содержать объект типа DMBusinessProcessTaskExecutor.ИнтеграцияС1СДокументооборот, такие как ЗаполнитьОбъектXDTOИзОбъектногоРеквизита, чтобы избежать ошибок сериализации XML при формировании SOAP-запроса.Работа с веб-сервисами в 1С требует тщательной настройки среды. Чтобы не тратить время на поиск причин ошибок, следуйте этим рекомендациям:
ОбработкаЗапросов..., чтобы увидеть, как именно система разбирает приходящий XML.Таким образом, перенос логики фильтрации на DMGetDynamicListRequest позволяет эффективно решать задачу отбора по исполнителю, не прибегая к сложным доработкам кода обеих систем. Надеемся, что этот разбор поможет вам успешно настроить интеграцию!