Как настроить однократную выгрузку документов из УТ 11 в БП 3.0 без повторного обновления при их изменении?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

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

В штатном режиме подсистема обмена Библиотеки Стандартных Подсистем (БСП) при любом перепроведении или изменении объекта в УТ снова регистрирует его к выгрузке и перезаписывает в БП. Рассмотрим, как можно решить эту задачу архитектурно и программно.

Способ 1. Отмена перезаписи на стороне БП в обработчиках конвертации (КД 3 / EnterpriseData)

Наиболее точечным техническим решением является доработка правил конвертации данных на базе формата EnterpriseData. Нам необходимо перехватить событие перед записью загружаемого объекта в информационной базе-приемнике (БП 3.0).

Разберем алгоритм работы: если объект уже существует в информационной базе БП (то есть ссылка ДанныеИБ определена), мы отменяем изменение существующего документа, устанавливая ПолученныеДанные = Неопределено.

Код добавляется в обработчик модуля обмена *_Получение_ПередЗаписьюПолученныхДанных:


Если НЕ ДанныеИБ = Неопределено Тогда 
    // Не замещаем существующие объекты в приемнике при загрузке, 
    // а только создаем новые и заполняем их
    ПолученныеДанные = Неопределено;
КонецЕсли;

Разберем по шагам, что происходит при таком подходе:

  1. При первичной выгрузке документа из УТ в БП переменная ДанныеИБ равна Неопределено, так как документ в базе БП еще не создан. Документ успешно записывается.
  2. При повторной выгрузке измененного документа система поиска БП находит существующую ссылку и помещает ее в ДанныеИБ.
  3. Условие срабатывает, и сброс переменной ПолученныеДанные предотвращает перезапись документа.

Важное примечание: логику перехвата обмена не обязательно встраивать напрямую в типовую конфигурацию. Метод модуля МенеджерОбменаЧерезУниверсальныйФормат можно переопределить с помощью расширения конфигурации, что позволит оставить типовую конфигурацию на неснятой поддержке.

Способ 2. Использование дополнительных сведений и доработка Правил Регистрации Объектов (ПРО) в УТ

Если блокировать запись только на стороне приемника (БП), измененные документы в УТ продолжат постоянно регистрироваться на узле обмена. Это создает избыточную нагрузку на сеть и увеличивает размер файлов обмена XML/JSON. Чтобы исключить повторную выгрузку на самом источнике, разберем вариант с доработкой регистрации объектов.

  1. В УТ 11 добавляем дополнительное свойство (или реквизит) для документов: Выгружен В БП (тип Булево).
  2. Настраиваем правила регистрации объектов (ПРО) в Конвертации Данных таким образом, чтобы документы с установленным флагом Выгружен В БП = Истина повторно не попадали в план обмена при их изменении.
  3. Установку флага Выгружен В БП рекомендуется выполнять не в момент формирования файла выгрузки, а при обработке входящей квитанции от БП (подтверждение получения сообщения обмена). Это гарантирует, что документ не потеряется, если сеанс обмена завершится с ошибкой.

Способ 3. Штатные и административные механизмы контроля

Перед тем как вносить изменения в программный код, проанализируем штатные возможности платформы и БСП, которые помогают избежать постоянной перезаписи данных:

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

Риски и технические особенности решения

При реализации однократной выгрузки необходимо учитывать следующие риски рассинхронизации учета:

Расхождение данных: Если менеджер изменит количество, цену или ставку НДС в УТ, а в БП останутся старые данные, это приведет к искажению налоговой отчетности (в частности, деклараций по НДС и налогу на прибыль). Ответственность за сверку данных в этом случае полностью ложится на пользователей.

Обновление связанных справочников: Блокировка перезаписи самого документа не предотвращает автоматическое обновление связанных справочников. Если менеджер изменит КПП или наименование контрагента в УТ, эти реквизиты обновятся в БП при очередном обмене, так как правила конвертации справочников работают независимо от документов.

← На главную