Как передать только структуру конфигурации в периферийную базу 1С:Бухгалтерия 3.0?

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

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

Рассмотрим подводные камни этой задачи, технические ограничения Библиотеки стандартных подсистем (БСП) и основные варианты решения.

Ограничения и подводные камни автономной работы РИБ

Попытка использовать механизм РИБ исключительно для обновления структуры данных без обмена элементами сталкивается со следующими проблемами:

  1. Рассинхронизация предопределенных данных: В конфигурациях на платформе «1С:Предприятие 8.3» структура метаданных тесно связана с предопределенными элементами справочников, планов счетов и видов расчетов. Если данные не мигрируют через обмен, новые предопределенные элементы не создаются в периферийной базе автоматически или создаются с новыми уникальными идентификаторами (UUID), что приводит к дублированию элементов.
  2. Зависимость от механизмов БСП: При обработке обновления информационной базы в режиме «1С:Предприятие» проверяются системные флаги главного узла. Если база считает себя подчиненным узлом РИБ, ряд процедур обновления блокируется в ожидании данных из центра.
  3. Служебные константы БСП при отвязке главного узла: Программное снятие связи через метод ПланыОбмена.УстановитьГлавныйУзел(Неопределено) или параметр запуска Конфигуратора /ResetMasterNode отключает РИБ на уровне платформы, но в базе остаются активными служебные константы, такие как НастройкаПодчиненногоУзлаРИБЗавершена и ЭтоАвтономноеРабочееМесто. Если не сбросить их значения, база будет запрашивать восстановление связи с главным узлом или ограничит редактирование данных.

Решение 1. Настройка РИБ с перехватом отправки данных

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

Для блокировки передачи бизнес-данных переопределим обработку выгрузки в модуле плана обмена. В событии ПриОтправкеДанныхПодчиненному установим игнорирование элементов данных:


Процедура ПриОтправкеДанныхПодчиненному(Элемент, ОтправкаЭлемента, СозданиеНачальногоОбраза)
    // Игнорируем отправку объектов данных, оставляя только изменения конфигурации
    ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецПроцедуры

Чтобы предопределенные данные (новые счета учета, справочники) корректно создавались на стороне периферийной базы при обновлении конфигурации базы данных, изменим свойство АвтоСозданиеПредопределенныхДанных у узла плана обмена или соответствующих объектов на СоздаватьАвтоматически.

Решение 2. Создание базы из начального образа с отвязкой главного узла

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

  1. Сформируем стандартный начальный образ РИБ из центральной базы. Это гарантирует совпадение идентификаторов всех служебных объектов и предопределенных элементов.
  2. Отвяжем периферийную базу от центральной. Для этого запустим Конфигуратор с параметром /ResetMasterNode или выполним код в режиме «1С:Предприятие»: ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
  3. Программно сбросим служебные константы БСП, отвечающие за статус узла РИБ:
    
    Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Установить(Ложь);
    Константы.ЭтоАвтономноеРабочееМесто.Установить(Ложь);
    
  4. Выполним очистку накопленных бизнес-данных (документов и движений) с помощью обработки свертки информационной базы или выгрузки/загрузки необходимых справочников.

Решение 3. Обновление через файл конфигурации (.cf) и пакетный режим

Выясним, как обойтись без механизмов РИБ, если требуется лишь поставлять обновления структуры в автономные базы.

  1. Выгрузим файл конфигурации (.cf) из центральной базы.
  2. Применим файл конфигурации в удаленной базе с помощью пакетного режима запуска Конфигуратора:
    
    1cv8.exe DESIGNER /IBConnectionString "..." /UpdateCfg "C:\Updates\1cv8.cf" /UpdateDBCfg
    
  3. Для выполнения обработчиков обновления данных БСП запустим сеанс «1С:Предприятие». Процедуры обновления выполняются с помощью вызова: ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы();
  4. Настроим запуск процедуры обновления через планировщик заданий операционной системы в нерабочее время пользователей.

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

← На главную