Почему в подчиненном узле РИБ исчезли документы «Лист кассовой книги» и как их вернуть?

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

В распределенных информационных базах (РИБ) иногда случаются ситуации, которые на первый взгляд кажутся мистическими: документы, которые годами находились в подчиненном узле, внезапно исчезают после очередного сеанса синхронизации. В конфигурации 1С:Розница 2.3 такая проблема часто затрагивает специфический объект — Документ.ЛистКассовойКниги. Давайте вместе разберем, почему это происходит, как работает механизм миграции и какими способами можно восстановить данные.

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

Для начала проанализируем архитектуру решения. В отличие от конфигурации «1С:Бухгалтерия предприятия», где кассовая книга формируется как отчет «на лету», в 1С:Розница разработчики реализовали Лист кассовой книги как полноценный документ. Рассмотрим, к чему это приводит:

Выясним причину исчезновения. Если ночью фоновое задание по обмену данными удалило документы в филиале, это означает только одно: с точки зрения Центральной Базы (ЦБ) эти документы больше не должны находиться в этом узле. Система РИБ при синхронизации отправила команду УдалениеОбъекта.

Разберем механизмы «исчезновения» документов

Рассмотрим подробнее, какие события могут спровоцировать массовое удаление документов Лист кассовой книги из подчиненного узла:

  1. Изменение реквизита «Магазин» или «Организация» в ЦБ: Если в центральной базе программно или вручную был изменен или очищен реквизит Магазин в документах, механизм РИБ мгновенно реагирует. Как только объект перестает соответствовать фильтру узла, он регистрируется «на удаление» для этого узла. При следующем обмене филиал получает команду очистки.
  2. Изменение настроек фильтрации самого узла: Проанализируем настройки синхронизации в ЦБ. Если кто-то изменил дату начала выгрузки документов или список доступных магазинов для конкретного узла, система автоматически «вычистит» всё, что теперь не попадает в условия.
  3. Технический сбой при обновлении: Иногда после обновления конфигурации отрабатывают обработчики обновления, которые могут некорректно пересчитать принадлежность объектов к магазинам.

Заметим важный симптом: если после исчезновения старых листов новые документы начали создаваться с номера «1», это подтверждает, что база филиала теперь считает себя абсолютно «чистой» по данному виду учета, так как не видит в локальных таблицах предыдущих записей для анализа нумерации.

Способ 1: Восстановление через регистрацию изменений (Штатный метод)

Если документы в Центральной Базе сохранились, их можно принудительно «вернуть» в филиал. Рассмотрим, как это сделать правильно. Посмотрим на алгоритм действий:

Во-первых, необходимо убедиться, что в документах в ЦБ заполнен правильный Магазин. Если реквизит пуст, регистрация не поможет — фильтр снова отсечет объект.

Во-вторых, воспользуемся обработкой «Регистрация изменений для обмена данными»:

  1. Выберем наш план обмена (обычно «По магазинам»).
  2. Найдем в списке объектов Лист кассовой книги.
  3. Нажмем правой кнопкой мыши и выберем пункт «Зарегистрировать изменения всех объектов этого типа». Мы также можем выбрать конкретный период, чтобы не нагружать базу лишними данными.

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

Способ 2: Использование универсальной выгрузки XML

Бывают ситуации, когда штатная регистрация не срабатывает из-за сложных правил конвертации или поврежденных фильтров. В этом случае разберем по шагам метод прямого переноса:

  1. В Центральной Базе откроем обработку «Выгрузка загрузка данных XML».
  2. Выберем период и тип объекта ДокументОбъект.ЛистКассовойКниги.
  3. Настроим отбор по нужному магазину, чтобы не выгрузить лишнего.
  4. Выгрузим данные в файл.
  5. В подчиненном узле (филиале) воспользуемся этой же обработкой на вкладке «Загрузка» и выберем полученный файл.

Важный момент: При загрузке через XML в РИБ документы могут снова исчезнуть при следующем обмене, если причина (неверный фильтр в ЦБ) не была устранена. Поэтому данный метод лучше использовать как экстренный, предварительно проверив настройки планов обмена.

Программный анализ регистрации изменений

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


ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелСсылка, НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
    Данные = ВыборкаИзменений.Получить();
    Если ТипЗнч(Данные) = Тип("УдалениеОбъекта") Тогда
        Сообщить("Объект типа " + Данные.ОбъектМетаданных().Имя + " будет удален в узле!");
    КонецЕсли;
КонецЦикла;

Используя этот подход, мы можем заранее увидеть, что система готовит «сюрприз» для филиала, и остановить обмен до выяснения причин.

Профилактика и выводы

Подводя итог, проанализируем ситуацию: «чудес» в 1С не бывает. Исчезновение документов — это всегда результат работы алгоритмов синхронизации. Чтобы избежать подобного в будущем, рекомендуем:

Таким образом, мы выяснили, что восстановление данных возможно как штатными средствами регистрации изменений, так и через внешние инструменты выгрузки. Главное — устранить первопричину в Центральной Базе, чтобы избежать повторного инцидента.

← На главную