Как при синхронизации УТ 11.5 и БП 3.0 автоматически привязывать документы к одному основному договору?

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

При настройке обмена данными между Управлением торговлей 11.5 и Бухгалтерией предприятия 3.0 пользователи часто сталкиваются с проблемой избыточного дублирования договоров — есть универсальный обмен данными для 1С:УТ и БП. В УТ 11 работа обычно строится на базе Соглашений, в то время как в БП 3.0 Договор является обязательным аналитическим разрезом для ведения бухгалтерского учета, расчетов с контрагентами и корректного формирования актов сверки. Если в УТ договоры не ведутся в явном виде, система при обмене может создавать новые элементы в БП, что приводит к «замусориванию» справочника и неверному распределению взаиморасчетов.

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

Анализ механизмов обмена Enterprise Data

Разберем, как именно происходит передача данных. Современный обмен между УТ и БП базируется на формате Enterprise Data. В отличие от старых правил обмена (XML), поиск объектов здесь осуществляется по Уникальному Идентификатору (UID) или по ключевым полям поиска, которые жестко прописаны в коде конфигурации. Если документ из УТ приходит без ссылки на договор, БП 3.0 пытается определить договор самостоятельно. Выясним причину появления дублей: часто это происходит из-за ошибок в логике поиска или «битых ссылок». В некоторых ситуациях может потребоваться исправление правил обмена EnterpriseData для справочников для корректной идентификации объектов — для этого подойдёт комплект правил EnterpriseData для синхронизации 1С.

Способ 1: Использование функционала «Основной договор» в БП 3.0

Это самый простой способ, который можно отнести к типовым средствам. В конфигурации 1С:Бухгалтерия предприятия у каждого контрагента предусмотрена возможность назначить Основной договор. Проанализируем алгоритм работы загрузки: если в пакете данных из УТ информация о договоре отсутствует или является пустой, типовой код БП проверяет наличие установленного основного договора у данного контрагента.

Для реализации этого подхода выполним следующие шаги:

  1. Перейдем в карточку контрагента в БП 3.0.
  2. В разделе Договоры выберем нужный договор и нажмем кнопку Использовать как основной.
  3. Важно убедиться, что вид договора (например, С покупателем) соответствует виду операции в загружаемом документе.

Если это условие соблюдено, система с высокой долей вероятности подставит этот договор в загруженный документ автоматически, если иное не указано в правилах сопоставления.

Способ 2: Ручное сопоставление объектов при синхронизации

Посмотрим на ситуацию, когда договоры уже начали дублироваться. В интерфейсе синхронизации данных есть мощный инструмент — Сопоставление данных. Рассмотрим, как им воспользоваться для «склейки» объектов:

  1. Откроем окно Синхронизация данных и перейдем в пункт Состав отправляемых данных или Результаты синхронизации.
  2. Найдем раздел Сопоставление данных для справочника Договоры.
  3. Выберем несколько договоров, пришедших из УТ (или пустые значения), и принудительно укажем им в соответствие один существующий «правильный» договор в БП.

После такого сопоставления 1С запомнит связь между внутренними идентификаторами. При последующих обменах документы, ссылающиеся на эти объекты в УТ, будут автоматически направляться на выбранный договор в БП. Для контроля корректности данных после переноса полезно провести сверку документов, выгруженных из БП в УТ.

Способ 3: Настройка параметров в УТ 11 для управления обменом

Проанализируем возможности на стороне источника — УТ 11.5. Даже если вы не используете договоры для учета, их можно включить функционально только ради целей интеграции. В Соглашении с клиентом в УТ есть возможность указать договор, который будет использоваться для печатных форм. Проверьте, заполнен ли этот реквизит. Если в соглашении указан конкретный договор, он будет передаваться в составе сообщения Enterprise Data, и БП 3.0 подставит именно его, не создавая дублей.

Способ 4: Использование расширения конфигурации (Техническое решение)

Если типовых средств недостаточно, и вы хотите полностью автоматизировать процесс без изменения основной конфигурации, наиболее эффективным методом будет создание небольшого расширения для БП 3.0. Разберем программный подход. Нам необходимо перехватить обработку загрузки данных через механизм Enterprise Data.

Воспользуемся обработчиком ПриОбработкеДанныхЗагрузки. Мы можем написать алгоритм, который будет проверять заполнение договора и, если он пуст, подставлять основной договор контрагента. Рассмотрим пример кода, который можно разместить в модуле расширения:


&После("ПриОбработкеДанныхЗагрузки")
Процедура Расш_ПриОбработкеДанныхЗагрузки(ДанныеИксДТО, ТипОбъекта, Объект)
    
    // Проверяем, является ли загружаемый объект документом, имеющим реквизит Договор
    МетаданныеОбъекта = Объект.Метаданные();
    Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
        
        Если ЕстьРеквизитОбъекта("Договор", Объект) И ЗначениеЗаполнено(Объект.Контрагент) Тогда
            
            Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
                // Пытаемся получить основной договор контрагента
                ОсновнойДоговор = Объект.Контрагент.ОсновнойДоговор;
                
                Если ЗначениеЗаполнено(ОсновнойДоговор) 
                   И ОсновнойДоговор.ВидДоговора = Объект.Договор.ВидДоговора Тогда
                    Объект.Договор = ОсновнойДоговор;
                КонецЕсли;
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

Этот код позволяет гибко управлять логикой подстановки. Мы проверяем наличие реквизита Договор, наличие заполненного Контрагента и, если договор в данных обмена не пришел, принудительно устанавливаем ОсновнойДоговор из карточки контрагента в БП.

Способ 5: Групповая обработка и поиск дублей (Пост-обработка)

Если обмен уже завершен и в базе БП 3.0 создано множество лишних договоров, выясним, как быстро привести базу в порядок. Для комплексного решения задачи пригодится универсальная очистка базы, а для точечной работы воспользуемся встроенными и специализированными инструментами:

  1. Поиск и удаление дублей: Находится в разделе Администрирование — Обслуживание — Корректировка данных. Если проблема возникла из-за дублирования партнеров, рекомендуем выполнить поиск и устранение дублей контрагентов по ИНН+КПП. Чтобы исключить появление таких ошибок в будущем, можно установить жесткий запрет дублей контрагентов.
  2. Групповое изменение реквизитов: Если нужно массово привязать документы к определенному договору, используйте встроенную обработку или специализированное решение на замену договора в документах Бухгалтерии 3.0. Это позволит быстро перепривязать документы к правильному объекту, даже если в базе произошла путаница с организациями или партнерами.

Подведем итог: для предотвращения появления дублей договоров при обмене УТ 11.5 -> БП 3.0 в первую очередь настройте Основной договор в карточке контрагента в бухгалтерии и проверьте настройки Соглашений в торговле. Если автоматизация должна быть абсолютной, используйте механизм расширений для перехвата логики загрузки Enterprise Data.

← На главную