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

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

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

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

Выясним причину автоматического проведения документов

Проанализируем архитектуру обмена через МенеджерОбменаЧерезУниверсальныйФормат (EnterpriseData):

  1. Особенности формата EnterpriseData: схема XDTO универсального формата по умолчанию не хранит признаки состояния документа, такие как Проведен или ПометкаУдаления. Формат проектировался для обмена фактами хозяйственной деятельности. Подразумевается, что если документ был выгружен из торговой базы, то хозяйственная операция состоялась и документ легитимен. Соответственно, настроить запрет проведения только на стороне базы-источника (УТ) невозможно — формат просто не содержит подобного управляющего параметра.
  2. Механизм отложенного проведения БСП: на этапе загрузки в базу-приемник документ первоначально записывается с признаком ОбменДанными.Загрузка = Истина. При этом ссылки на все загруженные документы, поддерживающие проведение, помещаются в служебную коллекцию КомпонентыОбмена.ДокументыДляОтложенногоПроведения. В самом конце транзакции синхронизации вызывается процедура ОбменДаннымиXDTOСервер.ВыполнитьОтложенноеПроведениеДокументов, которая запускает полноценное проведение с контролем остатков и формированием проводок.
  3. Нюансы обработчиков XDTO: попытка просто закомментировать строку ПолученныеДанные.Проведен = Истина; в обработчике ПриКонвертацииДанныхXDTO не всегда дает результат. Этот обработчик оперирует структурой данных XDTO. Если документ уже ранее присутствовал в базе 1С:Бухгалтерия и был проведен, при повторной перезаписи существующий объект ДанныеИБ сохранит свое состояние проведения.

Способ 1. Корректировка обработчиков в правилах конвертации (ПКО)

Рассмотрим, как правильно отключить проведение конкретного вида документов непосредственно в коде правил обмена. Переопределение логики выполняется на стороне базы-приемника (1С:Бухгалтерия предприятия).

Для гарантированного запрета проведения необходимо использовать событие ПередЗаписьюПолученныхДанных соответствующего правила конвертации объектов (ПКО). В этом событии мы явно переопределяем статус документа:


ПолученныеДанные.Проведен = Ложь;

Если ДанныеИБ <> Неопределено Тогда
    ДанныеИБ.Проведен = Ложь;
КонецЕсли;

Установка признака Ложь в структуре ПолученныеДанные и в объекте ДанныеИБ сигнализирует подсистеме обмена о том, что документ не должен включаться в список отложенного проведения.

Если требуется отключить проведение абсолютно для всех входящих документов сеанса синхронизации, разберем массовый вариант. В общем обработчике правил ПередОтложеннымЗаполнением достаточно очистить всю очередь документов, ожидающих проведения:

КомпонентыОбмена.ДокументыДляОтложенногоПроведения.Очистить();

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

Способ 2. Подключение внешних правил обмена без изменения типовой конфигурации

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

  1. Выгрузим модуль МенеджерОбменаЧерезУниверсальныйФормат во внешнюю обработку правил обмена.
  2. Внесем изменения в процедуры конвертации нужных документов или очистим таблицу отложенного проведения.
  3. В режиме «1С:Предприятие» перейдем в раздел Администрирование — Синхронизация данных — Настройки синхронизации данных.
  4. Откроем параметры нужного подключения, выберем пункт Загрузить правила конвертации и переключим тумблер с типовых правил на правила из внешнего файла, указав подготовленную обработку.

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

Способ 3. Переопределение через расширение конфигурации

Наиболее удобным и современным способом является использование механизма расширений. Это позволяет сохранить конфигурацию полностью типовой и избежать ручного обновления внешних файлов правил при каждом релизе.

Разберем реализацию: создадим расширение с назначением Адаптация, добавим в него общий модуль ОбменДаннымиXDTOСервер и перехватим процедуру проведения:


&Вместо("ВыполнитьОтложенноеПроведениеДокументов")
Процедура Расш_ВыполнитьОтложенноеПроведениеДокументов(КомпонентыОбмена)
    // Очищаем очередь документов на проведение перед запуском стандартного алгоритма
    КомпонентыОбмена.ДокументыДляОтложенногоПроведения.Очистить();
    
    // При необходимости вызываем базовую процедуру
    ПродолжитьВызов(КомпонентыОбмена);
КонецПроцедуры

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

Важные последствия отмены проведения

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

  1. Отсутствие проводок: документы, записанные без проведения, не формируют записей в регистре бухгалтерии Хозрасчетный и регистрах учета НДС. Бухгалтер должен выполнять проверку заполнения и проводить документы самостоятельно.
  2. Заполнение счетов учета: убедитесь, что в базе настроены Счета учета номенклатуры и Счета учета расчетов с контрагентами по умолчанию. В противном случае при ручном групповом проведении бухгалтеру придется заполнять аналитику вручную в каждом документе.
← На главную