Как отследить загрузку старых документов в 1С:Бухгалтерию при синхронизации с 1С:УТ?

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

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

Разберем подробно, какие штатные средства и варианты доработок позволяют решить эту задачу.

Вариант 1. Использование механизма «Дата запрета загрузки данных»

Проанализируем штатные возможности Библиотеки стандартных подсистем (БСП). Если цель состоит в том, чтобы полностью исключить несанкционированное изменение данных за закрытые периоды со стороны обмена, наилучшим решением является установка даты запрета загрузки.

Рассмотрим порядок настройки:

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

Вариант 2. Контроль через подсистему «Версионирование объектов»

Если блокировать загрузку нельзя, но необходимо получать реестр измененных задним числом документов, используем штатное версионирование объектов.

Разберем алгоритм работы:

  1. Включим версионирование для критически важных документов (Документ.РеализацияТоваровУслуг, Документ.ПоступлениеТоваровУслуг и т.д.) в режиме При записи.
  2. При каждой загрузке из обмена в регистре сведений ВерсииОбъектов будет создаваться новая запись с текущей датой и временем создания версии.
  3. Построим отчет или напишем запрос к регистру сведений ВерсииОбъектов, где соединим таблицу версий с таблицей самого документа. Условие отбора: дата создания версии — сегодня (или время сеанса обмена), а реквизит Дата документа меньше начала текущего месяца. Отсортировав результат по возрастанию даты документа, сразу получим самый старый измененный объект.

Вариант 3. Программный перехват в подписке на событие (Расширение)

Для автоматического уведомления бухгалтеров или фиксации информации в дополнительных реквизитах создадим расширение конфигурации с подпиской на событие. Это не потребует снятия конфигурации с поддержки.

Создадим подписку на событие ПриЗаписи для интересующих документов и определим признак загрузки данных через свойство ОбменДанными.Загрузка.

Посмотрим на пример кода обработчика в модуле расширения:


Процедура Расш_КонтрольЗагрузкиСтарыхДокументовПриЗаписи(Источник, Отказ) Экспорт
    
    // Проверяем, что запись выполняется в рамках сеанса синхронизации
    Если Не Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Определяем границу контроля (например, начало текущего месяца)
    ГраницаКонтроля = НачалоМесяца(ТекущаяДатаСеанса());
    
    Если Источник.Дата < ГраницаКонтроля Тогда
        // Зафиксируем информацию в журнале регистрации или специальном регистре
        ТекстСообщения = СтрШаблон(
            "Загружен документ из прошлого периода: %1 от %2. Автор изменений в источнике требует проверки.",
            Источник.Ссылка,
            Формат(Источник.Дата, "ДФ=dd.MM.yyyy")
        );
        
        ЗаписьЖурналаРегистрации(
            "СинхронизацияДанных.СтарыеДокументы",
            УровеньЖурналаРегистрации.Предупреждение,
            Источник.Метаданные(),
            Источник.Ссылка,
            ТекстСообщения
        );
    КонецЕсли;

КонецПроцедуры

Такой обработчик позволяет не только зафиксировать факт загрузки старого документа, но и, например, заполнить дополнительный реквизит («Требует проверки бухгалтером») или отправить уведомление ответственному бухгалтеру по почте.

Особенности последовательностей и закрытия месяца в БП 3.0

Выясним, почему стандартный механизм последовательностей документов не всегда подходит для поиска старых документов в современных версиях конфигурации.

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

Когда при обмене перезаписывается проведенный документ за прошлый период, программа сбрасывает актуальность выполненных регламентных операций, начиная с месяца этого документа. Открыв обработку Закрытие месяца, бухгалтер сразу видит самый ранний месяц, окрашенный в зеленый или серый цвет со статусом необходимости перепроведения документов и повторного выполнения операций.

← На главную