Как загружать документы в 1С:Бухгалтерию 2.0 непроведенными при синхронизации с 1С:УНФ?

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

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

Проанализируем ситуацию: в более современных конфигурациях на базе БСП (например, 1С:Управление торговлей 11 или 1С:Бухгалтерия 3.0), работающих через формат EnterpriseData, соответствующий флаг вынесен прямо в пользовательский интерфейс настроек синхронизации. Однако в конфигурации 1С:Бухгалтерия предприятия 2.0 обмен реализован на классическом механизме правил конвертации данных (КД 2.x / XML), где подобный переключатель в интерфейсе отсутствует. Разберем по шагам надежные способы реализации этой задачи.

Способ 1. Корректировка правил обмена в конфигурации «Конвертация данных 2.1»

Рассмотрим основной и наиболее гибкий способ — внесение изменений в типовые правила конвертации данных. Выгрузим правила из узла обмена, загрузим их в конфигурацию Конвертация данных, редакция 2.1 и выполним точечную доработку нужных правил конвертации объектов (ПКО).

Для гарантированного сброса признака проведения недостаточно просто отключить правило конвертации свойства (ПКС) для реквизита Проведен, так как документ может быть проведен пост-обработкой или сохранить свое исходное состояние. Выполним правильную настройку:

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

// Сбрасываем признак проведения и отменяем автоматическое проведение
Объект.Проведен = Ложь;
РежимЗаписи = "Запись";

Разберем подробнее, почему используется параметр РежимЗаписи = "Запись". В обработчиках КД переменная РежимЗаписи управляет тем, с каким режимом платформа запишет объект: как обычный документ или с формированием движений. Принудительное указание режима обычной записи исключает документ из списка отложенного проведения, которое в ряде правил выполняется скопом в обработчиках конвертации после окончания загрузки XML-пакета.

Дополнительно рекомендуется проверить ПКС для реквизита Проведен в таблице свойств ПКО. В обработчике ПередВыгрузкой или ПриВыгрузке этого свойства можно принудительно передавать значение Ложь:

Значение = Ложь;

После сохранения правил выгрузим их в XML-файл и обновим правила конвертации в настройках синхронизации в 1С:УНФ и 1С:Бухгалтерии 2.0.

Способ 2. Использование подписки на событие в конфигурации приемника

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

Разберем по шагам создание подписки на событие:

  1. В дереве метаданных конфигурации 1С:Бухгалтерия 2.0 перейдем в ветку Общие -> Подписки на события и добавим новую подписку.
  2. В поле Источник выберем типы документов, которые загружаются из 1С:УНФ (или используем общий тип ДокументОбъект).
  3. В поле Событие укажем ПередЗаписью.
  4. Создадим процедуру-обработчик в общем серверном модуле и добавим условие проверки режима обмена:

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

КонецПроцедуры

Посмотрим на пример работы этого кода: свойство ОбменДанными.Загрузка = Истина выставляется платформой автоматически при чтении данных из внешнего источника через механизмы обмена. Таким образом, интерактивная работа пользователей в базе останется прежней, а любые документы, поступающие через синхронизацию, будут гарантированно записываться непроведенными.

Важные особенности и ограничения

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

  1. Заполнение счетов учета и аналитики: при записи с флагом ОбменДанными.Загрузка = Истина стандартные проверки модулей объектов отключаются. Если в 1С:УНФ не велся бухгалтерский план счетов, при последующем ручном проведении документов в 1С:Бухгалтерии 2.0 могут возникнуть ошибки незаполненных субконто или счетов затрат, которые пользователю потребуется дозаполнить вручную.
  2. Двусторонний обмен: если обмен настроен в обе стороны, изменение документа в 1С:Бухгалтерии может зарегистрировать его к обратной выгрузке. В этом случае непроведенное состояние может передаться обратно в 1С:УНФ и отменить проведение исходного документа. Чтобы этого избежать, настройте правила регистрации объектов (ПРО) или ограничьте состав выгружаемых реквизитов.
← На главную