При настройке автоматического обмена данными, резервного копирования или других регламентных задач в 1С:Предприятие 7.7 системные администраторы часто используют запуск системы из пакетного файла (с расширением .bat или .cmd). Для этого в строку запуска передаются специальные параметры авторизации.
Типичный пример командной строки выглядит следующим образом:
"C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /M /DD:\1C7_Bases\ZOO_Exchange /NАвтообмен /P123456
Однако при запуске такого батника программа часто игнорирует переданные параметры и все равно выводит диалоговое окно с требованием ввести имя пользователя и пароль. Проанализируем, почему это происходит, и разберем по шагам рабочие способы решения этой проблемы.
Главная причина, по которой 1С 7.7 не принимает учетные данные из батника — это использование русских букв в имени пользователя (например, /NАвтообмен) при несоответствии кодировок текста. По умолчанию текстовые редакторы в Windows сохраняют файлы в кодировке Windows-1251 (ANSI), в то время как командная строка Windows (консоль CMD) по умолчанию работает в кодовой странице OEM 866 (DOS).
Когда операционная система передает строку запуска платформе 1С, русские символы из-за несовпадения кодовых таблиц превращаются в нечитаемые «крякозябры». Платформа 1С пытается найти пользователя с «испорченным» именем в списке зарегистрированных пользователей (файл users.usr в каталоге usrdef), не находит его и открывает стандартное интерактивное окно авторизации.
Рассмотрим подробнее три основных способа решения этой проблемы.
Самый простой и надежный способ, который навсегда избавит вас от проблем с кодировками — использовать для служебных учетных записей исключительно латинские символы. В этом случае кодовые таблицы DOS и Windows полностью совпадают, и имя будет передано корректно при любых условиях.
Выполним следующие действия:
Exchange вместо Автообмен). Задайте ему пароль.
"C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /M /DD:\1C7_Bases\ZOO_Exchange /NExchange /P123456
Если по каким-то причинам вам обязательно нужно сохранить имя пользователя на русском языке, необходимо принудительно указать командному интерпретатору Windows использовать правильную кодовую страницу перед запуском 1С. Для этого применяется системная команда chcp 1251, которая переводит консоль в режим кодировки Windows-1251.
Отредактируйте ваш BAT-файл, добавив команду смены кодовой страницы первой строкой:
chcp 1251
"C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /M /DD:\1C7_Bases\ZOO_Exchange /NАвтообмен /P123456
Обратите внимание: сам BAT-файл при этом должен быть сохранен в кодировке ANSI (Windows-1251). Настроить кодировку файла можно в любом продвинутом текстовом редакторе (например, Notepad++) или непосредственно в Конфигураторе 1С, который по умолчанию сохраняет текстовые документы в кодировке Windows.
Другой вариант решения проблемы с кириллицей — сохранить сам пакетный файл в оригинальной консольной кодировке OEM 866 (в некоторых редакторах она называется DOS-кодировкой). В этом случае операционная система правильно считает русские буквы без дополнительных команд вроде chcp. Сделать это можно в стороннем текстовом редакторе через меню «Кодировки -> Кодировки -> Кириллица -> OEM 866».
Помимо кодировки, существует ряд жестких правил синтаксиса платформы 1С 7.7, несоблюдение которых также приводит к игнорированию параметров запуска и открытию окна авторизации. Проанализируем ключевые моменты:
/N Exchange /P 123 работать не будет. Правильный синтаксис: /NExchange /P123./N"Exchange User" /P"My Password 123".\" как экранирование кавычки. Вся последующая строка параметров склеится в один нечитаемый блок. Избегайте финального слэша в путях к базе: пишите /D"D:\1C7_Bases\ZOO_Exchange" вместо /D"D:\1C7_Bases\ZOO_Exchange\".enterprise или config) всегда должен указываться самым первым параметром сразу после пути к исполняемому файлу платформы 1С.В современных операционных системах вместо устаревших пакетных файлов .bat рекомендуется использовать сценарии Windows Script Host (WSH) на языке VBScript. Это позволяет гибко управлять процессом запуска и избегать проблем с кодировками.
Создайте текстовый файл с расширением .vbs и поместите в него следующий код:
Dim v7, runLine
Set v7 = CreateObject("V1CEnterprise.Application")
runLine = "/DD:\1C7_Bases\ZOO_Exchange /NExchange /P123456"
res = v7.Initialize(v7.RMTrade, runLine, "NO_SPLASH_SHOW")
Использование этого сценария позволяет выполнить инициализацию системы в фоновом режиме без отображения стартовой заставки (благодаря параметру "NO_SPLASH_SHOW"), что делает автоматизацию бизнес-процессов более плавной и профессиональной.