Как настроить обмен между одинаковыми конфигурациями 1С без использования РИБ

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

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

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

Способ 1. Использование собственного плана обмена без признака РИБ

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

  1. В конфигураторе открываем список планов обмена и создаем новый план или копируем существующий.
  2. В свойствах созданного плана обмена снимаем флажок Распределенная информационная база.
  3. В составе плана обмена отмечаем только те документы, справочники и регистры, которые должны подлежать перегрузке.
  4. Если объект не должен регистрироваться автоматически при каждом сохранении, устанавливаем для него свойство Авторегистрация в значение Запретить.

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

Способ 2. Выгрузка через обработку «Универсальный обмен данными XML»

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

Проанализируем пошаговый алгоритм настройки выгрузки по зарегистрированным изменениям:

  1. Формируем правила конвертации данных (ПКД) в программе «Конвертация данных 2.0». Для одинаковых конфигураций правила создаются автоматически по кнопке за несколько минут.
  2. Запускаем обработку УниверсальныйОбменДаннымиXML на стороне базы-источника.
  3. На вкладке настройки выгрузки выбираем подготовленный файл правил.
  4. В поле режима выгрузки указываем использование плана обмена и выбираем конкретный узел.
  5. При выполнении выгрузки обработка считывает из таблицы регистрации только те ссылки, которые были внесены в узел, а после успешного формирования файла очищает регистрацию изменений с помощью метода ПланОбмена.УдалитьРегистрациюИзменений().

Способ 3. Избирательная программная регистрация объектов

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

Для реализации логики фильтрации создается подписка на событие ПриЗаписи или ПередЗаписью необходимых объектов. Рассмотрим пример кода подписки для регистрации документа:


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

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

Способ 4. Работа с префиксами номеров и предотвращение коллизий

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

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

При использовании флага ОбменДанными.Загрузка = Истина отключена проверка бизнес-логики и программная установка новых номеров, благодаря чему загружаемый объект сохраняет оригинальный номер, код и идентификатор (GUID) из источника:


ОбъектЗагрузки = СсылкаНаОбъект.ПолучитьОбъект();
ОбъектЗагрузки.ОбменДанными.Загрузка = Истина;
ОбъектЗагрузки.Записать();

Способ 5. Вынос логики обмена в расширение конфигурации

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

  1. В расширение добавляются подписки на события для нужных справочников и документов.
  2. В модуле расширения описывается логика заполнения регистраций изменений для кастомного узла.
  3. Регламентные задания выгрузки данных и работы с файлами или HTTP-сервисами также помещаются в расширение.

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

← На главную