Как заставить 1С работать без человека: пакетный запуск, ключи и расписание

· 9 мин

Содержание

Пакетный режим 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

Порядок, который не ломает базу

  1. Сделайте выгрузку /DumpIB в отдельном вызове и убедитесь, что код результата 0.
  2. Установите блокировку сеансов с кодом разрешения — тем же, что передаёте в /UC.
  3. Завершите сеансы пользователей.
  4. Запустите /UpdateCfg и /UpdateDBCfg.
  5. Снимите блокировку.
  6. Откройте базу в режиме 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: платформа не гарантирует, что код возврата процесса совпадёт с результатом операции. Файл результата надёжнее.

Для аудита пригодится и журнал регистрации базы: там видно сеанс служебного пользователя, время начала и конца, и ошибки, возникшие в прикладном коде обработки.

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

Что ещё можно делать без конфигуратора

Тестирование и исправление базы запускается тем же способом. Пример для пересчёта итогов и переиндексации:

"%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-файле открытым текстом?
Можно настроить для служебного пользователя аутентификацию Windows и запускать задание под этой учётной записью без /N и /P. Второй вариант — ограничить права на папку со скриптами только администраторами.
Работает ли пакетный режим с базой, опубликованной на веб-сервере?
Для режима ENTERPRISE подключение к базе по адресу задаётся ключом /WS. Команды конфигуратора вроде /DumpIB выполняют на сервере, где база доступна напрямую, файлом или через кластер.
Сколько хранить ночные выгрузки .dt?
Ориентир — 7 ежедневных копий и 4 еженедельных. Старые файлы удаляйте тем же скриптом, например командой forfiles с параметром возраста файла.
Почему выгрузка .dt большой базы идёт дольше, чем копирование её файлов?
Выгрузка проверяет и упаковывает данные в формат платформы, это медленнее копирования. Зато .dt разворачивается на другой версии платформы и на другой СУБД, а копия файлов — нет.
Можно ли запустить сразу несколько баз одним скриптом?
Да: перечислите базы в цикле for по текстовому списку и вызывайте 1cv8.exe по очереди. Запуск параллельно не нужен — он упрётся в лицензии и нагрузку на диск.