Как сделать так, чтобы документы переносились непроведенными в Конвертации данных 2.0?

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

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

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

Почему документы переносятся проведенными?

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

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

Способ 1. Настройка ПКС для реквизита «Проведен»

Самый простой и наглядный способ — скорректировать логику выгрузки самого свойства Проведен в правилах конвертации.

Разберем по шагам, как это настроить в конфигурации Конвертация данных:

  1. Откроем нужное Правило конвертации объектов (ПКО), отвечающее за перенос документа.
  2. Найдем в таблице правил конвертации свойств строку для реквизита Проведен.
  3. Откроем настройки этого ПКС и в обработчике события «Перед выгрузкой» укажем явное переопределение выгружаемого значения: Значение = Ложь;
  4. Либо, если статус документа не должен зависеть от источника, можно включить флаг «Не переносить» (или удалить данное ПКС из состава правила), чтобы свойство не попадало в XML-выгрузку.

В этом случае при выгрузке в файл XML значение реквизита Проведен всегда будет зафиксировано как false.

Способ 2. Управление режимом записи в обработчике ПКО «Перед записью объекта» (Рекомендуемый)

В объектной модели платформы 1С реквизит документа Проведен является системным и доступен только для чтения в программном коде. Статус проведения объекта изменяется платформой при вызове метода записи с соответствующим режимом. Если документ уже существовал в целевой информационной базе и ранее был проведен, простая установка флага через ПКС может привести к некорректной ситуации, когда реквизит изменится, а движения по регистрам останутся в базе.

Чтобы гарантировать корректную отмену проведения и очистку движений документа в базе-приемнике, настроим обработчик события «Перед записью объекта» в ПКО документа:

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

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

Способ 3. Изменение параметров загрузки без редактирования правил

Если правила обмена уже сформированы и выгружены, а возможность изменить их в конфигурации Конвертация данных отсутствует, можно повлиять на процесс непосредственно в момент загрузки данных.

Посмотрим на порядок действий при ручной загрузке через обработку Универсальный обмен данными в формате XML:

  1. Откроем обработку в базе-приемнике и перейдем на вкладку «Загрузка данных».
  2. В блоке параметров режима загрузки найдем настройку режима записи документов.
  3. Переключим значение с варианта «Записывать и проводить» на вариант «Только записывать» (или «Не проводить»).
  4. Выполним загрузку файла обмена.

Такой подход позволяет загрузить документы в исходном непроведенном виде без необходимости повторной выгрузки правил обмена.

← На главную