Как быстро создать периферийный узел РИБ из копии центральной базы 1С:Розница?

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

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

Почему штатное создание образа занимает много времени

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

  1. Высокая нагрузка на дисковую подсистему: Платформа 1С считывает данные из исходной базы, формирует таблицы и производит запись в новый файл .1CD. На стандартных жестких дисках (HDD) скорость упирается в дисковые операции ввода-вывода.
  2. Большие объемы накопленных изменений: Если в центральной базе не очищалась таблица регистрации изменений для узлов, платформа тратит значительное время на обработку очередей сообщений.
  3. Ограничения процессорной мощности: Упаковка данных и проверка целостности при выгрузке требуют интенсивных вычислений.

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

Разберем по шагам, как превратить полную копию центральной информационной базы в работоспособный периферийный узел РИБ.

  1. Подготовка и безопасный запуск копии базы:

    Создадим копию центральной базы данных и развернем ее в новой папке или на сервере периферийного узла. Важно: перед первым запуском базы-копии обязательно заблокируем выполнение регламентных и фоновых заданий (с помощью ключа запуска /ЗаблокироватьРаботуСВнешнимиРесурсами или через консоль кластера серверов 1С). Это предотвратит отправку ошибочных писем, запуск фоновых обменов и обращение к внешним сервисам из базы-клона.

  2. Очистка регистрации изменений и счетчиков сообщений:

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

    Посмотрим на пример программного кода для очистки регистрации и сброса счетчиков во внешней обработке:

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

    Аналогично в центральной базе для этого конкретного периферийного узла также необходимо обнулить счетчики НомерОтправленного и НомерПринятого, установив их в 0.

  3. Установка главного узла и переименование узлов плана обмена:

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

    Выполним назначение главного узла и «зеркальную» смену кодов и наименований узлов:

    
    // 1. Получаем ссылки на узлы
    УзелЦентр = ПланыОбмена.РИБПоМагазину.НайтиПоКоду("ЦБ");
    УзелМагазин = ПланыОбмена.РИБПоМагазину.НайтиПоКоду("М01");
    
    // 2. Назначаем центральный узел главным для текущей базы
    ПланыОбмена.УстановитьГлавныйУзел(УзелЦентр);
    
    // 3. Зеркально меняем коды и наименования предопределенного и подчиненного узлов
    // Предопределенный узел (ЭтотУзел) теперь должен представлять магазин
    ЭтотУзелОбъект = ПланыОбмена.РИБПоМагазину.ЭтотУзел().ПолучитьОбъект();
    ЭтотУзелОбъект.Код = "М01";
    ЭтотУзелОбъект.Наименование = "Магазин №1";
    ЭтотУзелОбъект.Записать();
    
    // Второй узел теперь представляет центральный узел
    УзелЦентрОбъект = УзелЦентр.ПолучитьОбъект();
    УзелЦентрОбъект.Код = "ЦБ";
    УзелЦентрОбъект.Наименование = "Центральная база";
    УзелЦентрОбъект.Записать();
    

Специфика конфигурации 1С:Розница 2.2 и подсистемы БСП

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

  1. Префикс информационной базы: Перейдем в настройки программы и изменим константу ПрефиксИнформационнойБазы (или ПрефиксУзла) на префикс, соответствующий данному периферийному узлу (например, М1), чтобы новые документы на узле нумеровались корректно.
  2. Привязка к магазину и кассам ККМ: В настройках синхронизации данных проверим соответствие текущего узла конкретному магазину сети. Проверим настройки торгового оборудования, рабочих мест и касс ККМ — на периферийном узле должны быть активированы только те кассы и фискальные регистраторы, которые физически подключены на данной торговой точке.
  3. Пользователи и права доступа: Проверим список пользователей, отключим лишних администраторов или настроим локальные учетные записи продавцов и кассиров. Если в базе включен механизм ограничения прав на уровне записей (RLS), убедимся в корректности заполнения групп доступа.
  4. Настройки транспорта обмена: В справочнике сценариев и настроек обмена данными зададим актуальные пути (каталог обмена, FTP, сетевой ресурс или прямое подключение к веб-сервису центральной базы) и расписание автоматического запуска.

Риски и ограничения метода

Рассмотрим важные нюансы, о которых следует помнить при создании узла из копии:

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