Обновление распределённой базы 1С: от главного узла до последнего филиала
Содержание
Конфигурацию в распределённой информационной базе (РИБ) обновляют только в главном узле. Подчинённые узлы получают изменения сами, вместе с очередным сообщением обмена, и устанавливают их через Обновить конфигурацию базы данных. Файл .cfu в подчинённый узел не загружают: его конфигурация защищена от изменений.
Сбои в РИБ после обновления почти всегда идут от нарушенного порядка: обновили центр, пока филиал не выгрузил свои данные, или подняли платформу только в одном узле. Ниже порядок, при котором обновить конфигурацию 1С в режиме РИБ можно без потери документов и без пересоздания узлов.
Как устроено обновление в РИБ и что нужно до начала
В РИБ у всех узлов одна и та же конфигурация. Платформа следит за этим сама. Когда в главном узле меняется конфигурация базы данных, изменения автоматически регистрируются для всех подчинённых узлов первого уровня. При следующем обмене они уходят в сообщении вместе с данными.
Подчинённый узел, получив такое сообщение, записывает новую конфигурацию в основную конфигурацию узла. Применить её к базе данных — отдельное действие, и для него нужен монопольный доступ к этой базе.
Что из этого следует на практике:
- 🔒 В подчинённом узле нельзя обновиться «вперёд» центра или поставить другой релиз.
- 📦 Сообщение обмена с изменениями конфигурации весит заметно больше обычного: десятки мегабайт для типовых конфигураций.
- 🧭 В многоуровневой РИБ изменения спускаются по уровням: узел второго уровня получит их только после того, как обновится его «родитель».
- 🧩 Расширения конфигурации живут отдельно. В подчинённые узлы попадают только те, у которых в свойствах включено использование в распределённой информационной базе.
Что проверить заранее
| Что | Зачем |
|---|---|
| Версия платформы во всех узлах | Новый релиз может требовать платформу с номером не ниже указанного в описании обновления. Её ставят во всех узлах до обновления конфигурации. |
| Последний успешный обмен с каждым узлом | В узле не должно остаться невыгруженных документов. |
| Канал обмена | Каталог, FTP или почта должны пропускать сообщения большого размера. |
| Права в подчинённых узлах | Обновление базы там запускает пользователь с административными правами. |
| Окно для работ | Время, когда пользователи центра и филиалов не работают в базе. |
Если узел уже несколько дней не выходил на связь, сначала добейтесь от него обмена. Обновлять центр, пока филиал «молчит», — самый частый источник расхождений.
Шаг 1. Готовим главный узел
Порядок работ в центральной базе:
- Проведите полный цикл синхронизации со всеми подчинёнными узлами: центр выгружает, узел загружает и выгружает свои данные, центр их загружает. Раздел
Администрирование → Синхронизация данных. - Попросите филиалы не вводить документы до окончания обновления. Если работы в выходной, достаточно предупредить.
- Завершите сеансы пользователей главного узла. В конфигурациях на БСП это делают через блокировку работы пользователей в разделе
Администрирование → Обслуживание. - Сделайте резервную копию главного узла: выгрузку
.dtв Конфигураторе или резервное копирование средствами СУБД для клиент-серверной базы.
Копию главного узла делайте обязательно и именно перед обновлением. Об откате ниже есть отдельный разговор: восстанавливать центр из копии в РИБ сложнее, чем обычную базу.
Блокировка и завершение сеансов обрывают работу пользователей. Несохранённые документы пропадут, поэтому сеансы завершают по договорённости, а не посреди рабочего дня.
Шаг 2. Обновляем конфигурацию центра и формируем изменения для узлов
Само обновление в главном узле не отличается от обычной базы:
- Откройте базу в режиме Конфигуратора.
- Выберите
Конфигурация → Поддержка → Обновить конфигурациюи укажите файл.cfuнужного релиза. - Дождитесь сравнения и объединения, затем примите изменения.
- Выполните
Конфигурация → Обновить конфигурацию базы данных(клавишаF7) и подтвердите реорганизацию. - Запустите базу в режиме 1С:Предприятие. Отработают обработчики обновления, программа покажет описание изменений.
На четвёртом шаге платформа регистрирует изменения конфигурации для подчинённых узлов. Отдельной команды «выгрузить конфигурацию» нет: изменения уйдут при ближайшей выгрузке данных в узел.
Дальше выполните синхронизацию с каждым узлом из Администрирование → Синхронизация данных. Если обмен идёт по расписанию, можно дождаться его, но надёжнее запустить вручную и убедиться, что сообщение ушло без ошибок.
Если между текущим и целевым релизом есть обязательные промежуточные, проходите всю цепочку в главном узле. Узлы при этом можно не синхронизировать после каждого шага: в сообщение попадёт итоговая конфигурация.
После обновления центра в разделе Администрирование → Обслуживание откройте результаты обновления. Если там висят незавершённые отложенные обработчики, дайте им закончиться до активной работы. Часть обработчиков в подчинённых узлах не выполняется: их результат приходит из главного узла с данными.
Шаг 3. Устанавливаем обновление в подчинённом узле
В узле всё начинается с обычной загрузки данных. Типовые конфигурации на БСП, получив изменения конфигурации, приостанавливают загрузку данных и сообщают, что из главного узла пришло обновление программы. Остальные данные из этого сообщения загрузятся уже после установки.
Порядок в узле:
- Пользователь с административными правами запускает синхронизацию и видит сообщение о полученном обновлении.
- Все остальные пользователи узла выходят из программы.
- Обновление устанавливают по предложению программы или вручную: открыть узел в Конфигураторе и выполнить
Конфигурация → Обновить конфигурацию базы данных. Конфигуратор покажет, что основная конфигурация отличается от конфигурации базы данных. - Узел запускают в режиме 1С:Предприятие. Отрабатывает обновление информационной базы.
- Синхронизацию запускают ещё раз: теперь загружаются данные, которые ждали установки обновления.
Не отменяйте установку и не продолжайте работать в узле на старой версии, когда программа уже сообщила о полученном обновлении. Обмен в таком узле встанет, пока конфигурация базы данных не будет обновлена.
Для Обновить конфигурацию базы данных нужен монопольный доступ к базе узла. Если в узле кто-то остался, обновление не начнётся. Завершение чужих сеансов обрывает их работу: договаривайтесь заранее.
Если у узла есть свои подчинённые
Узел первого уровня после обновления сам регистрирует изменения для своих подчинённых. Порядок тот же: обновили узел, выполнили обмен с узлом второго уровня, установили обновление там.
Шаг 4. Сверяем данные после обновления
Обновление считается законченным не тогда, когда узел запустился на новом релизе, а когда прошёл полный обмен в обе стороны.
Что сделать по каждому узлу:
- Выполнить синхронизацию из узла: узел выгружает документы, накопленные с момента последнего обмена.
- Загрузить их в главном узле и отправить ответ.
- Открыть в узле
Администрирование → Синхронизация данныхи проверить, что в журнале последнего обмена нет предупреждений. - Сверить пару контрольных показателей: остатки на одном складе, оборот за день, количество документов за дату обновления.
| Признак | Что значит |
|---|---|
| Обмен завершился, предупреждений нет | Узел обновлён, данные сходятся |
| Узел снова сообщает о полученном обновлении | Центр обновили ещё раз, нужно повторить шаг 3 |
| Есть предупреждения о непроведённых документах | Обработчики обновления изменили данные; документы перепроводят после проверки |
| Обмен не идёт, ошибка загрузки сообщения | См. раздел про сбои ниже |
Ведите простую таблицу: узел, дата получения обновления, дата установки, дата первого полного обмена. На пяти и более узлах без неё легко пропустить филиал, который «вроде обновился».
Сбои при обновлении РИБ и как из них выходить
F7 был выполнен до конца, и запустите выгрузку данных в узел вручную. Если обмен идёт через почту или FTP, посмотрите ограничение размера сообщения на сервере.Если обновить узел не получается
Когда узел не удаётся вернуть в обмен, у него есть радикальный, но чистый путь — начальный образ.
- Выгрузите из проблемного узла всё, что можно: синхронизация в сторону центра, если работает. Если нет — выпишите документы, которые были введены после последнего успешного обмена.
- В главном узле создайте новый начальный образ для этого узла. Команда есть в настройке синхронизации с узлом.
- Разверните образ на месте старой базы филиала, сохранив копию старой.
- Повторно введите документы, которые не успели попасть в центр.
Старую базу узла не удаляйте сразу: из неё ещё может понадобиться что-то достать. Просто отключите её от обмена и уберите из списка баз у пользователей.
Автоматизация обновления РИБ
Ручное обновление нормально работает на двух-трёх узлах. При десятке филиалов процесс стоит автоматизировать хотя бы частично.
Синхронизация по расписанию
В Администрирование → Синхронизация данных для каждого узла настраивается расписание обмена. Узлы будут сами получать изменения конфигурации вскоре после обновления центра.
В файловой базе регламентные задания выполняются, только пока в ней открыт хотя бы один сеанс. Для файлового узла без постоянно открытого клиента расписание не сработает.
Обновление центра из командной строки
Пакетный режим Конфигуратора позволяет обновить главный узел ночью без участия администратора:
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /S "srv1c\base_center" /N "Администратор" /P "пароль" /UpdateCfg "D:\update\1Cv8.cfu" /UpdateDBCfg /DisableStartupDialogs /Out "D:\update\center.log"
Номер версии в пути замените на свою. Ключ /UpdateCfg применяет файл обновления, /UpdateDBCfg обновляет конфигурацию базы данных, /Out пишет протокол. Для файловой базы вместо /S указывают /F "путь к каталогу базы".
Установка в узле из командной строки
В подчинённом узле после загрузки сообщения с изменениями достаточно одного ключа:
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F "D:\Bases\Filial_1" /N "Администратор" /P "пароль" /UpdateDBCfg /DisableStartupDialogs /Out "D:\update\filial_1.log"
После этого узел нужно один раз запустить в режиме 1С:Предприятие, чтобы отработало обновление информационной базы. Затем снова выполнить обмен.
Чтобы пакетный запуск не упёрся в открытые сеансы, в конфигурациях на БСП используют блокировку с кодом разрешения: режим 1С:Предприятия с параметром /C ЗавершитьРаботуПользователей, а последующие запуски — с ключом /UC <код>.
Пароль администратора в bat-файле — уязвимое место. Храните скрипт в каталоге, доступном только учётной записи, от которой он запускается.
Что автоматизировать не стоит
- 🚫 Обновление центра без свежей копии. В скрипт сначала ставят выгрузку или резервное копирование СУБД.
- 🚫 Установку в узле без проверки протокола. Если
/Outсодержит ошибки, обмен с этим узлом лучше остановить. - 🚫 Обновление на несколько релизов за ночь без проверки после каждого. Достаточно одного сбоя обработчика, чтобы разбирать последствия во всех филиалах.