Доброго дня.
Настроена "бесшовная" интеграция в УТ 11.3 с ДО 2.1 через веб-сервис.
Не работают обновления статусов согласующих объектов, а именно - договоров контрагента.
Правило интеграции получения нужных обновляемых полей выглядит так:
- для поля "Согласован"
Если Источник.statusApproval <> Неопределено Тогда
Если Источник.statusApproval.name = "Согласован" Тогда
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
КонецЕсли;
Показать
- для поля "Статус"
Если Источник.statusApproval <> Неопределено Тогда
Если Источник.statusApproval.name = "Согласован" Тогда
Результат = Перечисления.СтатусыДоговоровКонтрагентов.Действует;
Иначе
Результат = Перечисления.СтатусыДоговоровКонтрагентов.НеСогласован;
КонецЕсли;
КонецЕсли;
Показать
При этом, статус присутствует в соответствующем регистре сведений ("СостоянияСогласованияВДокументообороте (Состояния согласования в 1С:Документообороте)");
Для диагностирования причины я полез в отладку регламентного задания обмена с ДО (ИнтеграцияС1СДокументооборотОбмен.ПолучитьДанные()).
Причину удалось найти:
ЗаполненКорректно = Объект.ПроверитьЗаполнение();
Если ЗаполненКорректно Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЕсли;
Оказывается, что статус имеет пустую ссылку. Получается, что проблема в правиле для сего поля? Криминала в выражении не вижу.
И ещё: почему-то запрос на изменения ("DMGetChangesRequest") получает данные спустя 5-10 минут. Т.е. сразу после изменения статуса внутреннего документа в ДО я пытаюсь запросить изменения, но там ничего нет! Очень неудобно для отладки(. Можете подсказать, как происходит получение измененных объектов?
Запрос = ИнтеграцияС1СДокументооборот.СоздатьОбъект(Прокси, "DMGetChangesRequest");
Запрос.lastMessageId = Константы.НомерПоследнегоПринятогоСообщенияДокументооборота.Получить();
Ответ = Прокси.execute(Запрос);
ИнтеграцияС1СДокументооборот.ПроверитьВозвратВебСервиса(Прокси, Ответ);
Для каждого ОбъектXDTO Из Ответ.objects Цикл
// обрабатываем
КонецЦикла;
Показать