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

· 9 мин

Содержание

Внешняя обработка запускается из командной строки ключом /Execute: 1cv8.exe ENTERPRISE /F"C:\Bases\Buh" /N"Робот" /P"пароль" /Execute"C:\Obr\Выгрузка.epf". Платформа открывает базу и сразу показывает основную форму обработки, без меню «Файл → Открыть».

Частое заблуждение — что /Execute сам «выполняет» обработку и закрывает 1С. Нет: ключ только открывает форму. Чтобы задача отработала без человека и 1С завершилась, нужен код в самой обработке. Ниже — строки запуска, этот код, параметры, планировщик и разбор сбоев.

Из чего состоит строка запуска 1С с обработкой

Строка собирается из четырёх частей: исполняемый файл, режим, адрес базы и ключи.

ЧастьПримерЗачем
Исполняемый файл"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"Конкретная версия платформы
РежимENTERPRISEПользовательский режим (не Конфигуратор)
База/F"C:\Bases\Buh" или /S"srv1c\buh"Какую информационную базу открыть
Пользователь/N"Робот" /P"пароль" или /WA+Авторизация без окна входа
Обработка/Execute"C:\Obr\Выгрузка.epf"Что открыть после старта
Параметр/C"режим=выгрузка"Строка для кода обработки

Полезные дополнительные ключи:

  • 🔇 /DisableStartupMessages — подавляет стартовые предупреждения (например, о несовпадении конфигурации).
  • 🚫 /DisableStartupDialogs — не показывает стартовые диалоги; если авторизация не прошла, 1С не будет ждать ввода пароля.
  • 🔐 /WA+ / /WA- — включить или запретить вход по учётной записи Windows.
  • 🗂 /IBName"Бухгалтерия" — открыть базу по имени из списка баз, а не по пути.

Указывайте полный путь к 1cv8.exe нужной версии, а не ярлык 1cestart.exe. Лаунчер сам выбирает версию платформы, и после установки новой сборки обработка может открыться не той, на которой вы её проверяли.

Путь к .epf с пробелами обязательно берите в кавычки. Кириллица в пути допустима, но в bat-файле нужна правильная кодировка — об этом в разделе про планировщик.

Строка запуска для файловой и клиент-серверной базы

Разница только в ключе адреса базы. Всё остальное одинаково.

Файловая база

Ключ /F и путь к каталогу, где лежит 1Cv8.1CD. Сам файл 1Cv8.1CD в пути не указывайте.

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Torgovlya" /N"Робот" /P"Qw12345" /DisableStartupMessages /Execute"D:\Obr\ZagruzkaCen.epf"

Если база на сетевой папке, пишите UNC-путь: /F"\\fileserver\1c\Torgovlya". Подключённая буква диска в задании планировщика часто не видна — у задания своя сессия.

Клиент-серверная база

Ключ /S в формате сервер\имя_базы. Имя базы — то, что зарегистрировано в кластере, а не название в списке у пользователя.

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /S"srv1c\buh_main" /N"Робот" /P"Qw12345" /Execute"C:\Obr\Vygruzka.epf"

Если кластер работает не на стандартном порту, порт указывают после имени сервера: /S"srv1c:2541\buh_main".

Путь к .epf в серверном варианте — путь на компьютере, где запущен клиент, а не на сервере 1С. Файл обработки открывает клиентское приложение.

ФайловаяКлиент-серверная
Ключ базы/F"каталог"/S"сервер\база"
Где лежит .epfНа компьютере клиентаНа компьютере клиента
Узкое местоБлокировки файла базы при работе пользователейЛицензия и доступность кластера
Альтернатива расписаниюНет регламентных заданий без отдельного запускаРегламентные задания на сервере

Ключ /Execute и передача параметров в обработку

Сам по себе /Execute откроет основную форму обработки и будет ждать. Чтобы запуск был «без рук», форма должна сама начать работу и сама закрыть 1С.

Код для управляемой формы

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПодключитьОбработчикОжидания("ВыполнитьПакетно", 1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПакетно()
	Режим = ПараметрЗапуска; // строка из ключа /C
	Результат = ВыполнитьНаСервере(Режим);
	ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

&НаСервере
Функция ВыполнитьНаСервере(Режим)
	// здесь основная работа: запросы, запись документов, выгрузка
	Возврат Истина;
КонецФункции

ЗавершитьРаботуСистемы(Ложь) закрывает 1С без вопроса пользователю. Без этой строки процесс 1cv8.exe останется висеть, а планировщик будет считать задачу выполняющейся.

Как передать параметры: ключ /C

Всё, что указано после /C, попадает в глобальное свойство ПараметрЗапуска в виде одной строки. Несколько значений удобно передавать через разделитель.

... /Execute"C:\Obr\Vygruzka.epf" /C"период=20260101;склад=Основной"

Разобрать строку в обработке:

&НаКлиенте
Функция РазобратьПараметры(Строка)
	Параметры = Новый Соответствие;
	Для Каждого Пара Из СтрРазделить(Строка, ";", Ложь) Цикл
		Части = СтрРазделить(Пара, "=");
		Если Части.Количество() = 2 Тогда
			Параметры.Вставить(СокрЛП(Части[0]), СокрЛП(Части[1]));
		КонецЕсли;
	КонецЦикла;
	Возврат Параметры;
КонецФункции

СтрРазделить есть в платформе 8.3.6 и новее. Кавычки внутри значения /C не используйте: командная строка их съест. Если нужно передать сложные данные, передайте путь к файлу с настройками и читайте его.

Сделайте в обработке «ручной» режим: если ПараметрЗапуска пустой, форма просто открывается для пользователя. Так одну обработку можно и запускать по расписанию, и проверять руками.

Автозапуск обработки через bat-файл и планировщик Windows

bat-файл

Удобнее вызывать из планировщика не 1cv8.exe напрямую, а bat-файл. В нём проще менять параметры и писать свой журнал.

@echo off
chcp 65001 > nul
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set LOG=D:\Obr\logs\run_%date:~-4%%date:~3,2%%date:~0,2%.txt

echo %date% %time% старт >> %LOG%
start "" /wait %V8% ENTERPRISE /S"srv1c\buh_main" /WA+ /DisableStartupMessages /DisableStartupDialogs /Execute"D:\Obr\Vygruzka.epf" /C"режим=ночь"
echo %date% %time% завершено >> %LOG%
  • ⏳ start "" /wait — bat ждёт закрытия 1С, а не идёт дальше сразу.
  • 🔤 chcp 65001 и сохранение файла в UTF-8 нужны, если в путях или параметрах есть кириллица. Иначе 1С получит «кракозябры».
  • 📅 Выражение для имени журнала зависит от формата даты в Windows. Проверьте его на своём сервере командой echo %date%.

Задание в планировщике

Задание можно создать в «Планировщике заданий» Windows или одной командой:

schtasks /Create /TN "1C\Vygruzka" /TR "D:\Obr\run_vygruzka.bat" /SC DAILY /ST 03:00 /RU "DOMAIN\svc_1c" /RP *
  1. Запускайте задание от служебной учётной записи, у которой есть права на каталог обработки, журнала и (для файловой базы) на каталог базы.
  2. На вкладке «Параметры» задайте «Остановить задачу, если она выполняется дольше» — например, 2 часа. Это страховка от зависания на неожиданном диалоге.
  3. Если используете /WA+, привяжите эту учётную запись Windows к пользователю 1С на вкладке аутентификации в карточке пользователя.

Пароль в ключе /P виден в свойствах задания и в списке процессов. Для рабочих баз лучше вход по учётной записи Windows через /WA+, а bat-файл держать в каталоге, доступном только администраторам.

Проверка перед постановкой на расписание

Прежде чем доверить задачу планировщику, прогоните её вручную:

  1. Откройте командную строку от имени той же учётной записи, что указана в задании (runas /user:DOMAIN\svc_1c cmd).
  2. Запустите bat-файл и посмотрите, открывается ли 1С без диалогов и закрывается ли сама.
  3. Проверьте журнал bat-файла, файл-маркер и журнал регистрации базы.
  4. Запустите задание в планировщике командой «Выполнить» и убедитесь, что поле «Результат последнего запуска» показывает успешное завершение.

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

Каждый запуск занимает лицензию клиента на время работы. Ночью это не проблема, а днём при полностью занятых лицензиях обработка просто не запустится.

Как контролировать результат: журнал и ошибки

Закрытие 1С не говорит, что работа прошла успешно. ЗавершитьРаботуСистемы не возвращает код выхода, поэтому %ERRORLEVEL% в bat-файле по результату обработки ориентироваться нельзя.

Рабочая схема — три уровня контроля:

  1. Журнал регистрации. В обработке пишите события через ЗаписьЖурналаРегистрации("Выгрузка.Ночная", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки()). Смотреть их — в журнале регистрации базы с отбором по имени события.
  2. Файл-маркер. В конце успешной работы обработка создаёт файл, например D:\Obr\logs\ok_20260107.txt. bat-файл после start /wait проверяет if exist и пишет в свой журнал «успех» или «ошибка».
  3. Попытка-Исключение. Всю серверную часть оберните в Попытка ... Исключение ... КонецПопытки. Иначе необработанная ошибка покажет окно с сообщением, и 1С не закроется.
&НаСервере
Функция ВыполнитьНаСервере(Режим)
	Попытка
		// основная работа
		ТекстовыйФайл = Новый ЗаписьТекста("D:\Obr\logs\ok.txt");
		ТекстовыйФайл.ЗаписатьСтроку(Строка(ТекущаяДата()));
		ТекстовыйФайл.Закрыть();
		Возврат Истина;
	Исключение
		ЗаписьЖурналаРегистрации("Выгрузка.Ночная", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		Возврат Ложь;
	КонецПопытки;
КонецФункции

Код с &НаСервере в клиент-серверной базе пишет файл на сервере 1С, а не на компьютере, где работает планировщик. Путь к маркеру должен существовать там, где выполняется код, и у пользователя службы сервера 1С должны быть права на запись.

Типичные сбои и что с ними делать:

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

Толстый и тонкий клиент: какой выбрать для обработки

Ключ /Execute работает и в толстом клиенте (1cv8.exe), и в тонком (1cv8c.exe). Но поведение разное.

Толстый клиент 1cv8.exeТонкий клиент 1cv8c.exe
Обычные формы обработокДа, с ключом /RunModeOrdinaryApplicationНет
Управляемые формыДа (ключ /RunModeManagedApplication)Да
Подключение по /SДаДа
Код на клиентеВ режиме обычного приложения может читать данные базы напрямуюТолько через серверные вызовы

Когда что выбирать:

  • 🧱 Обработка старая, с обычной формой — только толстый клиент и /RunModeOrdinaryApplication. Тонкий её не откроет.
  • ☁️ База опубликована через веб-сервер и нет прямого доступа к кластеру — тонкий клиент 1cv8c.exe с ключом /WS"https://server/buh" вместо /S.
  • ⚙️ Новая обработка на управляемых формах — подойдёт любой, но толстый клиент проще: работает с файловой базой и в серверном варианте без лишних нюансов.

Если обработка разработана в одной конфигурации, а запускается в другой, проверьте платформу: обработка, сохранённая в более новой версии платформы, может не открыться в базе, где стоит платформа с номером ниже.

Когда обработку лучше не запускать из командной строки

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

  • 🕒 Регламентное задание. В клиент-серверной базе задачу можно встроить в конфигурацию или расширение как регламентное задание. Его выполняет сервер 1С по расписанию, без клиента и без планировщика Windows.
  • 📦 Дополнительные обработки БСП. В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) внешнюю обработку подключают в разделе Администрирование → Печатные формы, отчёты и обработки (в УТ 11 раздел называется НСИ и администрирование). Для обработок, которые это поддерживают, команды можно выполнять по расписанию прямо из 1С.
  • 🔌 COM-соединение или внешние скрипты. Подходят, когда задача целиком серверная и форма вообще не нужна.

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

Можно ли запустить обработку в фоне, без окна 1С?
Нет. Ключ /Execute всегда поднимает клиентский сеанс с окном. Работу без интерфейса даёт регламентное задание на сервере или COM-соединение.
Можно ли запустить одной командой обработку сразу в нескольких базах?
Одной строкой — нет, ключ /F или /S принимает одну базу. В bat-файле перечислите базы и вызовите 1cv8 для каждой по очереди через start /wait.
Подойдёт ли внешний отчёт .erf вместо .epf?
Да, /Execute открывает и внешние отчёты. Логика та же: код автозапуска пишется в форме отчёта.
Что будет, если в базе в это время работают пользователи?
Обработка запустится как обычный сеанс и будет работать параллельно с ними. Монопольный доступ для этого не нужен, но тяжёлая запись документов может ждать блокировок.
Как передать в обработку дату?
Через /C строкой, например «период=20260101», и преобразовать в коде функцией Дата(). Формат «ГГГГММДД» платформа разбирает без доп. обработки.