Как безопасно изменить дату начала выгрузки документов в 1С и избежать их удаления

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

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

Механизм «вымывания» данных и логика работы БСП

В современных конфигурациях 1С реализован механизм контроля соответствия данных настроенным фильтрам. Когда мы устанавливаем дату начала выгрузки, мы создаем фильтр. Если документ уже был передан в базу-приемник, а затем мы меняем дату начала обмена на более позднюю, система может расценить это как ситуацию, в которой «объект перестал соответствовать условиям отбора».

Рассмотрим, как это работает на практике. В типовых правилах синхронизации при изменении настроек фильтрации (в том числе даты) система может инициировать регистрацию удаления для объектов, которые ранее входили в обмен, а теперь — нет. Это делается для поддержания идентичности данных в двух базах: если документ больше не должен «участвовать» в обмене, он должен быть удален из приемника, чтобы не искажать отчетность. Однако важно понимать, что это происходит не магическим образом, а через таблицу РегистрацияИзменений (планы обмена).

Влияние способа первоначального переноса данных

Проанализируем ситуацию, когда данные изначально были перенесены не через штатный механизм синхронизации, а с помощью обработки Универсальный обмен данными в формате XML. Это ключевой момент. В этом случае:

  1. В таблицах регистрации изменений плана обмена (RegisterRecords) записей об этих документах нет.
  2. План обмена «не знает», что эти документы уже существуют в базе-приемнике.
  3. При первом запуске синхронизации после сдвига даты система не будет пытаться найти и удалить старые документы, так как у нее нет истории их миграции в рамках данного узла обмена.

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

Различия между РИБ и универсальной синхронизацией

Выясним причину, почему в одних случаях документы удаляются физически, а в других — только помечаются на удаление. Нужно четко разделять два технологических подхода:

  1. Распределенные информационные базы (РИБ): Здесь фильтрация по дате или иному реквизиту работает максимально жестко. Если объект выходит за рамки миграции, он физически удаляется из подчиненного узла. Это штатное поведение для обеспечения целостности распределенной системы.
  2. Синхронизация данных (между разными конфигурациями, например, БП и УХ): В этом сценарии чаще всего происходит именно пометка на удаление. Платформа посылает объект с признаком DeletionMark = Истина. Это дает администратору шанс восстановить данные, если настройки были изменены ошибочно.

Как гарантированно защитить данные: Дата запрета загрузки

Самым надежным способом защиты документов в базе-приемнике является использование механизма «Даты запрета загрузки данных». Рассмотрим алгоритм действий:

  1. В базе-приемнике (например, Управление холдингом) перейдем в настройки прав доступа или администрирование.
  2. Установим дату запрета загрузки данных для узла обмена (или для всех пользователей), соответствующую последнему дню «старого» периода (например, 31.12.2018).
  3. После этого, даже если база-источник отправит команду на удаление или изменение документов за 2011–2018 годы, механизм загрузки в приемнике просто проигнорирует эти данные, выдав предупреждение в журнале регистрации.

Контроль состава отправляемых данных

Перед тем как выполнить первый обмен после изменения даты, проанализируем состав накопленных изменений. Для этого воспользуемся стандартной обработкой Регистрация изменений для обмена. Выполним следующие шаги:

  1. Откроем настройки синхронизации и выберем пункт «Состав отправляемых данных».
  2. Найдем в списке типы документов, по которым переносились данные.
  3. Если мы видим, что в списке зарегистрированных объектов присутствуют документы с датой ранее 01.01.2019, их необходимо удалить из регистрации.

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


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

Проблема сопоставления по GUID

При использовании ручного переноса через XML с последующим переходом на регулярный обмен, критически важно, чтобы Уникальные Идентификаторы (GUID) объектов в обеих базах совпадали. Если при XML-выгрузке не была установлена опция «Использовать формат обмена с сохранением ИД», то при начале регулярного обмена система не сможет сопоставить документы. В результате вы получите дубликаты документов в базе-приемнике, а старые (ручные) документы могут остаться нетронутыми, но «оторванными» от процесса синхронизации.

Итоговые рекомендации

  1. Всегда проверяйте на копии: Создайте тестовую среду, идентичную рабочим базам, и проведите цикл обмена.
  2. Используйте Дату запрета загрузки: Это самый простой и эффективный способ "зацементировать" старые периоды.
  3. Очищайте регистрацию: После изменения даты начала выгрузки убедитесь, что в узле обмена не висят "хвосты" за прошлые годы.
  4. Следите за изменениями в закрытом периоде: Помните, что если пользователь (с административными правами) изменит документ в источнике за 2015 год, он может снова попасть в регистрацию изменений. Если фильтр по дате в правилах реализован только на уровне инициализации обмена, а не на уровне ПриОтправкеДанных, объект может уйти в приемник.

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

← На главную