Почему исчезают ручные проводки при повторной синхронизации и как это исправить?

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

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

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

Проанализируем логику работы платформы «1С:Предприятие» при проведении и перезаписи объектов:

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

Основная причина: разделение дат запрета изменения и загрузки

Часто пользователи уверены, что данные защищены, поскольку в базе установлена общая дата запрета редактирования. Однако для обменов данными этого недостаточно. Разберем разницу между двумя механизмами:

  1. Дата запрета изменения данных: контролирует исключительно интерактивные действия пользователей при работе в программе. Она не всегда распространяется на регламентные задания или служебные фоновые процессы обмена.
  2. Дата запрета загрузки данных: специальный механизм подсистемы синхронизации данных. Он проверяет входящие пакеты и блокирует перезапись объектов за закрытый период непосредственно при выполнении обмена, даже если загрузка выполняется с полными правами администратора.

Пошаговое решение: настройка даты запрета загрузки

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

  1. Перейдем в раздел Администрирование.
  2. Выберем пункт Синхронизация данных.
  3. Откроем подраздел Даты запрета загрузки (или соответствующую гиперссылку в окне настроек синхронизации).
  4. Включим опцию запрета загрузки и установим единую дату или настроим индивидуальные даты для каждого узла обмена.

После установки этой даты любые документы, датированные ранее указанного числа, будут игнорироваться при приеме пакетов из базы-источника, что исключит их повторную перезапись и перепроведение.

Альтернативные способы защиты и методологические рекомендации

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

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

Способы восстановления утерянных движений

Если движения уже исчезли, восстановить их можно следующими путями:

  1. Через историю версий: если в базе включено версионирование объектов (раздел Администрирование → Общие настройки → История изменений), откроем форму документа, перейдем по кнопке История изменений, найдем версию до загрузки обмена и восстановим скорректированные данные.
  2. Снятие ручной корректировки: если правка была типовой, снимем флаг Ручная корректировка в форме проводок и нажмем Записать и закрыть. Документ пересчитает проводки по типовому алгоритму конфигурации.
← На главную