При работе с синхронизацией данных между конфигурациями Управление торговлей 11 и Бухгалтерия предприятия 3.0 часто возникает сложная коллизия. Документ Корректировка реализации, созданный текущей датой, исправляет данные прошлого года. Если в программе 1С:Бухгалтерия не установлен специальный флаг, блокирующий корректировки прошлых периодов, система при обмене может сформировать проводки в уже закрытом и сданном году, несмотря на установленную общую дату запрета редактирования. Разберем подробно, почему это происходит и как исправить последствия без перепроведения всего года.
Проанализируем ситуацию с технической точки зрения. В системе 1С:Предприятие 8 существует два механизма защиты данных: Дата запрета редактирования (для пользователей) и Дата запрета загрузки данных (для обменов). Однако в случае с документом Корректировка реализации возникает нюанс:
Хозрасчетный.Корректировка реализации для БП 3.0 есть реквизит УчетПрошлогоПериодаЗакрытДляКорректировки (на форме он отображается как флаг «Бухгалтерский учет прошлого года закрыт для корректировки»). Если в УТ 11 этот флаг отсутствует или не передан, в БП он по умолчанию принимает значение Ложь, что заставляет документ делать сторнирующие проводки датой 31.12 прошлого года.Если нам нужно убрать ошибочные движения в закрытом периоде, не открывая его для редактирования и не запуская процедуру перепроведения месяца, мы можем воспользоваться программным методом. Рассмотрим, как это сделать с помощью внешней обработки.
Для удаления записей регистра бухгалтерии нам необходимо использовать свойство ОбменДанными.Загрузка = Истина. Это позволит обойти проверки даты запрета. Проанализируем пример кода:
// Определим ссылку на проблемный документ
ДокументОбъект = ПроблемнаяСсылка.ПолучитьОбъект();
// Очищаем движения по регистру бухгалтерии
НаборХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборХозрасчетный.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
// Устанавливаем режим загрузки, чтобы обойти дату запрета
НаборХозрасчетный.ОбменДанными.Загрузка = Истина;
НаборХозрасчетный.Записать(); // Записываем пустой набор, фактически удаляя движения
// Чтобы документ не перепровелся случайно, пометим его на удаление
ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.ПометкаУдаления = Истина;
ДокументОбъект.Записать();
Важный момент: После выполнения этого кода проводки в 2019 году исчезнут, а сам документ в 2020 году будет помечен на удаление. Это самый «чистый» способ исправления с точки зрения системы.
Если вы не хотите использовать программный код, рассмотрим по шагам ручной алгоритм исправления ситуации в пользовательском интерфейсе:
Корректировка реализации и отмените его проведение или пометьте на удаление.ИзмененияРегистрацииПериодов новую точку актуальности, и прошлый год больше не будет требовать внимания.Чтобы ситуация не повторилась, нам нужно сделать так, чтобы при загрузке из УТ 11 флаг УчетПрошлогоПериодаЗакрытДляКорректировки автоматически принимал значение Истина. Рассмотрим, как реализовать это через расширение конфигурации в БП 3.0.
Создадим расширение и добавим в него обработчик события ПриЗагрузкеДанныхВИнформационнуюБазу (или используем подписку на событие ПередЗаписью для документа). Логика должна быть следующей:
&После("ПередЗаписью")
Процедура Расш_ПередЗаписьюКорректировки(Отказ, РежимЗаписи, РежимПроведения)
// Проверяем, что запись происходит в режиме обмена
Если ЭтотОбъект.ОбменДанными.Загрузка Тогда
// Если дата документа и дата корректируемого периода в разных годах
Если Год(ЭтотОбъект.Дата) > Год(ЭтотОбъект.ДокументОснование.Дата) Тогда
// Устанавливаем признак, что отчетность прошлого года подписана
ЭтотОбъект.УчетПрошлогоПериодаЗакрытДляКорректировки = Истина;
// В этом режиме проводки будут сделаны текущим периодом (2020),
// а не концом прошлого года (2019).
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Этот код гарантирует, что даже если в УТ 11 пользователь не знает о бухгалтерских нюансах, система БП 3.0 принудительно выставит правильный режим отражения корректировки, который не затронет закрытый баланс прошлого года.
Проанализируем дополнительные настройки, которые помогут избежать подобных проблем в будущем:
Используя предложенные методы, мы можем эффективно управлять качеством данных при обмене между конфигурациями 1С и защитить закрытые периоды от непреднамеренных изменений.