Ситуация, когда после плановой настройки сервера 1С или включения режима отладки внезапно «исчезают» все информационные базы из консоли администрирования, может вызвать панику даже у опытного администратора. В этой статье мы подробно разберем механизм возникновения этой ошибки, проанализируем особенности работы системного загрузчика Windows и выясним, как вернуть работоспособность сервера без ручного пересоздания списка баз.
Рассмотрим стандартную ситуацию. Администратору необходимо включить отладку на сервере. Для этого он открывает редактор реестра и правит строку запуска службы ragent.exe. Проблема часто кроется в одной маленькой детали — отсутствии пробела между кавычкой пути к данным и ключом отладки. Проанализируем пример строки, которая приводит к сбою:
"C:\Program Files\1cv8\8.3.22.2239\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"-debug
На первый взгляд кажется, что всё верно. Однако, обратим внимание на фрагмент "C:\...\srvinfo"-debug. Здесь кроется ловушка парсинга аргументов командной строки Windows. Посмотрим на ситуацию глазами операционной системы.
В Windows существует системная функция CommandLineToArgvW, которая отвечает за разделение строки запуска на отдельные аргументы. Если между закрывающей кавычкой и следующим символом нет пробела, система считает их единым аргументом. В итоге параметр -d (путь к рабочему каталогу кластера) получает значение C:\Program Files\1cv8\srvinfo-debug вместо ожидаемого C:\Program Files\1cv8\srvinfo.
Разберем поведение сервера 1С при получении неверного пути. Когда служба ragent.exe запускается с параметром -d, указывающим на несуществующую или новую папку (в нашем случае srvinfo-debug), она не выдает ошибку. Проанализируем алгоритм работы сервера:
-d.LocalSystem) автоматически создает её.1CV8Clst.lst и пустые подкаталоги.Важно понимать: ваши данные (файлы базы данных на SQL-сервере или файлы файловой базы) никуда не делись. Пропали лишь «указатели» на них в настройках конкретного кластера 1С, так как сервер теперь смотрит в «кривую» папку.
Выясним, как должна выглядеть корректная строка запуска. Обязательным условием является наличие пробела перед дефисом. Рассмотрим правильный вариант записи:
"C:\Program Files\1cv8\8.3.22.2239\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Обратите внимание на пробел между "srvinfo" и -debug. Также стоит отметить, что в современных версиях платформы (начиная с 8.3.22 и выше) разработчики рекомендуют переходить на HTTP-отладку, так как она стабильнее и не требует открытия широкого диапазона портов. Для этого используется ключ -http.
Если вы уже столкнулись с тем, что базы пропали, выполним следующие действия для восстановления нормальной работы:
services.msc и остановите службу Агент сервера 1С:Предприятие 8.3.regedit. Перейдите в ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64) (название может отличаться в зависимости от версии).
ImagePath. Убедитесь, что после закрывающей кавычки пути к каталогу srvinfo стоит пробел перед -debug или -http.C:\Program Files\1cv8. Если вы видите там папку srvinfo-debug, значит, наша теория подтвердилась.srvinfo.Проанализируем еще один аспект — учетную запись, под которой запускается служба. В обсуждении упоминалось использование системной учетной записи (LocalSystem). Рассмотрим риски:
Использование LocalSystem позволяет службе 1С беспрепятственно создавать любые папки на диске C:, что и произошло в случае ошибки с пробелом. Специалисты по безопасности 1С рекомендуют использовать специально созданную локальную учетную запись (например, usr1cv8).
Если бы служба работала под ограниченным пользователем usr1cv8, то при попытке создать папку srvinfo-debug (на которую у пользователя нет прав в корневом каталоге 1cv8) служба бы просто не стартовала, выдав ошибку в журнале событий Windows. Это позволило бы администратору сразу заметить опечатку в путях, не доводя ситуацию до «пропадания» баз.
Резюме: Всегда проверяйте наличие пробелов между параметрами в реестре. Помните, что для Windows строка "путь"параметр — это один аргумент, а "путь" параметр — это два разных значения. Эти знания помогут вам избежать лишней работы по перенастройке кластера серверов 1С.