Как превратить обычную базу данных 1С в периферийный узел РИБ: пошаговое руководство

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

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

Зачем использовать альтернативный метод создания узла

Рассмотрим ситуацию: центральная база весит 70 ГБ. При попытке создать начальный образ стандартными средствами платформа выполняет полную выгрузку данных, что может занять 15–20 часов. Если в этот момент произойдет сетевой сбой или переполнение временных таблиц SQL, процесс придется начинать заново. Альтернативный метод позволяет подготовить базу заранее, перенести в нее только необходимые справочники и остатки, а затем «привязать» ее к центру программно.

Шаг 1. Подготовка конфигурации и данных в будущей периферийной базе

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

  1. В центральной информационной базе (ЦБ) выгрузим конфигурацию в файл .cf (Конфигурация -> Сохранить конфигурацию в файл).
  2. Создадим новую пустую базу данных.
  3. Загрузим в новую базу файл .cf из первого пункта и выполним обновление конфигурации базы данных.
  4. С помощью обработки «Универсальный обмен данными XML» или через «Выгрузку/загрузку данных XML» перенесем из ЦБ ключевые справочники: Организации, Магазины, Склады. Это критично для конфигураций на БСП, так как без этих данных многие механизмы (в том числе планы обмена) могут работать некорректно.

Шаг 2. Программная установка связи между базами

Теперь самое главное: нам нужно заставить платформу поверить, что эта независимая база является частью РИБ и имеет главного узла. Для этого мы воспользуемся встроенным методом платформы УстановитьГлавныйУзел(). Рассмотрим пример кода, который необходимо запустить во внешней обработке в будущей периферийной базе:


// Определим узел, который станет главным для нашей базы
// Код узла должен в точности совпадать с кодом центрального узла в плане обмена
ПланОбменаСсылка = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("ЦБ"); 

Если Не ПланОбменаСсылка.Пустая() Тогда
    // Устанавливаем связь с центральным узлом
    ПланыОбмена.УстановитьГлавныйУзел(ПланОбменаСсылка);
    Сообщить("Связь с главным узлом успешно установлена.");
Иначе
    Сообщить("Узел с указанным кодом не найден! Проверьте план обмена.");
КонецЕсли;

Проанализируем этот код: метод ПланыОбмена.УстановитьГлавныйУзел() меняет статус текущей базы. После его выполнения при запуске системы база будет считаться подчиненной, а в заголовке программы (если это предусмотрено конфигурацией) появится соответствующая индикация.

Шаг 3. Решение проблемы с предопределенными элементами

Выясним причину одной из самых опасных проблем при ручном создании базы — дублирования предопределенных элементов. Когда вы создаете базу с нуля, UUID (уникальные идентификаторы) предопределенных элементов справочников в данных могут не совпадать с теми, что созданы в центральной базе. При первом же обмене платформа может создать «двойников» для ставок НДС, видов цен или типов денежных средств.

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

Шаг 4. Настройка параметров работы программы (БСП)

В современных конфигурациях (Розница 2.3, УТ 11, ERP) платформенных механизмов недостаточно. После установки главного узла вы можете столкнуться с тем, что при каждом входе система выдает ошибку: Ошибка разбора XML: Extra content at the end of the document или настойчиво предлагает настроить обмен.

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

  1. Найдем константу НастройкаПодчиненногоУзлаРИБЗавершена. Ее необходимо установить в значение Истина.
  2. Проверим регистр сведений Общие настройки узлов информационных баз. В записи, соответствующей нашему узлу, флаг Настройка завершена должен быть установлен.

Рассмотрим пример кода для коррекции этих параметров:


// Установка константы завершения настройки
Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Установить(Истина);

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

Шаг 5. Синхронизация идентификаторов и первый обмен

После того как техническая связь установлена, нужно убедиться, что коды узлов в обеих базах «зеркальны»:

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

Альтернатива: Метод «Пустого начального образа»

Если ручное создание кажется слишком сложным, проанализируем еще один эффективный метод:

  1. В центральной базе временно измените правила регистрации данных так, чтобы ни один объект не попадал в миграцию (например, установите условие Ложь в правилах).
  2. Создайте начальный образ штатным способом. Поскольку данных для выгрузки нет, процесс займет несколько минут.
  3. В созданной «почти пустой» периферийной базе восстановите нужные данные через XML или просто включите обычную синхронизацию.
  4. Верните правила регистрации в исходное состояние в центральной базе.

Этот способ гарантирует корректность всех внутренних идентификаторов системы (Object ID базы, UUID предопределенных элементов) и избавляет от необходимости вручную править регистры БСП.

← На главную