При переносе данных между различными конфигурациями (например, при конвертации документа Реализация (акты, накладные) в Поступление (акты, накладные) для конфигурации 1С:Бухгалтерия 3.0) разработчики часто сталкиваются с тем, что документ-приемник после загрузки автоматически становится проведенным. В большинстве учетных сценариев требуется противоположное поведение: загрузить документ только как записанный (черновик), чтобы ответственный бухгалтер мог проверить заполнение реквизитов, счетов учета и провести его вручную.
Разберем подробно причины такого поведения платформы и правила конвертации данных, а также рассмотрим все надежные способы решения данной задачи в конфигурации Конвертация данных 2.0 (КД 2.0).
Проанализируем основные факторы, влияющие на статус проведения при обмене через формат XML:
Проведен, то статус проведения напрямую копируется из документа-источника. Если исходная накладная была проведена, признак проведения передается в файл выгрузки со значением Истина.Универсальный обмен данными в формате XML на вкладке загрузки может быть активирован режим записи с проведением документов по умолчанию.Самый простой и наглядный способ — скорректировать логику выгрузки самого свойства Проведен в правилах конвертации.
Разберем по шагам, как это настроить в конфигурации Конвертация данных:
Проведен.
Значение = Ложь;
В этом случае при выгрузке в файл XML значение реквизита Проведен всегда будет зафиксировано как false.
В объектной модели платформы 1С реквизит документа Проведен является системным и доступен только для чтения в программном коде. Статус проведения объекта изменяется платформой при вызове метода записи с соответствующим режимом. Если документ уже существовал в целевой информационной базе и ранее был проведен, простая установка флага через ПКС может привести к некорректной ситуации, когда реквизит изменится, а движения по регистрам останутся в базе.
Чтобы гарантировать корректную отмену проведения и очистку движений документа в базе-приемнике, настроим обработчик события «Перед записью объекта» в ПКО документа:
РежимЗаписи = "Запись";
РежимЗаписи = "ОтменаПроведения";
Использование параметра РежимЗаписи является наиболее надежным архитектурным решением в КД 2.0, так как платформа берет на себя все штатные механизмы очистки движений и блокировок.
Если правила обмена уже сформированы и выгружены, а возможность изменить их в конфигурации Конвертация данных отсутствует, можно повлиять на процесс непосредственно в момент загрузки данных.
Посмотрим на порядок действий при ручной загрузке через обработку Универсальный обмен данными в формате XML:
Такой подход позволяет загрузить документы в исходном непроведенном виде без необходимости повторной выгрузки правил обмена.