При настройке штатного обмена между 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с ситуацией, когда документы (например, Реализация товаров и услуг или Отчет комиссионера) успешно регистрируются к обмену, но после запуска синхронизации «исчезают» из очереди выгрузки и при этом не появляются в базе-приемнике. В журнале регистрации БП при этом значится, что обработано 0 объектов, а в УТ фиксируются ошибки сопоставления. Разберем подробно причины этой проблемы и способы ее решения.
Одной из наиболее распространенных причин «тихого» исчезновения документов в последних релизах УТ 11.4 и УТ 11.5 является некорректная работа с версиями формата EnterpriseData. Рассмотрим ситуацию: система пытается использовать версию 1.10, которая на уровне программного кода конфигурации может содержать ошибки в XSD-схеме или механизмах сериализации данных.
Проанализируем симптомы: в Журнале регистрации УТ может быть указано, что данные выгружены, но в БП пакет просто не принимается или игнорируется без вывода критической ошибки в интерфейс. Для решения этой проблемы фирма «1С» выпустила специфический патч. Проверим его наличие в системе:
EF_00_00385576.Этот патч исправляет проблему отсутствия или некорректной обработки EnterpriseData 1.10. Если патч не установлен, его необходимо загрузить через сервис интернет-поддержки или установить вручную.
В современных конфигурациях 1С (УТ 11, ERP, КА) разделены понятия управленческого учета (Партнеры) и регламентированного учета (Контрагенты). Это часто становится камнем преткновения при обмене с Бухгалтерией предприятия, где сущность Партнер отсутствует. Разберем, как это влияет на выгрузку.
Когда система выгружает документ, она должна сопоставить Партнера из УТ с Контрагентом для БП. Если в настройках УТ включена опция «Независимо вести партнеров и контрагентов», то одному партнеру может соответствовать несколько юридических лиц. Проанализируем ошибку: не удалось получить контрагента для указанного партнера. Это происходит в тот момент, когда алгоритм обмена пытается найти «основного» контрагента, но не может этого сделать из-за неоднозначности данных или программной ошибки.
Посмотрим на ситуацию со справочником Номенклатура контрагентов. Даже если вы не выгружаете этот справочник напрямую, он может подтягиваться по ссылкам из документов (например, из Заказа клиента или Отчета комиссионера). Если для элемента этого справочника указан партнер, у которого нет связанного контрагента, выгрузка всего пакета данных может быть заблокирована.
Выясним причину ошибки на уровне программного кода. Проблема часто локализуется в общем модуле ПартнерыИКОнтрагенты в функции ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер). В некоторых релизах запрос внутри этой функции написан таким образом, что при наличии более чем одного контрагента у партнера, результат поиска всегда возвращает NULL.
Рассмотрим фрагмент проблемного запроса:
ВЫБРАТЬ
ВЫБОР
КОГДА ЕСТЬNULL(БлижнийУровень.Уровень, 0) < ЕСТЬNULL(УровеньСЧисломКонтрагентовБольшеОдного.Уровень, 0)
ТОГДА NULL
ИНАЧЕ БлижнийУровень.Уровень
КОНЕЦ КАК Уровень
ПОМЕСТИТЬ ИскомыйУровень
ИЗ
БлижнийУровень КАК БлижнийУровень
ПОЛНОЕ СОЕДИНЕНИЕ УровеньСЧисломКонтрагентовБольшеОдного КАК УровеньСЧисломКонтрагентовБольшеОдного
ПО (ИСТИНА)
Проанализируем это условие. Если у партнера привязано несколько контрагентов (например, 4 юридических лица на один управленческий холдинг), то в таблице БлижнийУровень может оказаться 0 записей или записи, которые из-за ПОЛНОЕ СОЕДИНЕНИЕ и условий в ВЫБОР приводят к результату NULL. В итоге функция возвращает пустое значение, и механизм обмена EnterpriseData считает, что объект не может быть выгружен, так как нарушена целостность данных для приемника (БП).
Рассмотрим пошагово, что необходимо сделать для восстановления работоспособности обмена:
Регистрация изменений для обмена. После неудачного обмена посмотрите, остались ли объекты в списке. Если они исчезли, значит УТ посчитала их «отправленными». В этом случае нужно вручную зарегистрировать их снова для повторной попытки после исправления данных.Контрагент.EF_00_00385576 является обязательным для корректной работы обмена через EnterpriseData в определенных версиях.ПолучитьКонтрагентаПартнераПоУмолчанию через расширение. Можно упростить логику, чтобы система брала первого найденного контрагента, если основной не задан, вместо того чтобы возвращать Неопределено.Посмотрим на пример того, как можно подстраховаться при поиске контрагента: если штатный механизм не возвращает значение, стоит добавить проверку в регистре сведений ИерархияПартнеров и убедиться, что уровни иерархии заполнены корректно. Часто проблема кроется именно в «битых» записях этого регистра, которые остаются после удаления или неверного объединения карточек партнеров.
Таким образом, мы выяснили, что проблема «исчезающих» документов носит комплексный характер: она может быть вызвана как недоработкой в коде типовой конфигурации 1С, так и несогласованностью данных в справочниках Партнеры и Контрагенты. Последовательное выполнение описанных шагов позволит восстановить обмен и обеспечить корректное попадание документов в 1С:Бухгалтерию.