Обновление клиент-серверной базы 1С без потери данных и простоя
Содержание
Чтобы обновить 1С на сервере, сделайте копию базы
средствами СУБД, закройте вход пользователям через консоль кластера, затем в Конфигураторе выполните Конфигурация → Поддержка → Обновить конфигурацию и примените изменения к базе данных (F7). После этого один раз зайдите в режиме 1С:Предприятие, чтобы отработали обработчики обновления, и снимите блокировку.
Порядок одинаков для БП 3.0, ЗУП 3.1, УТ 11 и других типовых конфигураций: это механизм платформы 8.3, а не конкретной программы. Разница с файловой базой в трёх местах: копию делают в СУБД, пользователей выгоняют через сервер, а версия платформы на сервере и у клиентов должна совпадать до последней цифры.
Подготовка к обновлению базы на сервере
Начните с того, что можно сделать днём, пока все работают. Это сократит окно простоя до 20–40 минут даже для базы на десятки гигабайт.
Что проверить заранее
- 📄 Текущий релиз. Откройте в базе
Справка → О программе(кнопка с буквой «i» в правом верхнем углу) и запишите номер конфигурации и платформы. - 🔗 Цепочку релизов. Типовые обновления ставятся последовательно. В описании каждого релиза указано, с каких версий он обновляет. Если вы отстали на полгода, может понадобиться 3–5 промежуточных шагов.
- 🧩 Минимальную платформу. В файле описания релиза (
ReadMe.txtили1cv8upd.htmв папке дистрибутива) указан номер платформы, не ниже которого нужно работать. Если на сервере версия меньше, сначала обновляйте платформу. - ✏️ Доработки. Если конфигурацию снимали с поддержки или правили, обновление пойдёт через сравнение и объединение. Это отдельная работа, её лучше прогнать на копии.
Резервная копия: две независимые
На сервере не копируют папку с базой, как в файловом варианте. Данные лежат в СУБД, поэтому основная копия — штатный бэкап SQL.
Для MS SQL Server:
BACKUP DATABASE [buh_prod]
TO DISK = N'D:\Backup\buh_prod_before_update.bak'
WITH COPY_ONLY, COMPRESSION, STATS = 10;
Параметр COPY_ONLY не ломает цепочку регулярных бэкапов. COMPRESSION недоступен в редакции Express — уберите его, если SQL Server бесплатный.
Для PostgreSQL:
pg_dump -U postgres -Fc -f D:\Backup\buh_prod_before_update.dump buh_prod
Вторая копия — выгрузка в .dt из Конфигуратора: Администрирование → Выгрузить информационную базу. Она пригодится, если базу придётся развернуть на другом сервере или в файловом режиме для разбора.
Не начинайте обновление, пока не убедились, что файл бэкапа создан и его размер похож на правду. Пустой .bak на 1 МБ обнаруживают обычно в самый неудобный момент.
Тестовый прогон на копии
Восстановите бэкап в новую базу (например, buh_test), зарегистрируйте её в кластере и обновите. Так вы узнаете, сколько длится реструктуризация и всплывут ли ошибки объединения. Цифры с копии почти совпадут с рабочими.
Как закрыть вход пользователям и завершить сеансы
Обновление структуры базы требует монопольного доступа. Пока в базе есть хотя бы один сеанс, включая фоновые и регламентные задания, Конфигуратор не применит изменения.
Через консоль администрирования серверов
- Откройте «Администрирование серверов 1С Предприятия», разверните
Кластеры → Информационные базы. - Откройте свойства нужной базы.
- Установите флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена».
- Заполните «Сообщение» (его увидят пользователи) и «Код разрешения», например
upd777. - Сохраните, затем в ветке
Сеансывыделите оставшиеся сеансы и удалите их.
Удаление сеанса обрывает работу пользователя без сохранения. Предупредите людей заранее, лучше за 10–15 минут.
Код разрешения нужен вам самим. С ним можно войти в заблокированную базу: в параметрах запуска укажите /UCupd777.
Через командную строку rac
Если консоль не открывается или работаете удалённо, используйте rac (нужен запущенный ras):
rac cluster list
rac infobase summary list --cluster=<id_кластера>
rac session list --cluster=<id_кластера> --infobase=<id_базы>
rac session terminate --cluster=<id_кластера> --session=<id_сеанса>
Параметры блокировки базы через rac infobase update смотрите в rac help infobase: набор ключей зависит от версии платформы.
Из самой программы
В типовых конфигурациях на БСП есть ссылка «Блокировка работы пользователей» в разделе Администрирование → Обслуживание. Она делает то же, что и консоль, но удобна, если доступа к серверу у вас нет.
Обновление 1С на сервере из режима Предприятия
Самый простой путь для типовой конфигурации без доработок — встроенный помощник. Он открывается через Администрирование → Интернет-поддержка и сервисы → Обновление версии программы.
Помощник умеет:
- 🌐 скачать обновление с портала, если подключена интернет-поддержка;
- 📁 взять файл
.cfu, если вы скачали его сами; - 🔁 построить цепочку промежуточных релизов и пройти её за один раз;
- ⏰ отложить установку на ночь или на момент закрытия программы.
В клиент-серверном варианте помощник запросит пароль администратора кластера, если он задан. Резервную копию средствами СУБД он не делает: эту часть вы закрыли на этапе подготовки.
Помощник сам устанавливает блокировку и завершает сеансы. Но регламентные задания и сеансы, «зависшие» на сервере, иногда остаются. Если помощник долго ждёт монопольного режима, удалите их через консоль.
Для конфигураций с доработками этот путь не подходит. Помощник откажется обновлять или предложит Конфигуратор.
Как обновить конфигурацию на сервере через Конфигуратор
Этот способ даёт полный контроль и подходит для любых баз, включая изменённые.
- Запустите Конфигуратор с кодом разрешения, если вход заблокирован.
- Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - Выберите
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите «Выбор файла обновления» и найдите
1cv8.cfuнужного релиза. Если шаблоны установлены, можно выбрать поиск доступных обновлений. - Проверьте окно сравнения. Для типовой без доработок просто нажмите «Выполнить».
- Когда основная конфигурация обновлена, нажмите
F7илиКонфигурация → Обновить конфигурацию базы данных. - Появится список изменений структуры — нажмите «Принять». Начнётся реструктуризация.
- Повторите шаги 3–7 для следующего релиза цепочки.
Реструктуризация на сервере идёт внутри транзакции СУБД. Если она упадёт, данные вернутся к исходному состоянию, а не останутся «наполовину обновлёнными».
Если Конфигуратор предлагает динамическое обновление из-за активных сеансов — откажитесь. Для релиза типовой конфигурации это путь к ошибкам у пользователей. Завершите сеансы и повторите F7.
Если в конфигурации есть доработки
В окне сравнения появятся объекты с двойными изменениями: и поставщик, и вы правили одно и то же. Для каждого решите, что взять. Модули объединяйте с приоритетом поставщика и вручную переносите свои правки. Здесь тестовая копия окупается полностью.
Доработки, вынесенные в расширения, обновлению не мешают. Но после обновления проверьте, что расширения подключаются без ошибок: Конфигурация → Расширения конфигурации.
Пакетное обновление: дистрибутив и командная строка
Обновление приходит архивом. Внутри — setup.exe, который устанавливает шаблоны в каталог шаблонов (по умолчанию %APPDATA%\1C\1cv8\tmplts). После установки в папке релиза появляется 1cv8.cfu — его и указывают Конфигуратору. Файл описания 1cv8upd.htm рядом содержит список изменений и требования к платформе.
Когда баз несколько (типично для сервера с филиалами), удобнее пакетный запуск. Пример .bat для одной базы:
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set CFU="D:\tmplts\1c\Accounting\3_0_160_22\1cv8.cfu"
%V8% DESIGNER /S "srv1c\buh_prod" /N "Администратор" /P "пароль" ^
/UCupd777 /DisableStartupDialogs ^
/UpdateCfg %CFU% /UpdateDBCfg ^
/Out "D:\Logs\buh_prod_update.log"
Номер платформы и путь к шаблону подставьте свои. Ключ /UpdateCfg обновляет основную конфигурацию из файла, /UpdateDBCfg применяет изменения к базе, /Out пишет журнал. Читайте его после каждого прогона: при ошибке объединения батник завершится, но база останется на старом релизе.
Пароль в открытом виде в .bat — плохая идея. Храните скрипт в папке с доступом только для администраторов или передавайте пароль параметром при запуске.
Пакетный режим подходит только для конфигураций на полной поддержке. Изменённые базы обновляйте вручную.
Обновление платформы 1С на сервере
Новый релиз конфигурации часто требует свежую платформу. На сервере это отдельная процедура, и её делают до обновления конфигурации.
- Установите новую версию через
setup.exeиз дистрибутива сервера. Отметьте компоненты «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». - Остановите службу агента сервера старой версии. Все пользователи будут отключены — делайте это в окне обслуживания.
- Убедитесь, что служба теперь указывает на
ragent.exeв папке новой версии, и запустите её. - Перерегистрируйте консоль под новую версию:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
- Обновите платформу на всех клиентских компьютерах и терминальных серверах до того же номера.
Клиент другой версии к серверу не подключится: появится ошибка о несоответствии версий клиента и сервера. Номера должны совпадать полностью, включая последние четыре цифры.
Старую версию с сервера не удаляйте сразу. Если что-то пойдёт не так, вернуть службу на прежнюю папку быстрее, чем переустанавливать.
Сбой при обновлении: диагностика и откат
Большинство проблем видно по тексту ошибки. Выберите свой случай:
Если ничего не помогает — откат
Восстановите бэкап СУБД поверх рабочей базы или в новую базу и переключите на неё регистрацию в кластере. Для MS SQL это RESTORE DATABASE ... WITH REPLACE из того файла, что вы сделали перед стартом. Платформа при этом должна быть той же версии, что и до обновления, — иначе старая конфигурация может не запуститься.
Странное поведение сервера после обновления
Если база обновилась, но у пользователей «плавают» ошибки на ровном месте, помогает очистка сеансовых данных кластера. Для этого останавливают службу агента и удаляют папки snccntx* в каталоге srvinfo\reg_1541.
Остановка службы отключит всех пользователей всех баз на этом сервере. Делайте это только в окне обслуживания и только после копии каталога srvinfo.
Проверка базы и возврат пользователей
Обновление конфигурации — не финал. Последний шаг делает сама программа при первом входе.
Первый вход
Зайдите в режиме 1С:Предприятие под администратором (с кодом разрешения). Появится окно обновления данных — дождитесь его окончания. Часть обработчиков работает отложенно, в фоне, уже после входа. Их состояние видно в разделе Администрирование → Обслуживание, в результатах обновления программы.
Что проверить перед открытием доступа
Затем в свойствах базы в консоли снимите оба флажка блокировки. Регламентные задания запустятся сами.
Сообщите пользователям, что обновились, и попросите при первом входе не закрывать окно, если программа покажет описание изменений. Через день-два проверьте журнал регистрации на новые ошибки: Администрирование → Обслуживание → Журнал регистрации.