Как правильно обновлять типовые конфигурации с расширениями и РИБ?

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

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

Анализ механизмов платформы при обмене расширениями

Для начала проанализируем, как платформа 1С воспринимает расширения в контексте РИБ. Важно понимать, что обмен метаданными основной конфигурации и обмен расширениями — это два параллельных процесса, хотя они и упаковываются в один файл обмена. Рассмотрим ключевой параметр: в свойствах расширения существует флаг Используется в РИБ. Если этот флаг не установлен, расширение вообще не будет участвовать в автоматическом обмене, и его придется обновлять в каждом узле вручную через конфигуратор.

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

Проблема «Замкнутого круга» при обновлении в узле

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

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

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

Пошаговый алгоритм правильного обновления РИБ с расширениями

Рассмотрим этапы подготовки и проведения обновления, которые минимизируют риск остановки работы периферийных узлов:

  1. Подготовка в центральном узле: Обновите основную конфигурацию. После этого внесите необходимые правки в расширения, чтобы они соответствовали новой версии. Важный нюанс: обязательно измените номер версии в свойствах расширения. Это гарантирует, что платформа зафиксирует изменение объекта и подготовит его к выгрузке.
  2. Принудительная регистрация: Чтобы быть уверенными, что расширения попадут в файл обмена, воспользуйтесь обработкой Регистрация изменений для обмена. Проверьте, что объекты расширений стоят в очереди на выгрузку для всех необходимых узлов.
  3. Синхронизация в центре: Выполните выгрузку данных из центрального узла.
  4. Действия в периферийном узле: Загрузите файл обмена. Если вы знаете, что изменения в расширении затрагивают структуру данных или критически зависят от версии конфигурации, выполните следующие действия:
    • Зайдите в Конфигуратор периферийного узла.
    • Откройте список расширений и временно снимите флаг Активно для проблемных расширений.
    • Примените изменения основной конфигурации (клавиша F7).
    • Запустите базу в режиме «Предприятие». Процедуры обновления БСП завершатся успешно, так как расширения отключены и не мешают запуску.
    • Примите повторный сеанс обмена, если расширение не прилетело в первом пакете.
    • Снова зайдите в конфигуратор и включите активность расширений.

Рекомендации по разработке расширений для стабильного РИБ

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

Не меняйте структуру типовых данных без крайней необходимости. Добавление новых реквизитов в типовые справочники или документы через расширение в РИБ — это «мина замедленного действия». Как только структура таблицы меняется, хэш метаданных перестает совпадать. Если обмен данными (документами) произойдет до того, как узел получит новое расширение, вы получите ошибку соответствия метаданных.

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

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


// Пример строки запуска для периферийного узла после загрузки обновления
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "ПутьКБазе" /N "Админ" /P "Пароль" /C ЗапуститьОбновлениеИнформационнойБазы /UpdateDBCfg

Этот параметр инициирует механизмы БСП по обновлению внутренних справочников и регистрации расширений сразу после применения метаданных.

Выясним причины сбоев при передаче активности расширений

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

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

← На главную