Командный файл для 1С 8.3: от одной строки до сценария с журналом и проверкой результата

· 10 мин

Содержание

Чтобы запустить 1С через батник, создайте текстовый файл с расширением .bat и одной строкой: start "" "C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBName"Бухгалтерия". Двойной щелчок по такому файлу откроет нужную базу без окна выбора. Вместо имени из списка можно указать путь к файловой базе ключом /F или к серверной ключом /S, а логин и пароль передать ключами /N и /P.

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

Из чего состоит командный файл запуска 1С

Батник — это обычный текст, который выполняет cmd.exe строка за строкой. Для запуска 1С достаточно трёх элементов: путь к исполняемому файлу, режим запуска и параметры базы.

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

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

32-разрядная платформа ставится в C:\Program Files (x86)\1cv8\. Точный номер версии посмотрите в проводнике: это имя папки рядом с common.

Если указать в батнике 1cv8.exe с жёстким номером версии, после обновления платформы файл сломается. Для ежедневного запуска пользователями надёжнее 1cestart.exe, а для пакетных сценариев — переменная с версией в начале файла.

Минимальный рабочий шаблон

@echo off
set V8=C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe
start "" "%V8%" ENTERPRISE /F"D:\Bases\Buh" /N"Иванов" /P"123"

Что здесь важно:

  • 🔹 @echo off убирает вывод команд в окно консоли.
  • 🔹 Пустые кавычки после start — это заголовок окна. Без них start примет путь к программе за заголовок, и ничего не запустится.
  • 🔹 Пути с пробелами всегда берите в кавычки, включая Program Files.
  • 🔹 start не ждёт закрытия 1С: консоль сразу исчезает. Если нужно дождаться завершения (для пакетных операций), вызывайте программу без start или через start "" /wait.

Кириллица в батнике

Имена пользователей и баз часто русские, и тут ломается больше всего файлов. Блокнот по умолчанию сохраняет в UTF-8, а cmd.exe читает батник в кодировке консоли (обычно 866). В итоге 1С получает «кракозябры» вместо Иванов и пишет, что пользователь не найден.

Два рабочих варианта:

  1. Первой строкой после @echo off поставить chcp 65001 >nul и сохранить файл в UTF-8 без BOM.
  2. Сохранить файл в кодировке OEM 866 (в Notepad++: Кодировки → Кириллица → OEM 866).

С BOM первая строка файла превращается в мусор, и @echo off не срабатывает. Поэтому «UTF-8 с BOM» не подходит.

Ключи командной строки 1cv8: какие параметры передавать при запуске

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

Режимы

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

Основные ключи

КлючЧто делаетПример
/FПуть к каталогу файловой базы (где лежит 1Cv8.1CD)/F"D:\Bases\Buh"
/SСерверная база: сервер\имя_базы/S"srv1c\buh_2024"
/IBNameИмя базы из списка в окне запуска/IBName"Бухгалтерия"
/NИмя пользователя 1С/N"Иванов"
/PПароль пользователя 1С/P"secret"
/WA- / /WA+Запретить или разрешить аутентификацию Windows/WA-
/CСтрока параметра запуска для конфигурации/C"ЗапуститьОбновлениеИнформационнойБазы"
/ExecuteОткрыть внешнюю обработку сразу после старта/Execute"D:\Tools\obr.epf"
/DisableStartupMessagesНе показывать предупреждения при старте—
/DisableStartupDialogsНе показывать окно выбора базы и диалог входа—
/ClearCacheОчистить кэш клиента перед запуском—
/UCКод разрешения для входа в заблокированную базу/UC"12345"
/OutЗаписать служебные сообщения в файл/Out"D:\Logs\1c.log"
/DumpResultЗаписать код результата пакетной операции/DumpResult"D:\Logs\res.txt"

/IBName удобен тем, что база уже описана в списке пользователя, и батнику не нужно знать путь. Но имя должно совпадать со списком символ в символ. Список хранится в файле %APPDATA%\1C\1CEStart\ibases.v8i, оттуда имя проще всего скопировать.

Для серверной базы на нестандартном кластере добавьте порт менеджера: /S"srv1c:2541\buh". Для стандартного кластера порт не пишут.

Если указать /N, но не указать /P, а у пользователя есть пароль, 1С откроет окно входа. Для автоматических сценариев это означает зависание: батник будет ждать, пока кто-то введёт пароль.

Выбор клиента и режима приложения в батнике

Одна и та же база открывается по-разному в зависимости от исполняемого файла и ключей.

Толстый и тонкий клиент

  • 🖥 1cv8.exe ENTERPRISE — толстый клиент. Он нужен для обычных форм, старых обработок и пакетного Конфигуратора.
  • 🪶 1cv8c.exe ENTERPRISE — тонкий клиент. Меньше нагружает компьютер, работает с файловыми, серверными и опубликованными на веб-сервере базами. Конфигуратор в нём не запускается.

Для опубликованной базы вместо /F и /S используйте ключ /WS с адресом публикации: /WS"https://1c.company.ru/buh".

Обычное и управляемое приложение

Толстому клиенту можно явно задать режим:

  • /RunModeOrdinaryApplication — обычное приложение (старые формы). Сработает только если конфигурация это поддерживает и у пользователя есть право на толстый клиент.
  • /RunModeManagedApplication — управляемое приложение, интерфейс «Такси».

Это полезно, когда нужна старая внешняя обработка на обычных формах, а пользователь по умолчанию работает в «Такси».

Пакетный Конфигуратор

Командный файл чаще всего пишут ради ночных операций без участия человека. Пример выгрузки базы в .dt:

@echo off
chcp 65001 >nul
set V8=C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe
set LOG=D:\Logs
"%V8%" DESIGNER /F"D:\Bases\Buh" /N"Админ" /P"pass" /DisableStartupDialogs /DumpIB"D:\Backup\buh_%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%.dt" /Out"%LOG%\dump.log" /DumpResult"%LOG%\dump_res.txt"

Ключ /DumpIB требует монопольного доступа: если в базе кто-то работает, выгрузка не выполнится. Обновление структуры (/UpdateDBCfg) тоже требует, чтобы пользователи вышли.

Конструкция %DATE:~6,4% зависит от формата даты в Windows. В русской локали дата выглядит как ДД.ММ.ГГГГ, и пример выше даст 20261007. На сервере с английской локалью проверьте командой echo %DATE% и поправьте смещения.

Запуск 1С с внешней обработкой, отчётом или параметром

Ключ /Execute

/Execute"путь\к\обработке.epf" открывает внешнюю обработку сразу после входа в программу. Так делают ярлык «одной кнопки»: кладовщик щёлкает по файлу и сразу попадает в форму сканирования, минуя рабочий стол 1С.

start "" "%V8%" ENTERPRISE /S"srv1c\trade" /N"Склад" /P"..." /Execute"\\srv-files\1c\obr\scan.epf"

Ключ работает с внешними обработками (.epf). Внешний отчёт (.erf) через него обычно не открывают: проще обернуть отчёт в небольшую обработку или подключить его в базе как дополнительный отчёт и вызвать через /C.

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

Ключ /C

/C передаёт в конфигурацию произвольную строку. Внутри её читает код через глобальное свойство ПараметрЗапуска. Типовые конфигурации на БСП понимают служебные параметры:

  • ЗавершитьРаботуПользователей — установить блокировку и выгнать пользователей;
  • РазрешитьРаботуПользователей — снять блокировку;
  • ЗапуститьОбновлениеИнформационнойБазы — выполнить обработчики обновления после смены релиза.

Пример: снять блокировку, которую поставили перед обновлением.

"%V8%" ENTERPRISE /F"D:\Bases\Buh" /N"Админ" /P"pass" /C"РазрешитьРаботуПользователей" /UC"КодРазрешения"

Здесь /UC — тот же код, что указали при установке блокировки. Без него администратор сам не войдёт в заблокированную базу.

Коды возврата и журнал: как понять, что батник сработал

Окно 1С при пакетной работе либо не появляется, либо закрывается само. Поэтому без журнала вы не узнаете, выполнилась операция или упала.

Три источника информации

  1. Файл /Out. Туда 1С пишет все служебные сообщения: «Выгрузка успешно завершена», ошибки блокировки, отказ аутентификации. Ключ -NoTruncate после пути дописывает в файл, а не перезаписывает его.
  2. Файл /DumpResult. Одна цифра: 0 — операция выполнена, 1 — ошибка. Его удобно проверять в самом батнике.
  3. %ERRORLEVEL%. Код завершения процесса. Для DESIGNER он обычно совпадает с /DumpResult, но надёжнее опираться на файл.

Проверка результата в батнике

set /p RES=<"%LOG%\dump_res.txt"
if "%RES%"=="0" (
  echo %DATE% %TIME% OK>>"%LOG%\history.txt"
) else (
  echo %DATE% %TIME% ОШИБКА, см. dump.log>>"%LOG%\history.txt"
  exit /b 1
)

Код выхода exit /b 1 нужен планировщику заданий Windows: в колонке «Результат последнего запуска» он покажет 0x1, и сбой сразу виден.

Частые сообщения и что они значат

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

Сетевые базы и UNC-пути в командном файле

Файловую базу на общей папке лучше указывать полным сетевым путём, а не буквой диска:

start "" "%V8%" ENTERPRISE /F"\\srv-files\1c\Buh" /N"Иванов" /P"..."

Почему не Z:\1c\Buh:

  • 📁 буквы дисков подключаются при входе пользователя, а у задания планировщика или службы их нет;
  • 📁 у разных сотрудников одна и та же папка может быть смонтирована под разными буквами;
  • 📁 после переподключения диска 1С иногда считает базу новой и заводит дубль в списке.

Если батник сам лежит на сетевой папке

cmd.exe не умеет делать текущим каталогом UNC-путь и предупреждает об этом при запуске. Если файл ссылается на соседние файлы по относительным путям, начните его так:

@echo off
pushd "%~dp0"
rem здесь основные команды
popd

%~dp0 — папка, где лежит сам батник. pushd временно подключает её как диск, popd отключает.

Серверные базы

Для клиент-серверного варианта путь к файлам не нужен вообще. Клиент обращается к агенту сервера 1С (по умолчанию порт 1540), поэтому достаточно /S"имя_сервера\имя_базы". Имя базы — то, что указано в кластере, а не имя базы в SQL. Если с компьютера батник не подключается, проверьте, открыт ли порт 1540 и диапазон портов рабочих процессов в брандмауэре.

Пакетная выгрузка .dt с серверной базы тоже идёт через DESIGNER /S. Не пытайтесь копировать файлы базы данных SQL напрямую — это не резервная копия 1С.

Пароль в батнике: как хранить учётные данные безопаснее

Ключ /P хранит пароль открытым текстом. Любой, кто может прочитать файл, получит доступ к базе. Для ярлыка на рабочем столе бухгалтера это ещё терпимо, для сетевой папки с батниками — нет.

Варианты по мере надёжности

СпособКак работаетРиски
Пароль в /PСтрока в самом батникеЧитается любым, у кого есть доступ к файлу
Без /P1С спрашивает пароль при входеНе подходит для ночных заданий
Аутентификация Windows /WA+Пользователь 1С привязан к учётной записи Windows, пароль не нуженНужна настройка пользователя в 1С, работает только в домене или на том же ПК
Отдельный файл с паролемБатник читает пароль из файла с правами только для служебной учёткиПароль всё ещё в открытом виде, но доступ к нему ограничен

Для ярлыков пользователей лучший вариант — /WA+. В карточке пользователя 1С (Администрирование → Настройки пользователей и прав → Пользователи) включите аутентификацию операционной системы и укажите учётную запись Windows. Тогда в батнике остаются только путь и /IBName.

Служебная учётная запись для заданий

Для пакетных операций заведите в 1С отдельного пользователя, например ЗаданияБэкап, с минимальными правами под задачу. Пароль положите в файл, доступный только учётной записи планировщика:

set /p PWD=<"C:\Secure\1c_backup.pwd"
"%V8%" DESIGNER /F"D:\Bases\Buh" /N"ЗаданияБэкап" /P"%PWD%" /DisableStartupDialogs /DumpIB"D:\Backup\buh.dt" /DumpResult"D:\Logs\res.txt"
set PWD=

Права на папку C:\Secure настройте через свойства → «Безопасность»: оставьте доступ только служебной учётке и администраторам. Последняя строка очищает переменную, чтобы пароль не остался в окружении процесса.

Проверка батника перед тем, как отдать его пользователям
Выполнено: 0 / 6

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

Можно ли одним батником открыть сразу две базы?
Да. Напишите две строки со start "": каждая запустит отдельный сеанс. Учтите, что каждый сеанс занимает лицензию.
Как запустить 1С через батник от имени другого пользователя Windows?
Используйте runas /user:ДОМЕН\логин перед командой запуска. Windows спросит пароль этой учётной записи. Для заданий проще указать пользователя в настройках задания планировщика.
Почему батник с /Execute открывает 1С, но обработка не появляется?
Чаще всего у пользователя нет права на открытие внешних обработок или он отказался в окне предупреждения безопасности. Проверьте права в группах доступа и путь к файлу .epf.
Как очистить кэш 1С через батник?
Добавьте ключ /ClearCache в строку запуска. Кэш очистится при этом старте, дальше 1С наполнит его заново.
Чем батник лучше ярлыка?
Ярлык умеет только один вызов программы. В батнике можно проверить результат, записать журнал, прочитать пароль из защищённого файла и выполнить несколько операций подряд.