Как исправить неверное сопоставление договоров при обмене между УТ 11.5 и БП 3.0 через универсальный формат?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

При настройке типовой синхронизации между 1С:Управление торговлей 11.5 и 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с проблемой некорректного сопоставления договоров — для её решения пригодятся доработанные правила обмена EnterpriseData для УТ 11 и БП 3.0. Особенно остро это проявляется в операциях Интеркампани (передача товаров между организациями). В УТ 11 это документы передачи, где фигурирует договор между двумя собственными организациями, а в БП 3.0 они трансформируются в документы поступления или реализации, где одна из организаций выступает в роли контрагента. В данной статье мы разберем, почему система может игнорировать существующие привязки и как заставить обмен работать корректно.

Понимаем механику поиска в EnterpriseData (КД 3.0)

Для начала проанализируем ключевое отличие современного обмена через универсальный формат от старых технологий. Если в КД 2.0 основным инструментом сопоставления был регистр сведений СоответствияОбъектовИнформационныхБаз, то в EnterpriseData (КД 3.0) используется регистр ПубличныеИдентификаторыСинхронизируемыхОбъектов.

Рассмотрим стандартную стратегию поиска объекта в приемнике при поступлении данных:

  1. Поиск по уникальному идентификатору (GUID): Система ищет запись в регистре ПубличныеИдентификаторыСинхронизируемыхОбъектов. Если соответствие найдено и ссылка на объект в базе актуальна, система берет этот объект.
  2. Поиск по полям поиска: Если по GUID объект не найден, вступают в дело правила, прописанные в коде конфигурации (обычно это ИНН/КПП для контрагентов или Номер/Дата для договоров).
  3. Создание нового объекта: Если ни один из способов не дал результата, создается новая карточка.

Если вы обнаружили, что в регистре идентификаторов связь прописана верно, но в документе все равно появляется "чужой" договор или создается дубль, значит, проблема кроется в логике валидации владельца или в специфике работы модуля менеджера обмена — выявить расхождения в договорах поможет сверка взаиморасчетов по счетам 60 и 62 между БП 3.0 и УТ 11.5.

Проблема "Владельца" при сопоставлении договоров

Выясним причину, по которой GUID в регистре может игнорироваться. Справочник ДоговорыКонтрагентов является подчиненным справочнику Контрагенты. В архитектуре 1С при поиске подчиненного объекта система всегда проверяет его владельца.

Рассмотрим ситуацию: в УТ 11 организация "Альфа" передает товар организации "Бета". В БП 3.0 это превращается в покупку "Бетой" у контрагента "Альфа". Если по какой-то причине организация "Альфа" в БП сопоставлена не с тем контрагентом, который указан в качестве владельца договора в регистре идентификаторов, система отбросит найденную ссылку как "невалидную" и попытается найти другой договор у правильного контрагента или создаст новый.

Где искать логику поиска в коде конфигурации

В отличие от КД 2.0, правила здесь не хранятся во внешних XML-файлах. Разберем, в каких модулях сосредоточена логика. Основная работа по преобразованию данных в БП 3.0 происходит в общем модуле МенеджерОбменаЧерезУниверсальныйФормат.

Проанализируем структуру поиска. Вам необходимо найти функции, отвечающие за обработку справочника договоров. Обычно это процедуры, начинающиеся с префикса ППО_Справочник_ДоговорыКонтрагентов_....

В частности, за чтение и поиск отвечает процедура ППО_Справочник_ДоговорыКонтрагентов_ПриЧтенииДанныхXDTO. В ней жестко прописаны приоритеты полей поиска:

  1. Ссылка (GUID через публичные идентификаторы).
  2. Комбинация: Организация + Контрагент + Номер + Дата.
  3. Наименование (в редких случаях как последняя инстанция).

Алгоритм отладки и решения проблемы

Рассмотрим пошагово, как выявить место сбоя, если отладчик кажется слишком сложным инструментом на первом этапе.

Шаг 1. Анализ XML-файла выгрузки

Для начала проанализируем, что именно УТ 11 отправляет в БП. Настройте синхронизацию через локальный или сетевой каталог, чтобы иметь доступ к файлу обмена. Для контроля выгрузки документов и исправления ошибок после обмена подойдёт поиск расхождений между УТ и БП с повторной регистрацией.

  1. Выполните выгрузку из УТ 11.
  2. Откройте полученный XML-файл (через любой текстовый редактор).
  3. Найдите блок <CatalogObject.ДоговорыКонтрагентов>, соответствующий вашему проблемному договору.
  4. Посмотрите значение в узле Ref. Это и есть GUID, который будет искаться в БП в регистре публичных идентификаторов.
  5. Сравните этот Ref с тем, что записан в БП в регистре ПубличныеИдентификаторыСинхронизируемыхОбъектов. Если они разные — проблема в УТ (договор был перевыбран или пересоздан).

Шаг 2. Использование точки останова

Если GUID совпадают, но договор в БП все равно "слетает", переходим к отладке в БП 3.0. Поставим точку останова в модуле менеджера обмена.


// В модуле МенеджерОбменаЧерезУниверсальныйФормат
// Найдите фрагмент, где происходит поиск договора
Процедура ППО_Справочник_ДоговорыКонтрагентов_ПриЧтенииДанныхXDTO(ДанныеXDTO, КомпонентыОбмена)
    // Установите точку останова здесь
    // Проверьте значения переменных:
    // ДанныеXDTO.Владелец - правильно ли определился контрагент?
    // ДанныеXDTO.Организация - совпадает ли с организацией в БП?
КонецПроцедуры

Шаг 3. Проверка дублей контрагентов

Частая причина сбоев в Интеркампани — наличие дублей контрагентов, созданных для собственных организаций — решить проблему поможет обработка устранения дублей в двух синхронизированных базах. Проверьте, нет ли в БП двух карточек контрагентов с одинаковым ИНН, одна из которых привязана к организации "Альфа". Если обмен "подцепил" не ту карточку контрагента, он никогда не найдет на ней договор, привязанный к другой карточке, даже если GUID совпадает.

Шаг 4. Очистка кэша и регистров

Если вы исправили сопоставление вручную, но при следующем обмене все возвращается назад, попробуйте радикальный метод:

  1. Удалите записи по проблемному договору в обеих базах в регистрах ПубличныеИдентификаторыСинхронизируемыхОбъектов.
  2. Убедитесь, что номера и даты договоров в УТ и БП идентичны до символа (проверьте отсутствие лишних пробелов).
  3. Запустите синхронизацию и при появлении окна "Сопоставление данных" укажите связи вручную. После этого система создаст новые правильные записи в регистре идентификаторов.

Важные нюансы настройки

Обратите внимание на версию формата EnterpriseData (например, 1.13, 1.15). В новых версиях 1С часто обновляет состав полей поиска. Проверьте в настройках синхронизации, чтобы в обеих базах использовалась максимально близкая версия формата. Это минимизирует расхождения в логике работы общих модулей менеджера обмена.

Подводя итог, отметим, что ключ к решению проблем с договорами в универсальном формате лежит в цепочке "Организация -> Контрагент -> Договор". Только при корректном сопоставлении всех звеньев этой цепи регистрация публичных идентификаторов будет работать стабильно. Для контроля результатов обмена есть автоматическая сверка данных и выявление расхождений между УТ 11.5 и БП 3.0.

← На главную