Командный файл для 1С 8.3: от одной строки до сценария с журналом и проверкой результата
Содержание
Чтобы запустить 1С через батник, создайте текстовый файл с расширением .bat и одной строкой: start "" "C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBName"Бухгалтерия". Двойной щелчок по такому файлу откроет нужную базу без окна выбора. Вместо имени из списка можно указать путь к файловой базе ключом /F или к серверной ключом /S, а логин и пароль передать ключами /N и /P.
Всё ниже относится к платформе 1С:Предприятие 8.3 и не зависит от конфигурации: ключи одинаково работают для Бухгалтерии, ЗУП, УТ и любых других решений. Один и тот же файл годится и для ярлыка бухгалтера, и для ночной выгрузки базы по расписанию — разница только в наборе ключей.
Из чего состоит командный файл запуска 1С
Батник — это обычный текст, который выполняет cmd.exe строка за строкой. Для запуска 1С достаточно трёх элементов: путь к исполняемому файлу, режим запуска и параметры базы.
Какой исполняемый файл вызывать
| Файл | Где лежит | Когда использовать |
|---|---|---|
1cestart.exe | C:\Program Files\1cv8\common\ | Стартер: сам выбирает версию платформы по настройкам базы. Удобен, когда на компьютере несколько версий |
1cv8.exe | C:\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С получает «кракозябры» вместо Иванов и пишет, что пользователь не найден.
Два рабочих варианта:
- Первой строкой после
@echo offпоставитьchcp 65001 >nulи сохранить файл в UTF-8 без BOM. - Сохранить файл в кодировке 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С при пакетной работе либо не появляется, либо закрывается само. Поэтому без журнала вы не узнаете, выполнилась операция или упала.
Три источника информации
- Файл
/Out. Туда 1С пишет все служебные сообщения: «Выгрузка успешно завершена», ошибки блокировки, отказ аутентификации. Ключ-NoTruncateпосле пути дописывает в файл, а не перезаписывает его. - Файл
/DumpResult. Одна цифра:0— операция выполнена,1— ошибка. Его удобно проверять в самом батнике. %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 | Строка в самом батнике | Читается любым, у кого есть доступ к файлу |
Без /P | 1С спрашивает пароль при входе | Не подходит для ночных заданий |
Аутентификация 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 настройте через свойства → «Безопасность»: оставьте доступ только служебной учётке и администраторам. Последняя строка очищает переменную, чтобы пароль не остался в окружении процесса.
Частые вопросы
Можно ли одним батником открыть сразу две базы?
start "": каждая запустит отдельный сеанс. Учтите, что каждый сеанс занимает лицензию.Как запустить 1С через батник от имени другого пользователя Windows?
runas /user:ДОМЕН\логин перед командой запуска. Windows спросит пароль этой учётной записи. Для заданий проще указать пользователя в настройках задания планировщика.Почему батник с /Execute открывает 1С, но обработка не появляется?
.epf.Как очистить кэш 1С через батник?
/ClearCache в строку запуска. Кэш очистится при этом старте, дальше 1С наполнит его заново.