Как обновлять базы 1С 8.3 без открытия Конфигуратора: ключи 1cv8.exe, пакетный режим и логи

· 10 мин

Содержание

Чтобы обновить 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 не сможет её захватить и завершится ошибкой. Последовательность:

  1. Предупредите пользователей и попросите выйти. Проверить, что база свободна, можно в пользовательском режиме: Администрирование → Поддержка и обслуживание → Активные пользователи.
  2. Сделайте выгрузку:
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"
  1. Загрузите обновление и примените его к базе:
%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"
  1. Запустите базу в пользовательском режиме, чтобы отработали обработчики обновления. В типовых конфигурациях на БСП это делается параметром запуска:
%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. Порядок:

  1. Узнайте идентификатор кластера: rac cluster list.
  2. Узнайте идентификатор базы: rac infobase summary list --cluster=<id кластера>.
  3. Запретите новые сеансы и регламентные задания, задав код разрешения:
rac infobase update --cluster=<id кластера> --infobase=<id базы> --infobase-user="Админ" --infobase-pwd="123" --sessions-deny=on --scheduled-jobs-deny=on --permission-code="upd77" --denied-message="Идёт обновление"
  1. Завершите оставшиеся сеансы: список — 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. Включите опцию выполнения независимо от входа пользователя.

Перед ночным запуском пакета
Выполнено: 0 / 5

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 говорит только «получилось или нет», причину ищите в журнале.

Удобный порядок разбора:

  1. Откройте summary.log и найдите базы с кодом 1.
  2. Откройте лог этой базы и посмотрите последние строки: там текст ошибки, на которой платформа остановилась.
  3. Если лог пустой, Конфигуратор не запустился вовсе. Проверьте путь к 1cv8.exe, кавычки и строку соединения: запустите ту же команду вручную без /DisableStartupDialogs.
Диагностика: выберите симптом

Если обновление оборвалось на середине

Если процесс прервали во время /UpdateDBCfg (выключили сервер, сняли задачу), база может остаться в незавершённом состоянии. Не запускайте обновление повторно вслепую. Откройте базу в Конфигураторе вручную и посмотрите, что сообщает платформа. Если база не открывается или ведёт себя странно, восстановите её из .dt, сделанного перед обновлением, и повторите операцию.

8. Частые вопросы

Можно ли обновить 1С из командной строки без пароля администратора?
Нет. Пакетному режиму нужен пользователь с полными правами. Если в базе один пользователь без пароля, ключ /P можно не указывать.
Как понять, что база действительно обновилась?
Откройте её в пользовательском режиме и проверьте номер в окне «О программе». Для пакета надёжнее ориентироваться на код 0 в файле /DumpResult.
Нужно ли закрывать Конфигуратор перед запуском скрипта?
Да. Открытый Конфигуратор этой же базы держит конфигурацию, и команда завершится ошибкой блокировки.
Чем обновление по cfu отличается от загрузки cf?
CFU обновляет конфигурацию на поддержке и сохраняет связь с поставщиком. Загрузка cf через /LoadCfg заменяет конфигурацию целиком, доработки при этом теряются.
Можно ли обновлять несколько файловых баз параллельно?
Технически можно, но обновление нагружает диск. На одном сервере надёжнее идти по очереди через start /wait, а параллелить только базы на разных дисках.