Как настроить автообновление 1С без ручного запуска

· 9 мин

Содержание

Обновление запускают из командной строки: платформа 1cv8.exe в режиме DESIGNER принимает ключи /UpdateCfg и /UpdateDBCfg, а планировщик заданий Windows вызывает такой .bat ночью. Ручного клика «Обновить конфигурацию базы данных» при этом не нужно — конфигуратор сам загрузит поставку и перестроит структуру базы.

Есть два уровня автоматизации, и выбирают их по ситуации. Встроенное автообновление из раздела интернет-поддержки годится для одной рабочей базы с активной подпиской ИТС: сотрудник один раз настраивает регламент, дальше программа сама скачивает релиз. Пакетный режим конфигуратора плюс скрипт нужен там, где баз несколько, обновление идёт по расписанию на сервере и требуется журнал результатов. Ниже — рабочая схема второго варианта: от прав доступа до разбора кода возврата.

С чего начать: права, копии и тестовый контур

Автоматизация без подготовки превращается в способ сломать все базы разом по расписанию. Поэтому до первого скрипта закройте базовые вопросы.

🔹 Отдельная учётная запись. Заведите в каждой информационной базе служебного пользователя (например, Updater) с правом administer/запуск конфигуратора. Скрипт будет логиниться под ним, а не под живым бухгалтером.

🔹 Доступ к дистрибутивам. Решите, откуда берутся поставки обновлений. Файл 1cv8.cfu (поставка обновления конфигурации) либо кладут в общую папку вручную, либо скачивают через механизм интернет-поддержки. Для скачивания нужен логин и пароль портала 1С и действующая подписка ИТС.

🔹 Учётная запись Windows для задачи. Планировщик будет запускать .bat под доменной или локальной учёткой. Дайте ей права на папки с базами, логами и резервными копиями и разрешение «Вход в качестве пакетного задания».

🔹 Тестовая база. Обкатайте скрипт на копии рабочей базы, прежде чем ставить в расписание боевые. Обновление структуры — операция необратимая без восстановления из копии.

Пакетное обновление структуры базы (/UpdateDBCfg) требует монопольного доступа: все сеансы пользователей должны быть завершены. Если в момент запуска кто-то работает в базе, конфигуратор либо встанет в ожидание, либо завершится с ошибкой. Поэтому расписание ставят на ночь и добавляют блокировку начала сеансов (см. ниже).

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

Чем обновлять: встроенный механизм против пакетного режима

Инструмент зависит от того, что и сколько вы обновляете.

СпособКогда подходитЧто умеет
Встроенное обновление версии программыОдна-две базы, есть подписка ИТССкачивает и ставит релиз конфигурации по расписанию внутри базы
Пакетный запуск 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

Разбор ключей:

  1. /TN — имя задачи, по нему её потом видно в списке.
  2. /TR — что запускать (ваш пакетный файл).
  3. /SC WEEKLY /D SUN /ST 02:00 — расписание: еженедельно, в воскресенье, в 02:00.
  4. /RU и /RP — учётная запись Windows и её пароль; под ней выполняется задача.
  5. /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-файла — это протокол конфигуратора: что именно он делал и на каком шаге остановился. Код возврата говорит о факте успеха, а текст в логе — о причине сбоя.

Диагностика: выберите симптом

Настройте оповещение: пусть скрипт при ненулевом коде отправляет письмо или сообщение в мессенджер. Тогда о неудачном ночном обновлении вы узнаете до начала рабочего дня, а не от бухгалтера.

Автообновление в клиент-серверном варианте

В клиент-серверной базе добавляется этап: перед /UpdateDBCfg нужно освободить базу от пользователей, иначе монопольный доступ не получить.

Порядок такой:

  1. Включить блокировку начала сеансов — чтобы новые пользователи не заходили, пока идёт обновление.
  2. Завершить активные сеансы и отключить регламентные задания.
  3. Запустить обновление структуры пакетным режимом.
  4. Снять блокировку — вернуть базу пользователям.

Самый наглядный способ управления — консоль администрирования кластера: в свойствах информационной базы есть флаги «Блокировка начала сеансов» и «Блокировка регламентных заданий», а в ветке «Сеансы» видно, кто подключён.

Из скрипта тем же управляет утилита 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". Поэтому копию снимают до загрузки поставки, а не после.