При настройке автоматического запуска 1С:Предприятия 7.7 через бат-файлы или планировщик задач системные администраторы часто сталкиваются с необъяснимым поведением: программа запускается в монопольном режиме, даже если соответствующий ключ /M не был указан в строке запуска. Это критично для сетевых баз, так как первый же вошедший пользователь блокирует работу всех остальных.
В данной статье мы разберем причины возникновения этой ошибки, проанализируем особенности парсера командной строки 1С 7.7 и рассмотрим способы реализации «чистого» запуска, включая настройку терминальных киосков и прайс-чекеров.
Главная причина кроется в том, как исполняемый файл 1cv7.exe (или его сетевой аналог 1cv7s.exe) интерпретирует переданные ему параметры. Проанализируем типичную ошибочную строку запуска:
"C:\Program Files\1Cv77\BIN\1cv7.exe" ENTERPRISE /DD:/1C_Base/Molotok_KKS /NKiosk
Проблема здесь заключается в использовании прямого слеша (/) в качестве разделителя пути к базе данных. Парсер командной строки 1С 7.7 работает по упрощенному алгоритму: он ищет символ / по всей строке и проверяет следующий за ним символ. Если он видит комбинацию /M, он активирует монопольный режим, даже если эта комбинация является частью названия папки (например, /Molotok).
Таким образом, программа воспринимает часть пути как команду. Это классическая «фича» платформы 7.7, которая требует строгого соблюдения синтаксиса операционной системы Windows.
Для корректной работы 1С необходимо использовать стандартный для Windows обратный слеш (\). В этом случае парсер не будет путать разделители пути с ключами запуска. Рассмотрим исправленный пример:
"C:\Program Files\1Cv77\BIN\1cv7.exe" ENTERPRISE /D"D:\1C_Base\Molotok_KKS" /N"Kiosk"
Обратите внимание на использование кавычек. Проанализируем правила их расстановки: если в пути к базе или имени пользователя есть пробелы, кавычки должны обрамлять именно значение после ключа, а не сам ключ. Правильно писать /D"D:\My Base", а не "/D D:\My Base".
Если по каким-то причинам вы продолжаете использовать прямые слеши (например, при трансляции путей из других систем), единственным выходом будет переименование папки базы так, чтобы ее название не начиналось с букв, зарезервированных под ключи 1С:
Переименовав /Molotok в /KKS_molotok, вы избежите срабатывания ключа /M, так как комбинация /K не является системной для 1С 7.7.
При использовании .bat или .cmd файлов пользователи часто жалуются на мигающее черное окно командной строки. Рассмотрим, как сделать запуск эстетичным, что особенно важно для режима киоска.
Вариант через VBS-скрипт:
Создадим файл start_1c.vbs, который запустит 1С в скрытом режиме для самой оболочки скрипта:
Set WshShell = CreateObject("WScript.Shell")
' Параметр 0 скрывает окно, False позволяет не ждать завершения приложения
WshShell.Run """C:\Program Files\1Cv77\BIN\1cv7.exe"" ENTERPRISE /D""D:\1C_Base\Base"" /N""Kiosk""", 0, False
Вариант через Shell в терминальном клиенте:
Если вы используете тонкие клиенты (например, WtWare) или настраиваете RDP-подключение, лучше всего прописать строку запуска непосредственно в параметре shell. В этом случае 1С запустится вместо стандартного рабочего стола Windows (Explorer.exe), и никакого окна командной строки не возникнет в принципе.
Разберем ситуацию, когда 1С 7.7 используется на бездисковой станции в качестве прайс-чекера, где нет клавиатуры и мыши, а ввод осуществляется только сканером штрихкодов.
/N (логин) и /P (пароль), чтобы система не останавливалась на окне выбора пользователя./U для указания индивидуального каталога пользователя. Это предотвратит конфликты при записи временных файлов и настроек 1cv7.cfg.ОбработкаВнешнегоСобытия. При считывании «кода выключения» вызывается команда ЗавершитьРаботуСистемы(0)..ldb и индексов .cdx (если это единственная сессия), чтобы избежать окна предложения о переиндексации при некорректном завершении работы в прошлом.Рассмотрим пример продвинутого бат-файла для запуска в режиме терминала:
@echo off
taskkill /f /im 1cv7.exe
del "D:\1C_Base\Base\*.ldb" /q
start "" "C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /D"D:\1C_Base\Base" /N"Kiosk" /P"123"
exit
Важный нюанс: Для сетевых версий (SQL или комплексных) рекомендуется использовать именно 1cv7s.exe, так как обычный 1cv7.exe может иметь ограничения по количеству подключений или типам лицензий в зависимости от установленной версии платформы.
Соблюдение этих правил позволит вам избежать «загадочного» поведения платформы 7.7 и обеспечить стабильную работу автоматизированных рабочих мест в многопользовательском режиме.