Запуск 1С:Предприятия из скрипта: параметры 1cv8, внешние обработки и расписание

· 9 мин

Содержание

Программно запустить 1С:Предприятие 8.3 можно тремя способами: вызвать 1cv8.exe с параметрами командной строки, подключиться к базе через COM-объект V83.COMConnector или поднять клиент через OLE-автоматизацию V83.Application. Самый простой вариант — строка вида 1cv8.exe ENTERPRISE /F "C:\Bases\Buh" /N Робот /P 123: она открывает файловую базу под нужным пользователем без окна выбора.

Командная строка подходит для запуска обработок, выгрузки и обновления базы по расписанию. COM нужен, когда внешняя программа должна читать или писать данные 1С без интерфейса. OLE — когда нужен видимый клиент, которым управляет скрипт. Всё описанное относится к платформе в целом и не зависит от конфигурации: Бухгалтерия, ЗУП и УТ запускаются одинаково.

Какой исполняемый файл вызывать

В каталоге установки платформы лежат несколько программ, и для скриптов они не равнозначны.

ФайлГде лежитДля чего в скриптах
1cestart.exeC:\Program Files\1cv8\common\Стартер: сам выбирает версию платформы, показывает список баз
1cv8.exeC:\Program Files\1cv8\8.3.xx.xxxx\bin\Толстый клиент и Конфигуратор, все ключи пакетного режима
1cv8c.exeтам же, в binТонкий клиент: только режим 1С:Предприятие, без Конфигуратора

Для автоматизации берите 1cv8.exe конкретной версии. Стартер удобен людям, но в скрипте он может открыть не ту платформу, если их на компьютере несколько.

💡 Чтобы скрипт не ломался после обновления платформы, вынесите путь к bin в переменную в начале bat-файла. Тогда при переходе на новую сборку правится одна строка.

Запуск 1С из командной строки: базовый синтаксис

Первым аргументом идёт режим запуска, затем ключи. Режимов три:

  • 🟢 ENTERPRISE — пользовательский режим (1С:Предприятие);
  • 🛠 DESIGNER — Конфигуратор, в том числе пакетный;
  • 📁 CREATEINFOBASE — создание новой информационной базы.

Файловая база задаётся ключом /F, серверная — ключом /S в формате сервер\имя_базы:

rem Файловая база
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F "C:\Bases\Buh" /N "Робот" /P "123"

rem Серверная база
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /S "srv1c\buh_main" /N "Робот" /P "123"

Если база уже есть в списке баз пользователя Windows, её можно открыть по имени из списка: /IBName "Бухгалтерия предприятия". Для скриптов это хуже: список баз у каждого пользователя свой, и под учётной записью планировщика нужной строки может не оказаться.

Если в базе включена аутентификация Windows, пароль не нужен. Ключ /WA+ заставляет войти под текущим пользователем ОС, /WA- — запрещает такой вход и требует /N и /P.

Пароль в bat-файле лежит открытым текстом. Заведите для скриптов отдельного пользователя 1С с минимальными правами и закройте папку со скриптами от посторонних.

Параметры командной строки 1cv8 для автоматизации

Ключей у платформы десятки, но для скриптов хватает полутора десятков. Сводная таблица:

КлючЧто делает
/F "путь"путь к каталогу файловой базы
/S "сервер\база"адрес серверной базы
/N "имя" /P "пароль"пользователь и пароль 1С
/WA+ /WA-разрешить или запретить вход через аутентификацию Windows
/C "строка"передать строку в базу, читается через ПараметрЗапуска
/Execute "файл.epf"открыть внешнюю обработку сразу после запуска
/DisableStartupMessagesподавить стартовые предупреждения
/DisableStartupDialogsне показывать стартовые диалоги, в том числе окно ввода пароля
/Out "файл.txt"писать служебные сообщения в файл вместо окон
/DumpResult "файл.txt"записать код результата пакетной операции (0 — успех)
/UC "код"код разрешения входа при установленной блокировке сеансов
/ClearCacheочистить кэш клиента перед стартом
/RunModeOrdinaryApplicationоткрыть толстый клиент в режиме обычного приложения
/L ruязык интерфейса платформы

Ключ /C — главный инструмент передачи команд в базу. Всё, что после него в кавычках, конфигурация получает как строку в глобальном свойстве ПараметрЗапуска. Дальше код модуля приложения разбирает её и решает, что делать.

В типовых конфигурациях на БСП часть таких команд уже обработана. Самая известная пара — /C "ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы": база выполняет обработчики обновления после смены релиза и закрывается сама.

Пакетный режим конфигуратора: выгрузка и обновление без окон

Режим DESIGNER с пакетными ключами выполняет операцию и закрывается, не показывая интерфейс. Так делают ночные выгрузки и обновление конфигурации .

Пример выгрузки базы в файл .dt с журналом:

@echo off
chcp 65001 >nul
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set STAMP=%date:~6,4%-%date:~3,2%-%date:~0,2%

%V8% DESIGNER /F "C:\Bases\Buh" /N "Админ" /P "secret" ^
  /DumpIB "D:\Backup\buh_%STAMP%.dt" ^
  /Out "D:\Backup\log_%STAMP%.txt" ^
  /DumpResult "D:\Backup\result_%STAMP%.txt" ^
  /DisableStartupDialogs

Другие часто используемые пакетные команды:

  1. /UpdateDBCfg — обновить конфигурацию базы данных из основной конфигурации.
  2. /LoadCfg "файл.cf" — загрузить конфигурацию из файла , затем обычно идёт /UpdateDBCfg.
  3. /DumpCfg "файл.cf" — сохранить конфигурацию в файл.
  4. /RestoreIB "файл.dt" — загрузить базу из выгрузки.

/RestoreIB полностью заменяет данные базы содержимым файла. Ошибка в пути к базе в скрипте — и вы перезапишете рабочую базу. Для загрузки .dt и обновления структуры базы нужен монопольный доступ: все пользователи должны выйти, их сеансы будут прерваны. Запускайте такие операции вне рабочего времени и с предупреждением.

Строку с датой %date:~6,4% проверьте на своём сервере: формат даты зависит от региональных настроек Windows. Для русской локали (08.10.2026) пример даёт 2026-10-08.

💡 chcp 65001 нужен, чтобы кириллица в путях и именах пользователей не превратилась в нечитаемые символы. Альтернатива — сохранить bat-файл в кодировке OEM 866 и обойтись без смены кодовой страницы.

Запуск внешней обработки при старте 1С

Ключ /Execute открывает внешнюю обработку сразу после входа. Так автоматизируют задачи, которые требуют пользовательского режима: загрузку выписок, формирование отчёта, рассылку.

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F "C:\Bases\Buh" ^
  /N "Робот" /P "123" /Execute "C:\Scripts\Zagruzka.epf" ^
  /C "Режим=Авто" /DisableStartupMessages

Чтобы обработка отработала без участия человека, логику кладут в обработчик ПриОткрытии основной формы. В конце работы обработка сама закрывает программу:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если СтрНайти(ПараметрЗапуска, "Режим=Авто") > 0 Тогда
        ВыполнитьЗагрузкуНаСервере();
        ЗавершитьРаботуСистемы(Ложь);
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ВыполнитьЗагрузкуНаСервере()
    // Здесь основная работа: чтение файла, запись документов
КонецПроцедуры

Параметр Ложь в ЗавершитьРаботуСистемы отключает вопрос «Завершить работу?». Без него сеанс зависнет в ожидании ответа, и следующий запуск по расписанию возьмёт ещё одну лицензию.

Две вещи, о которых часто забывают:

  • 🔐 Защита от опасных действий. У пользователя 1С есть одноимённый флажок в карточке (Конфигуратор: Администрирование → Пользователи). Пока он включён, при открытии внешней обработки платформа показывает предупреждение безопасности и ждёт нажатия кнопки. Для пользователя-робота флажок снимают.
  • 📂 Права на внешние обработки. В типовых конфигурациях на БСП у пользователя должно быть право интерактивно открывать внешние отчёты и обработки, иначе файл не откроется.

Подключение через COM и OLE: V83.COMConnector и V83.Application

COM-соединение (внешнее соединение) открывает базу без интерфейса. Внешняя программа — скрипт VBS, PowerShell, Python, другая база 1С — работает с объектами конфигурации, как серверный код.

Пример на VBScript, который подключается к файловой базе и выводит имя конфигурации:

Set Connector = CreateObject("V83.COMConnector")
Set Base = Connector.Connect("File=""C:\Bases\Buh"";Usr=""Робот"";Pwd=""123"";")
WScript.Echo Base.Metadata.Name
Set Base = Nothing

Для серверной базы строка соединения другая: Srvr="srv1c";Ref="buh_main";Usr="Робот";Pwd="123";. Через объект соединения доступны общие модули с флажком «Внешнее соединение», например Base.ОбменДанными.ВыгрузитьОстатки(), где ОбменДанными — ваш общий модуль.

OLE-автоматизация запускает полноценный клиент, которым управляет скрипт:

Set App = CreateObject("V83.Application")
App.Connect("File=""C:\Bases\Buh"";Usr=""Робот"";Pwd=""123"";")
App.Visible = True

Чем отличаются подходы:

СпособИнтерфейсСкорость стартаКогда выбирать
Командная строка 1cv8есть (или пакетный режим)средняяобработки по расписанию, выгрузка, обновление
COM V83.COMConnectorнетбыстраяинтеграции, чтение и запись данных из внешней программы
OLE V83.Applicationестьмедленнаянужен видимый клиент под управлением скрипта

Регистрация компонент

COM-объект живёт в библиотеке comcntr.dll. После установки или обновления платформы её регистрируют от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\comcntr.dll"

OLE-сервер регистрирует сам исполняемый файл: 1cv8.exe /RegServer.

Разрядность компоненты должна совпадать с разрядностью процесса, который её вызывает. Если стоит 32-битная платформа, VBS запускайте через C:\Windows\SysWOW64\cscript.exe, а не через обычный cscript.

Каждое COM-соединение и каждый OLE-клиент занимают клиентскую лицензию так же, как обычный сеанс. Закрывайте соединение явно, присваивая объекту Nothing.

Запуск по расписанию через Планировщик заданий Windows

Готовый bat-файл ставят в Планировщик заданий. Из командной строки задача создаётся так:

schtasks /Create /TN "1C_Vygruzka" /TR "C:\Scripts\backup_buh.bat" /SC DAILY /ST 02:00 /RU "DOMAIN\svc1c" /RP "пароль_учётки"

То же самое в графическом интерфейсе:

  1. Откройте taskschd.msc и выберите «Создать задачу » (не «простую»).
  2. На вкладке «Общие» укажите служебную учётную запись Windows.
  3. На вкладке «Триггеры» задайте время, например ежедневно в 02:00.
  4. На вкладке «Действия» укажите путь к bat-файлу и в поле «Рабочая папка» — каталог скрипта.
  5. На вкладке «Параметры» ограничьте время выполнения, чтобы зависший процесс не висел сутками.

Пакетный конфигуратор и COM-соединение работают и при режиме «Выполнять вне зависимости от регистрации пользователя». Запуск ENTERPRISE с открытием формы обработки надёжнее работает, когда служебный пользователь вошёл в систему: клиенту нужен рабочий стол. Если задача стартует, но ничего не делает, проверьте этот режим в первую очередь.

Чтобы bat-файл дождался окончания работы 1С перед следующими командами (архивация, копирование на другой диск), вызывайте клиент через start "" /wait:

start "" /wait %V8% DESIGNER /F "C:\Bases\Buh" /N "Админ" /P "secret" /DumpIB "D:\Backup\buh.dt"
Перед постановкой задачи на расписание
Выполнено: 0 / 6

Почему 1С не запускается из скрипта: ошибки и диагностика

Первый шаг всегда один: добавьте /Out "C:\Scripts\log.txt" и посмотрите текст ошибки. Окна при запуске из планировщика никто не видит, а журнал сохраняет всё.

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

Ещё две частые причины, которые журнал не покажет прямо:

  • 🔤 Пробелы в путях без кавычек. C:\Program Files\... без кавычек cmd режет на части, и 1С получает путь C:\Program.
  • 🧷 Удвоенные кавычки в строке соединения. В VBS кавычка внутри строки пишется как "". Одинарная кавычка обрывает строку, и скрипт падает с синтаксической ошибкой.

Частые вопросы

Можно ли запустить 1С без ввода пароля?
Да. Включите пользователю аутентификацию операционной системы и укажите в его карточке учётную запись Windows. Тогда запуск с ключом /WA+ входит без /N и /P.
Чем COM-соединение отличается от запуска 1cv8 с обработкой?
COM не поднимает интерфейс и стартует быстрее, код выполняется на сервере. Запуск 1cv8 с /Execute открывает полноценный клиент, и в нём доступны формы и клиентские методы.
Работает ли /Execute в тонком клиенте?
Да, 1cv8c.exe принимает /Execute для внешних обработок с управляемыми формами. Конфигуратор и пакетные команды вроде /DumpIB тонкий клиент не выполняет.
Как узнать, что пакетная выгрузка прошла успешно?
Прочитайте файл из /DumpResult: 0 означает успех, другое значение — ошибку. Подробности смотрите в журнале /Out.
Можно ли запускать 1С из PowerShell или Python?
Да. PowerShell вызывает 1cv8.exe через Start-Process с параметром -Wait и создаёт COM-объект через New-Object -ComObject V83.COMConnector. В Python для COM используют пакет pywin32.