Как настроить автообновление 1С без ручного запуска
Содержание
Обновление запускают из командной строки: платформа 1cv8.exe в режиме DESIGNER принимает ключи /UpdateCfg и /UpdateDBCfg, а планировщик заданий Windows вызывает такой .bat ночью. Ручного клика «Обновить конфигурацию
базы данных» при этом не нужно — конфигуратор сам загрузит поставку и перестроит структуру базы.
Есть два уровня автоматизации, и выбирают их по ситуации. Встроенное автообновление из раздела интернет-поддержки годится для одной рабочей базы с активной подпиской ИТС: сотрудник один раз настраивает регламент, дальше программа сама скачивает релиз. Пакетный режим конфигуратора плюс скрипт нужен там, где баз несколько, обновление идёт по расписанию на сервере и требуется журнал результатов. Ниже — рабочая схема второго варианта: от прав доступа до разбора кода возврата.
С чего начать: права, копии и тестовый контур
Автоматизация без подготовки превращается в способ сломать все базы разом по расписанию. Поэтому до первого скрипта закройте базовые вопросы.
🔹 Отдельная учётная запись. Заведите в каждой информационной базе служебного пользователя (например, Updater) с правом administer/запуск конфигуратора. Скрипт будет логиниться под ним, а не под живым бухгалтером.
🔹 Доступ к дистрибутивам. Решите, откуда берутся поставки обновлений. Файл 1cv8.cfu (поставка обновления конфигурации) либо кладут в общую папку вручную, либо скачивают через механизм интернет-поддержки. Для скачивания нужен логин и пароль портала 1С и действующая подписка ИТС.
🔹 Учётная запись Windows для задачи. Планировщик будет запускать .bat под доменной или локальной учёткой. Дайте ей права на папки с базами, логами и резервными копиями и разрешение «Вход в качестве пакетного задания».
🔹 Тестовая база. Обкатайте скрипт на копии рабочей базы, прежде чем ставить в расписание боевые. Обновление структуры — операция необратимая без восстановления из копии.
Пакетное обновление структуры базы (/UpdateDBCfg) требует монопольного доступа: все сеансы пользователей должны быть завершены. Если в момент запуска кто-то работает в базе, конфигуратор либо встанет в ожидание, либо завершится с ошибкой. Поэтому расписание ставят на ночь и добавляют блокировку начала сеансов (см. ниже).
Чем обновлять: встроенный механизм против пакетного режима
Инструмент зависит от того, что и сколько вы обновляете.
| Способ | Когда подходит | Что умеет |
|---|---|---|
| Встроенное обновление версии программы | Одна-две базы, есть подписка ИТС | Скачивает и ставит релиз конфигурации по расписанию внутри базы |
Пакетный запуск 1cv8 DESIGNER | Много баз, нужен журнал, свои поставки | Копия, загрузка .cfu, обновление структуры, код возврата |
Тихая установка платформы (msiexec) | Обновление самого 1cv8 на клиентах/сервере | Разворачивает новую версию платформы без диалогов |
Консоль кластера / rac | Клиент-серверный вариант | Блокировка сеансов, список соединений, запуск обновления |
Встроенный механизм живёт в типовых конфигурациях на Библиотеке стандартных подсистем: Администрирование → Интернет-поддержка и сервисы → Обновление версии программы. Там же включается проверка и установка обновлений по расписанию через регламентное задание. При настройке указывают, когда проверять наличие релизов и устанавливать ли их автоматически или только скачивать с уведомлением ответственного. Минус — он обновляет только конфигурацию (не платформу) и работает в пределах одной базы, поэтому для парка из десятка баз его приходится настраивать в каждой отдельно.
Пакетный режим — основа для серверной автоматизации. Одной командой платформа делает резервную копию, загружает поставку и перестраивает структуру. Результат пишется в лог и в код возврата, который проверяет .bat.
Обновление самой платформы 1cv8 — отдельная задача: тут обновляется не конфигурация, а исполняемые файлы. Его автоматизируют тихой установкой нового дистрибутива.
Скрипт обновления: копия, поставка, перестроение базы
Разберём пакетный запуск для файловой базы. Команды даны в две стадии: сначала резервная копия, потом обновление. Путь к 1cv8.exe указывайте с номером конкретной версии платформы — не через каталог без версии.
Шаг 1. Резервная копия базы
в формате .dt.
set V8="C:\Program Files\1cv8\8.3.24.1234\bin\1cv8.exe"
set BASE=/F"D:\bases\accounting"
set AUTH=/N"Updater" /P"ПарольСлужебный"
%V8% DESIGNER %BASE% %AUTH% /DumpIB "D:\backup\acc.dt" /Out"D:\log\dump.log" /DisableStartupDialogs
Ключ /DumpIB выгружает информационную базу целиком. /DisableStartupDialogs убирает стартовые диалоги, чтобы процесс не ждал клика. /Out пишет протокол операции в файл.
Шаг 2. Загрузка поставки и обновление структуры.
%V8% DESIGNER %BASE% %AUTH% /UpdateCfg "D:\upd\1cv8.cfu" /UpdateDBCfg /Out"D:\log\update.log" /DisableStartupDialogs
if %ERRORLEVEL% neq 0 (
echo ОШИБКА обновления, код %ERRORLEVEL% >> D:\log\update.log
exit /b %ERRORLEVEL%
)
/UpdateCfg загружает файл поставки 1cv8.cfu в основную конфигурацию. /UpdateDBCfg применяет изменения к структуре базы данных — это и есть аналог кнопки «Обновить конфигурацию базы данных». Если нужно динамическое обновление без монопольного доступа (когда изменения структуры позволяют), добавляют /UpdateDBCfg -Dynamic+, но в скрипте по расписанию надёжнее монопольный режим.
Проверяйте %ERRORLEVEL% после каждого запуска конфигуратора. 1cv8 возвращает 0 при успехе и ненулевой код при ошибке. Без этой проверки скрипт «молча» пройдёт дальше даже после сбоя, и вы узнаете о проблеме только утром от пользователей.
Для клиент-серверной базы меняется только способ подключения: вместо /F"путь" указывают /S"Сервер\ИмяБазы". Остальные ключи те же.
Если поставок несколько (цепочка релизов), применяйте их последовательно: каждый .cfu рассчитан на конкретную исходную версию. Проще обновляться на свежий релиз через промежуточные, чем искать «перепрыгивающую» поставку.
Запуск по расписанию через планировщик Windows
Готовый .bat ставят в планировщик заданий (taskschd.msc) или создают задачу командой schtasks.
schtasks /Create /TN "Обновление 1С Бухгалтерия" /TR "D:\scripts\update_1c.bat" ^
/SC WEEKLY /D SUN /ST 02:00 /RU "DOMAIN\Updater" /RP "ПарольWindows" /RL HIGHEST
Разбор ключей:
/TN— имя задачи, по нему её потом видно в списке./TR— что запускать (ваш пакетный файл)./SC WEEKLY /D SUN /ST 02:00— расписание: еженедельно, в воскресенье, в 02:00./RUи/RP— учётная запись Windows и её пароль; под ней выполняется задача./RL HIGHEST— запуск с наивысшими правами.
В графическом планировщике то же самое настраивается на вкладках «Триггеры» (когда запускать) и «Действия» (что запускать). На вкладке «Общие» поставьте «Выполнять вне зависимости от регистрации пользователя» — иначе задача не отработает на сервере без активного сеанса.
Проверьте, что путь к 1cv8.exe в скрипте указывает на актуальную версию платформы. После обновления платформы номер версии в пути меняется, и задача со старым путём перестанет находить исполняемый файл.
Чтобы обновление не наложилось на вечерний закрытый период или на другой тяжёлый процесс, разнесите по времени резервное копирование средствами СУБД и обновление 1С.
Тихая установка платформы 1С
Когда выходит новая версия платформы, её тоже можно разворачивать без диалогов — на терминальном сервере или на парке клиентских машин.
Платформа ставится обычным установщиком Windows, поэтому подходит msiexec с ключом тихого режима:
msiexec /i "D:\dist\8.3.24.1234\1CEnterprise 8.msi" /qn /norestart
/qn — установка без интерфейса, /norestart — не перезагружать машину автоматически. Набор устанавливаемых компонентов (клиент, сервер, администрирование) задаётся свойствами установщика; точный перечень свойств для конкретной версии смотрите в документации к дистрибутиву, а не подбирайте наугад.
После установки новой платформы прежние версии остаются на диске — 1С не удаляет их автоматически. Это удобно: базы продолжают запускаться на своей версии через механизм выбора версии, а вы переводите их на новую постепенно.
На терминальном сервере обновляйте платформу в окно, когда никто не работает: файлы 1cv8 заняты запущенными сеансами, и установщик не сможет их заменить.
Журнал и разбор ошибок обновления
Автоматизация без журнала бесполезна: вы не узнаете, прошло обновление или упало. Минимум — два файла на каждый запуск: протокол операции (/Out) и общий лог скрипта с датой и кодом возврата.
Добавьте в .bat отметку времени и результата:
echo [%date% %time%] Старт обновления >> D:\log\history.log
%V8% DESIGNER %BASE% %AUTH% /UpdateCfg "D:\upd\1cv8.cfu" /UpdateDBCfg /Out"D:\log\update.log" /DisableStartupDialogs
echo [%date% %time%] Завершено, код %ERRORLEVEL% >> D:\log\history.log
Содержимое /Out-файла — это протокол конфигуратора: что именно он делал и на каком шаге остановился. Код возврата говорит о факте успеха, а текст в логе — о причине сбоя.
1cv8.exe: путь указывает на удалённую версию платформы. Пропишите актуальный номер версии в переменной пути..cfu рассчитана на другую исходную версию конфигурации. Возьмите промежуточные релизы и примените их по очереди.Настройте оповещение: пусть скрипт при ненулевом коде отправляет письмо или сообщение в мессенджер. Тогда о неудачном ночном обновлении вы узнаете до начала рабочего дня, а не от бухгалтера.
Автообновление в клиент-серверном варианте
В клиент-серверной базе добавляется этап: перед /UpdateDBCfg нужно освободить базу от пользователей, иначе монопольный доступ не получить.
Порядок такой:
- Включить блокировку начала сеансов — чтобы новые пользователи не заходили, пока идёт обновление.
- Завершить активные сеансы и отключить регламентные задания.
- Запустить обновление структуры пакетным режимом.
- Снять блокировку — вернуть базу пользователям.
Самый наглядный способ управления — консоль администрирования кластера: в свойствах информационной базы есть флаги «Блокировка начала сеансов» и «Блокировка регламентных заданий», а в ветке «Сеансы» видно, кто подключён.
Из скрипта тем же управляет утилита rac (обращается к серверу администрирования ras). Посмотреть кластеры и сеансы:
rac cluster list
rac session list --cluster=<uuid-кластера>
Для блокировки сеансов и запуска обновления у rac есть команда rac infobase ... update с параметрами запрета сеансов. Точный набор параметров для вашей версии платформы уточните командой rac help — состав ключей от версии к версии дополняется, и придумывать их наугад нельзя.
Прежде чем завершать сеансы пользователей или отключать регламентные задания, убедитесь, что это окно обслуживания. Принудительное завершение оборвёт незаписанные документы у тех, кто ещё работает. Блокировку начала сеансов включайте заранее, а активные сеансы завершайте только после предупреждения.
После обновления обязательно снимите обе блокировки — иначе утром пользователи увидят сообщение о том, что вход разрешён только администратору.
Полный серверный скрипт поэтому состоит из пяти шагов: включить блокировку начала сеансов → завершить оставшиеся сеансы → снять резервную копию базы → применить поставку и обновить структуру → снять блокировки и вернуть регламентные задания. Между блокировкой и завершением сеансов полезно выдержать паузу в несколько минут: пользователи успеют завершить документы и выйти сами, и принудительно обрывать придётся меньше соединений. Если обновляете несколько баз на одном кластере, обрабатывайте их по очереди, а не одновременно — так проще разобрать по логам, на какой базе произошёл сбой, и сервер не упирается в ресурсы.
Частые вопросы
Можно ли автоматически обновлять базовую версию 1С?
Нужна ли подписка ИТС для автообновления?
.cfu в папку вручную, пакетный скрипт применит его и без обращения к порталу.Обновится ли платформа этим же скриптом?
1cv8 DESIGNER обновляет конфигурацию и структуру базы. Саму платформу (1cv8) обновляют отдельно — тихой установкой нового дистрибутива через msiexec.Что будет, если во время ночного обновления в базе остался пользователь?
/UpdateDBCfg не получится. Конфигуратор завершится с ненулевым кодом возврата, а структура базы не изменится. Поэтому в клиент-серверном варианте перед обновлением включают блокировку начала сеансов.Как откатить неудачное обновление?
.dt, которую скрипт делает на первом шаге: 1cv8 DESIGNER /F"путь" /RestoreIB "backup.dt". Поэтому копию снимают до загрузки поставки, а не после.