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

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

При настройке типового обмена данными между конфигурациями «1С:Управление торговлей 11» и «1С:Бухгалтерия предприятия 3.0» часто возникает задача загружать первичные документы (поступления, реализации, счета-фактуры) исключительно в непроведенном виде, чтобы бухгалтер мог проверить корректность счетов учета, договоров и аналитики перед проведением. Однако в современных версиях программ документы по умолчанию загружаются сразу проведенными. Разберем, почему так происходит и как настроить желаемое поведение, не снимая базы с поддержки.

Архитектура обмена EnterpriseData и причины такого поведения

Проанализируем работу механизма синхронизации. Обмен между УТ 11 и БП 3.0 функционирует на базе универсального формата EnterpriseData (библиотека стандартных подсистем и КД 3.0). В отличие от старых обменов по правилам конвертации КД 2.0, здесь действуют следующие принципы:

  1. Передача статуса документа из источника: Если в базе-источнике (УТ 11) документ проведен, то в выгружаемом XML-пакете свойство Проведен получает значение true. База-приемник (БП 3.0) при загрузке считывает этот признак и пытается выполнить запись с режимом проведения.
  2. Отсутствие пользовательского переключателя: В пользовательском интерфейсе настроек синхронизации БСП разработчики «1С» исключили опцию «Загружать документы непроведенными». Типовыми настройками интерфейса изменить это поведение нельзя.
  3. Особенность отложенного проведения: Режим отложенного проведения при загрузке данных лишь временно записывает документ, но затем фоновое регламентное задание автоматически пытается его провести.

Рассмотрим рабочие способы решения задачи с сохранением конфигураций на полной поддержке с помощью механизма расширений (.cfe).

Способ 1. Использование подписки на событие в расширении БП 3.0 (рекомендуемый)

Разберем наиболее надежный способ перехвата входящих документов на стороне принимающей базы («1С:Бухгалтерия предприятия 3.0»). Для этого создадим расширение конфигурации и добавим в него подписку на событие ПередЗаписью для требуемых документов.

Пошаговый алгоритм действий:

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

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

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

Способ 2. Переопределение модуля обмена в расширении

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

В расширении для БП 3.0 или УТ 11 мы можем применить аннотацию &После или &Вместо к процедурам конвертации данных:

  1. На стороне БП 3.0: В процедуре загрузки свойств документа принудительно переопределить реквизит Проведен в значение Ложь перед фиксацией объекта в базе.
  2. На стороне УТ 11: В процедуре выгрузки объекта формата переопределить заполнение XML-узла, чтобы для документов всегда выгружалось значение <Проведен>false</Проведен>. Тогда база-приемник получит изначально непроведенный документ и запишет его без проведения.

Способ 3. Отключение регламентного задания отложенного проведения

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

  1. В БП 3.0 в настройках синхронизации включим опцию Отложенное проведение документов. В этом случае при загрузке пакет данных не проводит документы мгновенно.
  2. Перейдем в раздел Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
  3. Найдем регламентное задание Отложенное проведение документов и отключим его расписание (снимем флажок активности).

В результате документы будут загружаться и оставаться записанными, а автоматическая попытка их проведения фоновым заданием выполняться не будет. Бухгалтер сможет проводить проверенные документы вручную из списка или с помощью типовой формы отложенного проведения.

← На главную