Как исправить принудительный запуск 1С 7.7 в монопольном режиме через командную строку?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

При настройке автоматического запуска 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: Использование обратных слешей

Для корректной работы 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".

Решение №2: Переименование каталогов

Если по каким-то причинам вы продолжаете использовать прямые слеши (например, при трансляции путей из других систем), единственным выходом будет переименование папки базы так, чтобы ее название не начиналось с букв, зарезервированных под ключи 1С:

  1. M — монопольный режим.
  2. N — имя пользователя.
  3. P — пароль.
  4. U — рабочий каталог пользователя.
  5. D — путь к базе.

Переименовав /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 используется на бездисковой станции в качестве прайс-чекера, где нет клавиатуры и мыши, а ввод осуществляется только сканером штрихкодов.

  1. Автоматизация авторизации: Используйте связку ключей /N (логин) и /P (пароль), чтобы система не останавливалась на окне выбора пользователя.
  2. Разделение ресурсов: При работе нескольких киосков под одной учетной записью 1С, используйте ключ /U для указания индивидуального каталога пользователя. Это предотвратит конфликты при записи временных файлов и настроек 1cv7.cfg.
  3. Обработка завершения работы: Поскольку кнопок управления нет, можно реализовать выключение через сканирование специального сервисного штрихкода. В коде 1С это обрабатывается в процедуре ОбработкаВнешнегоСобытия. При считывании «кода выключения» вызывается команда ЗавершитьРаботуСистемы(0).
  4. Очистка временных файлов: Перед запуском 1С в скрипте полезно добавить команду удаления файла .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 и обеспечить стабильную работу автоматизированных рабочих мест в многопользовательском режиме.

← На главную