Рассмотрим распространенную ситуацию, с которой сталкиваются пользователи и разработчики при попытке обмена данными между конфигурациями «1С:Управление торговлей» (УТ 11) и «1С:Бухгалтерия предприятия» (БП 3). Часто после обновления релизов до актуальных (например, УТ до версии 11.4.13 и выше) штатная синхронизация через универсальный формат EnterpriseData перестает работать. БП при этом может создавать файлы в папке обмена, а вот УТ выдает ошибки и прерывает выгрузку.
Проанализируем две основные ошибки, которые возникают в процессе обмена, и разберем по шагам, как восстановить корректную работу синхронизации.
В системных сообщениях при попытке выгрузки документов может появиться следующая ошибка проверки XDTO-схемы:
Проверка свойства 'Контрагент': форма: Элемент имя: { тип: { Отсутствует обязательное свойство
Выясним причину. Дело в том, что при переходе на версию УТ 11.4.13 разработчики 1С существенно изменили архитектуру некоторых справочников. В частности, справочник НоменклатураПоставщиков был переименован в НоменклатураКонтрагентов. В связи с этим устаревшие правила обмена формата EnterpriseData (обычно версий 1.8 – 1.15) при формировании пакета XDTO не могут корректно заполнить ключевые свойства контрагента. Структура объекта КлючевыеСвойства не проходит проверку, так как система не находит обязательный реквизит партнера или контрагента.
Также стоит обратить внимание на сами документы (например, «Приобретение товаров и услуг» или «Поступление товаров и услуг»). Посмотрим на поле контрагента в выгружаемом документе: иногда оно может быть не заполнено корректно (указан только партнер, но не указан контрагент), что усугубляет проблему при формировании XML-файла.
Вторая, не менее частая ошибка, сопровождается длинным стеком вызовов и указывает на модуль МенеджерОбменаЧерезУниверсальныйФормат. В журнале регистрации мы видим следующее:
Ошибка выполнения обработчика. Преобразование значения к типу Булево не может быть выполнено
{ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль}: Если НДСПоСтавкам2и4 Тогда
{ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль}: ОпределитьСтавкуНДС_Отправка(Товары, НДСПоСтавкам2и4);
Проанализируем эту ситуацию. В коде конфигурации есть проверка на использование специальных ставок НДС (2% и 4%). Выглядит это примерно так:
Если НДСПоСтавкам2и4 Тогда
// Обработка ставок НДС
КонецЕсли;
Ошибка возникает из-за того, что переменная НДСПоСтавкам2и4 в момент проверки получает значение Null или Неопределено, хотя система ожидает строго тип Булево (Истина или Ложь). Это свидетельствует о том, что:
Разберем по шагам, как исправить описанные выше ошибки и возобновить синхронизацию данных.
Ошибки XDTO-схем и необработанных переменных в модуле МенеджерОбменаЧерезУниверсальныйФормат (особенно при переходе на новые релизы УТ 11.4.13+ и БП 3.0.83+) чаще всего являются известными недоработками, которые оперативно исправляются разработчиками. Установите последние официальные патчи для обеих конфигураций. Это обновит встроенные правила обмена и алгоритмы выгрузки, устранив ошибку с типом Булево.
Для документов, на которых обмен «спотыкается» (в нашем случае это документы приобретения товаров от конкретных контрагентов), выполните простое переоткрытие и перепроведение. Это действие заставляет платформу пересчитать и дозаполнить скрытые служебные реквизиты, включая правильные значения НДС и признаки контрагентов, значениями по умолчанию. Зачастую этого достаточно, чтобы переменная НДСПоСтавкам2и4 получила правильное значение Ложь или Истина.
Откройте документы, указанные в отчете об ошибке. Убедитесь, что в них заполнено не только поле «Партнер», но и поле «Контрагент». Без этого правила конвертации не смогут сформировать узел КлючевыеСвойства, что и вызывает первую ошибку.
Если обновление патчей пока невозможно, попробуйте обойти конфликт измененных метаданных справочников. Для этого зайдите в настройки синхронизации данных на стороне «Управление торговлей», найдите параметры подключения и измените используемую версию формата обмена EnterpriseData. Например, если используется версия 1.8, понизьте ее до 1.6 или, наоборот, повысьте до самой актуальной из доступных. Это может заставить систему использовать другие алгоритмы выборки данных, совместимые с вашей структурой справочников.
Выполнив эти действия, вы сможете устранить конфликты в XDTO-схемах и восстановить стабильный обмен документами между торговой и бухгалтерской системами.