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