Как настроить выборочный обмен данными по правилам между двумя базами УТ 10 без использования РИБ

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

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

Рассмотрим, как правильно организовать архитектуру такого обмена, подключить готовые правила конвертации данных (КД), настроить регистрацию изменений и перенести исторические данные.

Шаг 1. Подготовка баз и отказ от использования механизмов РИБ

Типовой план обмена Полный по умолчанию настроен как распределенная информационная база (РИБ). Это означает, что при создании подчиненного узла передаются не только данные, но и изменения конфигурации, а в базе-приемнике блокируется возможность независимого изменения метаданных. Если вам требуется полностью самостоятельная вторая база, использовать стандартный механизм создания начального образа РИБ не следует.

Разберем оптимальный порядок развертывания базы-приемника:

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

Шаг 2. Подключение правил обмена в типовой механизм

Когда правила выгрузки уже разработаны в конфигурации «Конвертация данных» и протестированы через обработку Универсальный обмен данными в формате XML, их необходимо встроить в регулярный процесс обмена конфигурации УТ 10.3 / КА 1.1.

Проанализируем порядок настройки в пользовательском режиме:

  1. Открываем справочник Настройки обмена данными.
  2. Создаем новый элемент настройки и выбираем тип обмена — «Обмен по правилам обмена».
  3. Указываем созданный узел плана обмена.
  4. В форме элемента настройки находим поле загрузки правил и загружаем подготовленный XML-файл правил конвертации непосредственно в базу. Это позволяет хранить индивидуальные правила для каждого направления обмена прямо в информационной базе без необходимости менять типовую конфигурацию.
  5. Настраиваем расписание регламентного задания или параметры выполнения по требованию.

Шаг 3. Первоначальная инициализация данных и очистка очереди регистрации

При первоначальном создании узлов обмена или перезаписи объектов платформа может зарегистрировать в таблицах изменений весь массив документов за все годы (база может весить десятки гигабайт). Если требуется выгрузить только документы за текущий период (например, за 2017 год), очередь регистрации необходимо скорректировать.

Выполним очистку и выборочную регистрацию:

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

Шаг 4. Настройка выборочной регистрации изменений и фильтрации

Главная сложность заключается в том, чтобы при перепроведении или редактировании документов в базе-источнике фиксировались только те изменения, которые должны попасть в базу-приемник.

Рассмотрим два взаимодополняющих подхода к решению этой задачи:

1. Фильтрация на уровне правил конвертации данных (ПКО/ПВД)

В правилах конвертации объектов (ПКО) в обработчике ПередВыгрузкой прописываем условие отказа, если объект не соответствует критериям бухгалтерского учета:


Если НЕ Источник.ОтражатьВБухучете Тогда
    Отказ = Истина;
КонецЕсли;

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

2. Тонкая настройка авторегистрации через подписки на события

Чтобы таблицы регистрации изменений не раздувались лишними записями, в конфигураторе для нужных объектов в составе плана обмена устанавливаем свойство Авторегистрация в значение Запретить. Затем создаем подписку на событие ПриЗаписи для документов и реализуем алгоритм проверки условий:


Процедура ПриЗаписиДокументаДляОбменаПриЗаписи(Источник, Отказ) Экспорт
    // Предотвращаем зацикливание при загрузке данных
    Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Проверяем признак отражения в бухучете или безусловные виды документов
    Если Источник.ОтражатьВБухучете Тогда
        УзелБух = ПланыОбмена.НашПланОбмена.НайтиПоКоду("БУХ");
        Если ЗначениеЗаполнено(УзелБух) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения(УзелБух, Источник);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Шаг 5. Защита от зацикливания при двустороннем обмене

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

  1. Во всех подписках на события и коде модулей объектов всегда проверяем условие Источник.ОбменДанными.Загрузка = Истина. При загрузке данных повторная регистрация объекта для узла-отправителя выполняться не должна.
  2. При настройке правил конвертации для справочников (контрагенты, номенклатура, договоры) в ПКО отключаем флаг «Создавать новый объект, если не найден», если требуется ограничить перенос только теми элементами, которые явно разрешены к миграции, чтобы исключить неконтролируемое появление неуправленческих данных по ссылкам.
← На главную