Как обновлять базы 1С 8.3 без открытия Конфигуратора: ключи 1cv8.exe, пакетный режим и логи
Содержание
Чтобы обновить 1С из командной строки, запустите Конфигуратор в пакетном режиме с двумя ключами: /UpdateCfg загружает файл обновления .cfu в основную конфигурацию, /UpdateDBCfg применяет её к базе данных. Минимальная команда для файловой базы выглядит так: "C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N Админ /P пароль /UpdateCfg "D:\Upd\1Cv8.cfu" /UpdateDBCfg /Out "D:\Upd\log.txt".
Типичная ситуация: у администратора 15 баз в трёх филиалах, и вечер пятницы уходит на то, чтобы открыть каждую, нажать «Обновить» и дождаться реструктуризации. Консольное обновление базы 1С снимает эту рутину: одна команда на базу, один bat-файл на весь парк, журнал по каждой операции. Всё ниже относится к платформе 8.3 и типовым конфигурациям на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11).
1. Подготовка к обновлению: права, версии, копия
Пакетный режим ничего не спрашивает. Если чего-то не хватает, команда просто завершится с ошибкой, и узнаете вы об этом только из лога. Поэтому всё проверяют заранее.
🔑 Права пользователя 1С. Учётная запись, указанная в /N, должна иметь роль «Полные права» (или «Администратор системы»). Пользователь без прав администрирования не откроет Конфигуратор.
🖥️ Права в Windows. Для файловой базы нужен доступ на запись к каталогу с файлом 1Cv8.1CD. Если скрипт запускает Планировщик заданий от служебной учётной записи, дайте права именно ей, а не своему пользователю.
📦 Подходящий файл обновления. Файл .cfu рассчитан на конкретные предыдущие релизы. Список релизов, с которых возможен переход, лежит в файле UpdInfo.txt рядом с .cfu. После установки шаблона обновления файлы обычно находятся в %APPDATA%\1C\1cv8\tmplts\1c\ — в подпапке конфигурации и релиза.
⚙️ Версия платформы. Новый релиз конфигурации требует платформу с номером не ниже указанного в описании релиза. Обновите платформу заранее (как сделать это из консоли — в разделе 6).
💾 Резервная копия. Перед обновлением выгрузите базу в .dt тем же Конфигуратором (ключ /DumpIB) или сделайте копию средствами СУБД.
Не запускайте обновление без проверенной резервной копии. Если реструктуризация оборвётся посередине, откат возможен только из копии.
Проверить заранее стоит и то, стоит ли конфигурация на поддержке. Ключ /UpdateCfg с файлом .cfu работает только для конфигурации на поддержке. Если поддержку сняли и конфигурацию дорабатывали, пакетное обновление здесь не подходит: изменения переносят вручную через сравнение и объединение.
2. Синтаксис запуска 1cv8.exe и ключи для обновления
Общий вид команды:
"<путь к 1cv8.exe>" DESIGNER <база> <пользователь> <действия> <журнал>
Слово DESIGNER открывает базу в режиме Конфигуратора. Без окна: ключ /DisableStartupDialogs убирает диалоги при старте, а /DisableStartupMessages — предупреждения вроде вопроса о смене версии платформы.
| Ключ | Что делает |
|---|---|
/F "путь" | файловая база: каталог с 1Cv8.1CD |
/S "сервер\база" | серверная база: имя сервера кластера и имя базы в кластере |
/N "имя", /P "пароль" | пользователь 1С и его пароль |
/WA- | запретить вход по учётной записи Windows, использовать /N и /P |
/UC "код" | код разрешения, если вход в базу заблокирован |
/UpdateCfg "файл" | обновить конфигурацию на поддержке из .cf или .cfu |
/UpdateDBCfg | обновить конфигурацию базы данных (реструктуризация) |
/LoadCfg "файл.cf" | загрузить конфигурацию из .cf целиком, с заменой |
/DumpIB "файл.dt" | выгрузить базу в файл .dt |
/Out "файл" | писать служебные сообщения в текстовый журнал |
-NoTruncate | после /Out: дописывать в журнал, а не перезаписывать |
/DumpResult "файл" | записать в файл код результата: 0 — успех |
Ключи /UpdateCfg и /UpdateDBCfg можно ставить в одну команду: платформа выполнит их по очереди. Пути с пробелами всегда берите в двойные кавычки.
Не путайте /UpdateCfg и /LoadCfg. Первый ведёт обновление по правилам поддержки. Второй полностью заменяет конфигурацию содержимым .cf — все доработки в основной конфигурации пропадут.
3. Обновление файловой базы из командной строки
Для файловой базы монопольный доступ нужен на этапе обновления структуры. Если в базе кто-то работает, /UpdateDBCfg не сможет её захватить и завершится ошибкой. Последовательность:
- Предупредите пользователей и попросите выйти. Проверить, что база свободна, можно в пользовательском режиме:
Администрирование → Поддержка и обслуживание → Активные пользователи. - Сделайте выгрузку:
set V8="C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe"
%V8% DESIGNER /F "D:\Bases\Buh" /N "Админ" /P "123" /DisableStartupDialogs /DumpIB "D:\Backup\Buh_before.dt" /Out "D:\Upd\buh.log"
- Загрузите обновление и примените его к базе:
%V8% DESIGNER /F "D:\Bases\Buh" /N "Админ" /P "123" /DisableStartupDialogs /DisableStartupMessages /UpdateCfg "D:\Upd\3_0_160\1Cv8.cfu" /UpdateDBCfg /Out "D:\Upd\buh.log" -NoTruncate /DumpResult "D:\Upd\buh.res"
- Запустите базу в пользовательском режиме, чтобы отработали обработчики обновления. В типовых конфигурациях на БСП это делается параметром запуска:
%V8% ENTERPRISE /F "D:\Bases\Buh" /N "Админ" /P "123" /C "ЗапуститьОбновлениеИнформационнойБазы"
Последний шаг часто пропускают. Конфигурация уже новая, но данные ещё не переведены под неё. Первый пользователь утром увидит окно «Обновление версии программы» и будет ждать. Лучше пройти этот этап сразу, ночью.
Если между релизами большой разрыв, один .cfu не подойдёт. Обновляйте по цепочке: каждый следующий файл должен принимать текущий релиз как исходный. После каждого звена — /UpdateDBCfg.
4. Обновление серверной базы 1С через консоль
Для клиент-серверной базы вместо /F пишут /S "сервер\база". Если кластер работает не на стандартном порту, порт указывают через двоеточие: /S "srv1c:1641\Buh". Права в Windows здесь не важны: доступ к данным идёт через сервер 1С.
Главное отличие — сеансы. На сервере всегда кто-то висит: фоновые задания, забытые клиенты, веб-сервисы. Их нужно погасить до обновления.
Блокировка сеансов через rac
Утилита rac лежит в каталоге bin платформы и работает через сервер администрирования ras. Порядок:
- Узнайте идентификатор кластера:
rac cluster list. - Узнайте идентификатор базы:
rac infobase summary list --cluster=<id кластера>. - Запретите новые сеансы и регламентные задания, задав код разрешения:
rac infobase update --cluster=<id кластера> --infobase=<id базы> --infobase-user="Админ" --infobase-pwd="123" --sessions-deny=on --scheduled-jobs-deny=on --permission-code="upd77" --denied-message="Идёт обновление"
- Завершите оставшиеся сеансы: список —
rac session list --cluster=<id кластера> --infobase=<id базы>, завершение —rac session terminate --cluster=<id кластера> --session=<id сеанса>.
Завершение сеанса обрывает работу пользователя без сохранения. Делайте это в согласованное окно, когда пользователей предупредили.
Если на кластере задан администратор, добавьте к командам --cluster-user и --cluster-pwd. Если какие-то параметры не принимаются вашей версией, смотрите rac help infobase — список опций зависит от релиза платформы.
Сама команда обновления
%V8% DESIGNER /S "srv1c\Buh" /N "Админ" /P "123" /UC "upd77" /DisableStartupDialogs /UpdateCfg "D:\Upd\1Cv8.cfu" /UpdateDBCfg -Server /Out "D:\Upd\buh_srv.log" /DumpResult "D:\Upd\buh_srv.res"
Код /UC совпадает с --permission-code: без него Конфигуратор не войдёт в заблокированную базу. Параметр -Server у /UpdateDBCfg переносит реструктуризацию на сторону сервера. Для больших баз это заметно быстрее и не зависит от связи с машиной, где запущен скрипт.
После обновления снимите блокировку той же командой rac infobase update с --sessions-deny=off и --scheduled-jobs-deny=off. Затем запустите обработчики обновления через ENTERPRISE ... /C "ЗапуститьОбновлениеИнформационнойБазы", как в разделе 3.
В конфигурациях на БСП блокировку можно ставить и без rac: параметр запуска /C "ЗавершитьРаботуПользователей" с кодом /UC. Снимается она параметром /C "РазрешитьРаботуПользователей". Это удобно, если доступа к серверу администрирования нет.
5. Пакетное обновление нескольких баз одним скриптом
Когда баз много, параметры выносят в отдельный файл, а скрипт идёт по нему в цикле. Пример файла bases.txt, по строке на базу:
F;D:\Bases\Buh_Romashka;D:\Upd\BP\1Cv8.cfu
F;D:\Bases\Buh_Lutik;D:\Upd\BP\1Cv8.cfu
S;srv1c\ZUP_Main;D:\Upd\ZUP\1Cv8.cfu
Первое поле — тип базы (F или S), второе — путь или строка соединения, третье — файл обновления для этой конфигурации. Скрипт update_all.bat:
@echo off
chcp 1251 >nul
set V8="C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe"
set USR=Админ
set PWD=123
set LOG=D:\Upd\logs
if not exist %LOG% mkdir %LOG%
for /f "usebackq tokens=1-3 delims=;" %%a in ("D:\Upd\bases.txt") do (
echo [%date% %time%] Начало: %%b>> %LOG%\summary.log
if "%%a"=="F" (set CONN=/F "%%b") else (set CONN=/S "%%b")
call :upd "%%b" "%%c"
)
goto :eof
:upd
set NAME=%~1
set NAME=%NAME:\=_%
set NAME=%NAME::=_%
start "" /wait %V8% DESIGNER %CONN% /N "%USR%" /P "%PWD%" /DisableStartupDialogs /DisableStartupMessages /UpdateCfg "%~2" /UpdateDBCfg /Out "%LOG%\%NAME%.log" /DumpResult "%LOG%\%NAME%.res"
set /p RES=<"%LOG%\%NAME%.res"
echo [%date% %time%] %~1 : код %RES%>> %LOG%\summary.log
goto :eof
Что здесь важно:
- 🔁
start "" /waitзаставляет скрипт дождаться конца обновления базы. Без него все базы запустятся одновременно. - 🔤
chcp 1251нужен, если в путях и именах пользователей есть кириллица, а bat сохранён в кодировке Windows-1251. - 🧾 Итоговый
summary.logдаёт одну таблицу по всем базам: где код0, всё прошло, где1— смотрите лог этой базы. - 🔐 Пароль в открытом виде в bat — компромисс. Храните скрипт в каталоге, куда есть доступ только у администратора.
Запуск по расписанию настраивается в Планировщике заданий Windows: действие «Запуск программы», программа — путь к update_all.bat. Включите опцию выполнения независимо от входа пользователя.
6. Обновление платформы 1С через консоль
Новая конфигурация часто требует новую платформу, поэтому её обновление тоже стоит автоматизировать. Дистрибутив платформы для Windows содержит пакет .msi, который ставится штатным msiexec без окон:
msiexec /i "D:\Distr\8.3.25\1CEnterprise 8 (x86-64).msi" /qn TRANSFORMS=1049.mst DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1 /l*v "D:\Distr\install.log"
/qn— тихая установка без интерфейса.TRANSFORMS=1049.mst— русский язык интерфейса установщика и платформы.DESIGNERALLCLIENTS,THINCLIENT,THINCLIENTFILE— устанавливаемые компоненты: Конфигуратор с толстым клиентом, тонкий клиент, тонкий клиент для файловых баз./l*v— подробный журнал установки, первый источник при ошибке.
Каждая версия встаёт в свой каталог C:\Program Files\1cv8\8.3.xx.xxxx, старая не удаляется. Поэтому в bat-скриптах путь к 1cv8.exe прописывают с номером версии. Так вы точно знаете, какой платформой обновляете базу.
Обновление серверной части 1С требует остановки службы агента сервера. При остановке оборвутся все сеансы на кластере. Делайте это только в регламентное окно, после предупреждения пользователей.
Для новых версий платформы есть и отдельная утилита ibcmd, которая работает с базой без запуска Конфигуратора. Её команды и ключи заметно меняются от релиза к релизу. Прежде чем строить на ней скрипты, сверьтесь со встроенной справкой ibcmd help.
7. Журнал обновления и разбор ошибок
Пакетный режим не показывает окон с ошибками. Всё, что пошло не так, оказывается в файле из /Out. Код из /DumpResult говорит только «получилось или нет», причину ищите в журнале.
Удобный порядок разбора:
- Откройте
summary.logи найдите базы с кодом1. - Откройте лог этой базы и посмотрите последние строки: там текст ошибки, на которой платформа остановилась.
- Если лог пустой, Конфигуратор не запустился вовсе. Проверьте путь к
1cv8.exe, кавычки и строку соединения: запустите ту же команду вручную без/DisableStartupDialogs.
rac и завершите оставшиеся.Если обновление оборвалось на середине
Если процесс прервали во время /UpdateDBCfg (выключили сервер, сняли задачу), база может остаться в незавершённом состоянии. Не запускайте обновление повторно вслепую. Откройте базу в Конфигураторе вручную и посмотрите, что сообщает платформа. Если база не открывается или ведёт себя странно, восстановите её из .dt, сделанного перед обновлением, и повторите операцию.