Как заставить 1С работать без человека: пакетный запуск, ключи и расписание
Содержание
Пакетный режим 1С — это запуск 1cv8.exe из командной строки с набором ключей, после которого платформа сама выполняет действие (выгрузку базы, обновление конфигурации
, запуск обработки) и закрывается без участия пользователя. Настраивается он одной строкой в .bat-файле, а запуск по времени даёт Планировщик заданий Windows.
Механизм общий для платформы 8.3 и не зависит от конфигурации: одни и те же ключи работают в Бухгалтерии, ЗУП, УТ и самописных базах. Ниже — синтаксис, рабочие примеры и то, на чём такие сценарии обычно ломаются.
Что такое пакетный режим 1С и зачем он нужен
В обычной работе 1С ждёт человека: окно выбора базы, ввод пароля, кнопки «ОК». В пакетном режиме все ответы передаются заранее, в параметрах командной строки. Платформа стартует, делает работу, пишет результат в файл и завершается.
Где это применяют на практике:
- 💾 Ночная выгрузка в .dt — резервная копия файловой или серверной базы средствами 1С.
- 🔄 Обновление конфигурации — применение
.cfuи обновление структуры базы, пока никто не работает . - 📤 Регламентные обработки — обмен данными, загрузка курсов, выгрузка на сайт через внешнюю обработку .
- 🛠 Тестирование и исправление — проверка целостности базы, пересчёт итогов.
- 📦 Обслуживание десятков баз — один скрипт проходит по списку и делает одно и то же везде.
Различают два режима запуска:
| Режим | Ключ | Что умеет |
|---|---|---|
| Конфигуратор | DESIGNER | выгрузка/загрузка .dt и .cf, обновление конфигурации, тестирование базы |
| 1С:Предприятие | ENTERPRISE | запуск внешней обработки, передача параметра в прикладной код |
Именно DESIGNER с ключами-командами называют пакетным режимом конфигуратора. Запуск ENTERPRISE с обработкой — это автоматизированный клиентский сеанс: он открывает интерфейс, просто без участия человека.
Синтаксис командной строки 1cv8.exe и основные ключи
Общая схема:
"C:\Program Files\1cv8\8.3.24.1467\bin\1cv8.exe" <РЕЖИМ> <база> <пользователь> <команда> <служебные ключи>
Запускайте 1cv8.exe из папки конкретной версии, а не 1cestart.exe. Стартер сам выбирает версию платформы, и после установки новой сборки скрипт может уйти не туда.
Ключи подключения к базе
| Ключ | Назначение | Пример |
|---|---|---|
/F | путь к файловой базе | /F"D:\Bases\Buh" |
/S | серверная база: сервер\имя базы | /S"srv1c\buh_prod" |
/N | имя пользователя 1С | /N"Администратор" |
/P | пароль | /P"Pa$$w0rd" |
/WA- | отключить вход по учётной записи Windows | /WA- |
/UC | код разрешения для входа в заблокированную базу | /UC"12345" |
/WA- нужен, если в базе включена аутентификация Windows: без него платформа попробует войти под учётной записью, от которой запущен скрипт, и не возьмёт /N.
Служебные ключи, без которых скрипт зависает
- 📝
/Out"C:\Logs\upd.log"— сообщения платформы пишутся в файл. С добавкой-NoTruncateфайл дописывается, а не перезаписывается. - 🔢
/DumpResult"C:\Logs\result.txt"— в файл пишется код результата:0— успешно,1— ошибка. Это самый надёжный способ проверить итог из скрипта. - 🔇
/DisableStartupMessages— подавляет стартовые предупреждения (например, о несовпадении конфигураций). - 🚫
/DisableStartupDialogs— не показывает окно выбора базы и диалог авторизации. Если параметров не хватает, запуск завершится ошибкой, а не будет ждать человека.
Команды конфигуратора
| Команда | Что делает |
|---|---|
/DumpIB"file.dt" | выгрузка информационной базы в .dt |
/RestoreIB"file.dt" | загрузка базы из .dt (полностью заменяет данные) |
/DumpCfg"file.cf" | выгрузка конфигурации в .cf |
/LoadCfg"file.cf" | загрузка конфигурации из .cf |
/UpdateCfg"file.cfu" | обновление конфигурации на поддержке файлом поставки |
/UpdateDBCfg | обновление конфигурации базы данных (применение структуры) |
/IBCheckAndRepair | тестирование и исправление базы |
Полный перечень ключей с подпараметрами есть во встроенной справке платформы (раздел о параметрах командной строки) — сверяйтесь с ней, если нужен редкий ключ.
Как запустить внешнюю обработку или отчёт в пакетном режиме 1С
Для обработки используют режим ENTERPRISE и ключ /Execute:
"C:\Program Files\1cv8\8.3.24.1467\bin\1cv8.exe" ENTERPRISE /S"srv1c\buh_prod" /N"robot" /P"secret" /WA- /Execute"C:\Scripts\exchange.epf" /C"АВТО" /DisableStartupMessages /DisableStartupDialogs
Платформа откроет базу и сразу откроет основную форму обработки. Дальше всё решает код в самой обработке: он должен выполнить работу и закрыть сеанс. Иначе 1С так и останется висеть с открытой формой.
Ключ /C передаёт произвольную строку, которая в коде доступна через свойство ПараметрЗапуска. Так одну обработку можно запускать и вручную, и по расписанию:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если СтрНайти(ПараметрЗапуска, "АВТО") > 0 Тогда
ВыполнитьОбменНаСервере();
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыполнитьОбменНаСервере()
// здесь основная работа обработки:
// загрузка файла, создание документов, выгрузка
КонецПроцедуры
ЗавершитьРаботуСистемы(Ложь) закрывает программу без вопроса пользователю. Если параметра «АВТО» нет, форма открывается как обычно.
С внешним отчётом работает тот же приём: .erf открывается через /Execute, а формирование и сохранение результата в файл пишется в коде формы.
В платформе 8.3 есть защита от опасных действий: при открытии внешней обработки из файла она показывает предупреждение и ждёт ответа. В пакетном запуске это означает вечное ожидание. Для служебного пользователя снимите флажок «Защита от опасных действий» в его свойствах: Конфигуратор → Администрирование → Пользователи. Делайте это только для отдельной учётной записи робота, а не для всех.
💡 Заведите для автоматических запусков отдельного пользователя 1С (например, robot) с минимально нужными правами. В журнале регистрации сразу видно, что сделал скрипт, а что — живые люди.
Автоматическое обновление конфигурации через пакетный режим
Обновление конфигурации на поддержке — это две операции: применить файл обновления и обновить структуру базы. В одном вызове конфигуратора:
"%V8%\1cv8.exe" DESIGNER /S"srv1c\buh_prod" /N"Администратор" /P"secret" /WA- /UC"12345" /UpdateCfg"D:\Updates\1Cv8.cfu" /UpdateDBCfg /Out"D:\Logs\update.log" -NoTruncate /DumpResult"D:\Logs\update_result.txt" /DisableStartupMessages /DisableStartupDialogs
Порядок, который не ломает базу
- Сделайте выгрузку
/DumpIBв отдельном вызове и убедитесь, что код результата0. - Установите блокировку сеансов с кодом разрешения — тем же, что передаёте в
/UC. - Завершите сеансы пользователей.
- Запустите
/UpdateCfgи/UpdateDBCfg. - Снимите блокировку.
- Откройте базу в режиме 1С:Предприятие — при первом запуске программа выполнит обработчики обновления данных.
Обновление структуры требует монопольного доступа: пока в базе есть хотя бы один сеанс, /UpdateDBCfg завершится ошибкой. Это одна из немногих операций, где монопольный режим обязателен, наряду с загрузкой .dt, тестированием и исправлением.
Завершение сеансов обрывает работу пользователей: несохранённые документы пропадут. Запускайте обновление ночью или в согласованное окно и предупредите людей заранее.
Блокировка сеансов из командной строки
В серверной базе блокировку ставят в консоли администрирования кластера: в свойствах информационной базы включают блокировку начала сеансов и задают код разрешения. В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть штатный вариант через запуск:
"%V8%\1cv8.exe" ENTERPRISE /S"srv1c\buh_prod" /N"Администратор" /P"secret" /WA- /C"ЗавершитьРаботуПользователей" /UC"12345" /DisableStartupMessages
Программа включит блокировку, дождётся выхода пользователей и завершит оставшиеся сеансы. После обновления блокировку снимают запуском с /C"РазрешитьРаботуПользователей" и тем же /UC. Интерактивно та же функция находится в разделе Администрирование — команда «Блокировка работы пользователей».
В файловой базе блокировки сеансов кластера нет: пользователи должны выйти сами, либо их отключают перечисленным способом через БСП.
Обновление после .cf, а не .cfu
Если конфигурация снята с поддержки или у вас готовый .cf, вместо /UpdateCfg используют /LoadCfg. Учтите: /LoadCfg полностью заменяет конфигурацию. Доработки, которых нет в файле, будут потеряны. Для доработанных баз так делают только после сравнения и объединения в конфигураторе вручную.
Запуск 1С по расписанию в Планировщике заданий Windows
Скрипт для ночной выгрузки базы:
@echo off
chcp 65001 > nul
set V8=C:\Program Files\1cv8\8.3.24.1467\bin
set LOG=D:\Logs
set D=%date:~-4%-%date:~3,2%-%date:~0,2%
"%V8%\1cv8.exe" DESIGNER /S"srv1c\buh_prod" /N"robot" /P"secret" /WA- /DumpIB"\\nas\backup\buh_%D%.dt" /Out"%LOG%\dump.log" -NoTruncate /DumpResult"%LOG%\dump_result.txt" /DisableStartupMessages /DisableStartupDialogs
set /p RES=<"%LOG%\dump_result.txt"
if not "%RES%"=="0" (
echo %date% %time% ОШИБКА выгрузки, код %RES% >> "%LOG%\errors.log"
exit /b 1
)
exit /b 0
Строка chcp 65001 нужна, если в путях или именах пользователей есть кириллица, а файл сохранён в UTF-8. Без неё cmd прочитает русские буквы как мусор, и 1С не найдёт пользователя. Альтернатива — сохранить .bat в кодировке 866 (OEM).
Формат даты в %date% зависит от региональных настроек Windows. Пример выше рассчитан на русскую локаль вида 16.10.2026 — проверьте на своём сервере командой echo %date%.
Создание задания
Через графический интерфейс: Панель управления → Администрирование → Планировщик заданий → «Создать задачу
». Или одной командой от имени администратора:
schtasks /Create /TN "1C\DumpBuh" /TR "D:\Scripts\dump_buh.bat" /SC DAILY /ST 02:00 /RU "DOMAIN\svc1c" /RP *
Ключ /RP * запросит пароль учётной записи интерактивно, чтобы он не остался в истории команд.
На что смотреть в свойствах задания
- 👤 Учётная запись. Включите «Выполнять для всех пользователей» — иначе задание идёт только при входе в систему.
- 📂 Сетевые пути. Подключённые диски вроде
Z:в задании не видны. Используйте UNC-пути:\\nas\backup. - 🔑 Права. У учётной записи должен быть доступ к каталогу файловой базы и папке выгрузки.
- ⏱ Ограничение времени. По умолчанию задача прерывается через 3 дня; для обновлений больших баз проверьте, что лимит не оборвёт работу посреди реструктуризации.
- 🔁 Пересечения. Не ставьте выгрузку и обновление одной базы на одно время — второй запуск упрётся в монопольный режим.
Пакетный запуск по-прежнему использует лицензию 1С. Если свободных лицензий в момент старта нет, база не откроется, и в логе будет ошибка получения лицензии. Ночью это редко проблема, но для запусков днём заложите запас.
Логирование и разбор ошибок пакетного запуска
Код из /DumpResult отвечает на вопрос «получилось или нет». Ответ на вопрос «почему» лежит в файле /Out. Проверяйте оба.
Не полагайтесь на %ERRORLEVEL% после вызова 1cv8.exe: платформа не гарантирует, что код возврата процесса совпадёт с результатом операции. Файл результата надёжнее.
Для аудита пригодится и журнал регистрации базы: там видно сеанс служебного пользователя, время начала и конца, и ошибки, возникшие в прикладном коде обработки.
/DisableStartupDialogs и /DisableStartupMessages; для внешней обработки снимите у служебного пользователя защиту от опасных действий и проверьте, что код вызывает ЗавершитьРаботуСистемы(Ложь)./UC и завершите сеансы. Перед завершением предупредите людей — их работа оборвётся./WA-. Если в имени кириллица — проверьте кодировку .bat и строку chcp.1cv8.exe, к базе или в ключе /DumpResult. Запустите строку вручную в cmd и посмотрите на сообщение.Что ещё можно делать без конфигуратора
Тестирование и исправление базы запускается тем же способом. Пример для пересчёта итогов и переиндексации:
"%V8%\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"secret" /IBCheckAndRepair -ReIndex -RecalcTotals /Out"D:\Logs\check.log" /DumpResult"D:\Logs\check_result.txt" /DisableStartupDialogs
Перед тестированием сделайте выгрузку: режим исправления меняет данные, и откатить его можно только из копии.
Для серверных баз в современных версиях платформы есть отдельная утилита ibcmd, которая выгружает и загружает базы без запуска конфигуратора и без графической оболочки. А управление кластером (список баз, сеансы, блокировки) автоматизируют утилитой rac: например, rac cluster list выводит кластеры, rac session list — сеансы. Набор подкоманд большой, смотрите справку rac help.
Частые вопросы о пакетном запуске
Можно ли не хранить пароль 1С в bat-файле открытым текстом?
/N и /P. Второй вариант — ограничить права на папку со скриптами только администраторами.Работает ли пакетный режим с базой, опубликованной на веб-сервере?
ENTERPRISE подключение к базе по адресу задаётся ключом /WS. Команды конфигуратора вроде /DumpIB выполняют на сервере, где база доступна напрямую, файлом или через кластер.Сколько хранить ночные выгрузки .dt?
forfiles с параметром возраста файла.Почему выгрузка .dt большой базы идёт дольше, чем копирование её файлов?
Можно ли запустить сразу несколько баз одним скриптом?
for по текстовому списку и вызывайте 1cv8.exe по очереди. Запуск параллельно не нужен — он упрётся в лицензии и нагрузку на диск.