Автоматизация · 11 мин
Как запустить внешнюю обработку 1С из командной строки
Как запустить внешнюю обработку 1С из командной строки: параметры запуска, Execute, пакетный режим, примеры команд, типичные ошибки и проверка результата.
Запуск внешней обработки (.epf) из командной строки — стандартный способ автоматизировать рутинные операции в 1С: загрузку данных, формирование отчётов по расписанию, обмен с другими системами. Платформа 1С позволяет указать файл обработки прямо в строке запуска через параметр /Execute, а также передать в обработку собственные параметры через /C.
Такой подход не требует доработки конфигурации: достаточно знать путь к исполняемому файлу платформы, строку подключения к информационной базе и путь к файлу обработки. Дальше команду можно встроить в планировщик заданий Windows, bat-файл или скрипт оркестратора.
В статье разобраны все ключевые параметры командной строки, отличия файлового и клиент-серверного режимов, приёмы передачи параметров внутрь обработки, проверка результата выполнения и типичные ошибки, из-за которых обработка «молча» не запускается.
Какие исполняемые файлы и режимы запуска использовать
Платформа 1С:Предприятие 8 поставляется с несколькими исполняемыми файлами. Для запуска внешней обработки в пользовательском режиме используется 1cv8.exe (толстый клиент), 1cv8c.exe (тонкий клиент) или 1cv8s.exe (интерактивный выбор). Внешние обработки в режиме «Предприятие» открываются толстым и тонким клиентом; выбор зависит от того, как настроена ваша база и где выполняется код обработки.
Ключевой параметр — режим запуска ENTERPRISE. Именно он указывает платформе открыть информационную базу в пользовательском режиме, в котором доступно выполнение внешних обработок. Режим DESIGNER (конфигуратор) внешние обработки в пользовательском контексте не выполняет — он нужен для пакетных операций с конфигурацией.
Путь к платформе обычно выглядит как C:\Program Files\1cv8\<номер_версии>\bin\1cv8.exe. Если на компьютере установлено несколько версий платформы, указывайте конкретную версию, совместимую с вашей конфигурацией, иначе возможна ошибка несовпадения версий.
Базовый синтаксис команды запуска
Минимальная команда запуска внешней обработки для файловой базы состоит из пути к платформе, режима, строки подключения и параметра /Execute:
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Trade" /N"Администратор" /P"Secret" /Execute"D:\Scripts\UploadData.epf"
Назначение параметров:
ENTERPRISE— режим запуска «Предприятие»;/F"путь"— путь к каталогу файловой информационной базы;/S"Сервер\ИмяБазы"— адрес базы в клиент-серверном варианте (вместо /F);/N"имя"и/P"пароль"— учётные данные пользователя; если пароль пустой, параметр /P можно опустить;/Execute"путь.epf"— полный путь к файлу внешней обработки;/C"строка"— произвольная строка параметров, доступная в коде обработки.
Все пути, содержащие пробелы или кириллицу, обязательно заключайте в кавычки. Параметры разделяются пробелами, порядок их следования значения не имеет.
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /S"server\TradeBase" /N"Robot" /P"Pass123" /Execute"D:\Scripts\Report.epf" /C"Период=Месяц"Запуск в файловом и клиент-серверном режимах
Для файловой базы достаточно параметра /F с путём к каталогу, где лежит файл 1Cv8.1CD. Убедитесь, что у учётной записи, от имени которой выполняется команда, есть права на чтение и запись в этот каталог, а база не заблокирована монопольно другим сеансом.
В клиент-серверном варианте вместо /F используется /S с указанием имени сервера и базы через обратный слэш: /S"appserver\ut_base". Если кластер работает на нестандартном порту, укажите его: /S"appserver:1541\ut_base". Также для баз, опубликованных на веб-сервере, существует параметр /WS с адресом публикации — он применяется при подключении тонкого клиента через HTTP.
Дополнительно полезны параметры /DisableStartupDialogs (подавляет стартовые диалоги) и /DisableStartupMessages (отключает стартовые сообщения) — без них обработка может «зависнуть», ожидая реакции пользователя на окно, которое никто не увидит при фоновом запуске.
Передача параметров внутрь обработки через /C
Строка, переданная в параметре /C, доступна в коде обработки через системную переменную ПараметрЗапуска. Это основной способ сделать одну обработку универсальной: например, передавать период отчёта, путь к файлу обмена или режим работы.
Пример чтения параметра в модуле обработки:
Если НЕ ПустаяСтрока(ПараметрЗапуска) Тогда
Части = СтрРазделить(ПараметрЗапуска, ";");
// ПараметрЗапуска = "Режим=Загрузка;Файл=D:\data.xml"
КонецЕсли;
Учитывайте ограничение: вся строка /C — это один параметр, поэтому внутри неё нельзя использовать кавычки без экранирования, а специальные символы командного интерпретатора (например, & или | в cmd) нужно экранировать или избегать. Надёжный шаблон — пары «ключ=значение», разделённые точкой с запятой.
Как обеспечить автоматическое завершение сеанса
Главная проблема фонового запуска: после выполнения обработки сеанс 1С остаётся открытым и держит лицензию и соединение с базой. Чтобы сеанс завершался сам, в коде обработки после выполнения основной логики вызовите ЗавершитьРаботуСистемы(Ложь) — параметр «Ложь» отключает запрос подтверждения.
Если обработка открывается с формой, разместите логику в обработчике ПриОткрытии формы и завершайте работу после выполнения. Если обработка должна работать без формы, реализуйте экспортную процедуру в модуле объекта и вызывайте её из кода, который платформа выполняет при открытии.
Альтернатива — планировщик заданий Windows с принудительным завершением процесса по таймауту, но это грубый метод: принудительное снятие процесса может оставить незавершённые транзакции. Используйте его только как страховку, а не как основной механизм.
Настройка запуска по расписанию
Для регулярного выполнения команду оформляют в bat-файл и добавляют в планировщик заданий Windows. Пример bat-файла с записью кода возврата:
@echo off
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Trade" /N"Robot" /P"Pass" /Execute"D:\Scripts\Daily.epf" /DisableStartupDialogs
echo %date% %time% Код завершения: %errorlevel% >> D:\Scripts\run.log
В планировщике задайте запуск от имени служебной учётной записи с правами на каталог базы и включите опцию «Выполнять независимо от входа пользователя», если задание должно работать на сервере без активной сессии. Учтите: без интерактивного сеанса некоторые визуальные операции (например, вывод табличного документа в окно) работать не будут — обработка должна быть рассчитана на фоновое выполнение.
- 1Проверьте обработку вручную: откройте её в режиме Предприятия под тем же пользователем, что будет указан в /N.
- 2Добавьте в код обработки чтение ПараметрЗапуска и вызов ЗавершитьРаботуСистемы(Ложь).
- 3Соберите команду с /Execute и протестируйте её в командной строке.
- 4Оформите команду в bat-файл с записью журнала и добавьте в планировщик заданий.
- 5Проверьте журнал и данные в базе после первого автоматического запуска.
Проверка результата и типичные ошибки
Признак успешного запуска — процесс 1cv8.exe стартовал, отработал и завершился, а ожидаемые изменения появились в базе. Если процесс зависает, чаще всего виноваты модальные диалоги: запрос пароля, предупреждение безопасности при открытии внешней обработки или стартовые окна конфигурации.
Обратите внимание на диалог «Предупреждение безопасности» при открытии внешних файлов — в новых версиях платформы он может блокировать автоматический запуск. Отключить его можно в настройках пользователя (Сервис — Параметры — снятие флажка контроля открытия внешних файлов) либо через профиль безопасности в клиент-серверном режиме. Делайте это осознанно: механизм защищает от запуска вредоносного кода.
Как проверить результат
Появился и завершился через ожидаемое время
Висит дольше обычного или не появился вовсе
Ожидаемые документы/записи созданы или обновлены
Изменений нет — обработка не дошла до основного кода
Код завершения 0, ошибок в журнале регистрации нет
Ошибки аутентификации, блокировок или открытия файла
Часто задаваемые вопросы
Можно ли запустить обработку без открытия окна 1С?
Полностью без интерфейса внешняя обработка через /Execute не работает — сеанс Предприятия всё равно создаётся. Можно минимизировать проявления: убрать стартовые диалоги параметрами /DisableStartupDialogs и /DisableStartupMessages и запускать задание на сервере без активной пользовательской сессии. Для полностью фоновых задач лучше подходят регламентные задания конфигурации.
Почему обработка открывается, но код не выполняется?
Параметр /Execute открывает обработку, то есть показывает её форму или выполняет код модуля, связанный с открытием. Если логика привязана к кнопке на форме, она не запустится сама — перенесите её в обработчик ПриОткрытии или в экспортную процедуру, вызываемую при инициализации.
Как передать несколько параметров через /C?
Весь набор передаётся одной строкой, например: /C"Режим=Загрузка;Файл=D:\data.xml;Период=01.01". В коде обработки строка разбирается функцией СтрРазделить по разделителю. Избегайте внутри строки кавычек и символов, которые интерпретирует командная оболочка.
Работает ли запуск через тонкий клиент 1cv8c.exe?
Да, синтаксис параметров тот же. Ограничение в том, что тонкий клиент не поддерживает часть возможностей толстого (например, некоторые операции с COM и OLE). Если обработка использует такие механизмы, запускайте её через толстый клиент 1cv8.exe.
Как скрыть пароль из командной строки?
Полностью скрыть пароль в параметре /P нельзя — он виден в списке процессов и в bat-файле. Снижайте риск: создайте отдельного пользователя 1С с минимально необходимыми правами, ограничьте доступ к bat-файлу на уровне NTFS, а при возможности используйте аутентификацию операционной системы (параметр /WA+), когда пароль вообще не требуется.
Что делать, если появляется окно «Предупреждение безопасности»?
Это защита платформы от открытия непроверенных внешних файлов. Для конкретного пользователя её можно отключить в настройках (Сервис — Параметры), а в клиент-серверном режиме — настроить профиль безопасности кластера. Отключайте защиту только для служебной учётной записи автозапуска, не для всех пользователей.
Что важно запомнить
Запуск внешней обработки из командной строки строится на связке ENTERPRISE + /Execute, параметрах подключения /F или /S и передаче данных через /C. Для автоматизации обязательны: завершение сеанса из кода обработки, подавление стартовых диалогов, тестирование под служебным пользователем и журналирование результатов.