Отладка на сервере 1С: как включить -debug и HTTP-отладку

Дата: 02.10.2026 23:13:15
Отладка 1С
сервер 1С
администрирование 1С
Фоновые задания
Программирование 1С
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Отладка на сервере 1С 8.3 нужна, когда ошибка живёт в серверном коде клиент-серверной базы: в проведении, регламентном задании, HTTP-сервисе для сайта. В файловой базе такой код ловится обычным F5, а в клиент-серверной точки останова молча пропускаются, пока агент сервера не запущен с ключом -debug. Ниже — служба Windows и systemd, TCP и HTTP, порты, подключение из конфигуратора, фоновые задания и модуль-помощник. Точки останова, табло и стек вызовов разобраны в статье «Отладка 1С 8.3».

Где нужна серверная отладка

Отладчик подключается к процессу, где выполняется код, а это почти никогда не компьютер разработчика:

Что отлаживаемГде выполняется кодЧто включить
&НаСервере, модули объектов и менеджероврабочий процесс rphostагент с -debug
Фоновые и регламентные заданияrphost, отдельный сеанс-debug и автоподключение заданий
HTTP-, веб- и OData-сервисыrphost; у файловой базы — модуль веб-сервера-debug или отладка в публикации

Как включить отладку на сервере 1С: ключ -debug

Режим отладки задаёт агент ragent и передаёт его менеджеру кластера rmngr и рабочим процессам rphost. Ключи читаются при старте службы, а перезапуск рвёт все сеансы кластера — делайте его в нерабочее время.

Ключ ragentЧто делает
-debugвключает отладку; без уточнения протокола — TCP/IP
-tcp, -httpпротокол отладки; HTTP-отладка появилась в 8.3.7
-debugServerPort <порт>порт сервера отладки кластера, по умолчанию 1550
-debugServerAddr <адрес>сетевой интерфейс, на котором он слушает
-debugServerPwd <пароль>пароль на подключение к серверу отладки

С -debug -http агент сам запускает сервер отладки кластера — дочерний процесс dbgs.exe --port=1550, который слушает все интерфейсы. С одним -debug рабочие процессы стартуют с -debug -tcp: так выглядит большинство серверов, где отладку «когда-то включили».

Windows: служба агента и ImagePath

Служба называется «1C:Enterprise 8.3 Server Agent (x86-64)» (в оснастке — «Агент сервера 1С:Предприятия 8.3 (x86-64)»), её командная строка лежит в параметре ImagePath ключа HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>. Скрипт надёжнее regedit: не теряет кавычки вокруг путей с пробелами и сохраняет исходную строку. Чтобы выключить отладку, оставьте только первую замену.

# PowerShell от имени администратора на сервере 1С
$name = "1C:Enterprise 8.3 Server Agent (x86-64)"   # все агенты: Get-Service "1C*"
$key  = "HKLM:\SYSTEM\CurrentControlSet\Services\$name"
$old  = (Get-ItemProperty -Path $key -Name ImagePath).ImagePath
$old | Out-File "$env:TEMP\ragent-imagepath.txt"    # копия исходной строки
# убрать прежние ключи протокола и вставить -debug -http сразу после ragent.exe
$new = $old -replace '\s-(debug|http|tcp)\b', ''
$new = $new -replace '(ragent\.exe"?)', '$1 -debug -http'
Set-ItemProperty -Path $key -Name ImagePath -Value $new
Restart-Service -Name $name -Force                   # сеансы кластера будут разорваны
(Get-CimInstance Win32_Service -Filter "Name='$name'").PathName
# "C:\Program Files\1cv8\8.3.27.1786\bin\ragent.exe" -debug -http -srvc -agent -regport 1541 ...
# порт сервера отладки кластера: только для подсети разработчиков
New-NetFirewallRule -DisplayName "1C Debug Server" -Direction Inbound -Protocol TCP `
    -LocalPort 1550 -RemoteAddress 192.168.10.0/24 -Action Allow

То же из cmd через sc.exe — кавычки внутри значения экранируются обратной косой чертой:

rem cmd от имени администратора; пробел после binPath= обязателен
sc config "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.27.1786\bin\ragent.exe\" -debug -http -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"C:\Program Files\1cv8\srvinfo\""
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

После обновления платформы проверьте ImagePath снова — ключ отладки легко потерять. Установка сервера и порты кластера — в статье «Установка сервера 1С 8.3».

Linux: systemd и SRV1CV8_DEBUG

В юните srv1cv8-<версия>@.service ключи агента вынесены в переменные окружения, за отладку отвечает SRV1CV8_DEBUG: пусто — выключено, -debug — включено. Юнит меняется при обновлении платформы, поэтому переменную задают drop-in-файлом:

# Linux с systemd; версию платформы и имя экземпляра подставьте свои
V=8.3.27.1786
UNIT=srv1cv8-$V@default.service
systemctl cat $UNIT | grep -E 'SRV1CV8_DEBUG|ExecStart'   # как юнит передаёт ключ
sudo mkdir -p /etc/systemd/system/$UNIT.d
sudo tee /etc/systemd/system/$UNIT.d/debug.conf > /dev/null <<'EOF'
[Service]
Environment="SRV1CV8_DEBUG=-debug -http"
EOF
sudo systemctl daemon-reload
sudo systemctl restart $UNIT
pgrep -a ragent                       # в строке запуска должны быть -debug -http
# порт сервера отладки кластера (firewalld; для ufw: sudo ufw allow 1550/tcp)
sudo firewall-cmd --permanent --add-port=1550/tcp && sudo firewall-cmd --reload

Кавычки в Environment= обязательны: без них systemd сочтёт -http отдельным присваиванием. Если в ExecStart переменной нет, переопределите сам ExecStart — пустой строкой ExecStart= и полной командой с -debug -http. В старых установках с init-скриптом srv1cv83 отладку включает SRV1CV8_DEBUG=1 в /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83.

TCP или HTTP

Протокол сервера и конфигуратора должен совпадать. В конфигураторе он задаётся в «Сервис → Параметры → Отладка», поле «Протокол отладки» (в актуальных версиях по умолчанию HTTP), и применяется после перезапуска конфигуратора.

TCP/IPHTTP
Ключи агента-debug-debug -http
Как связываютсяотладчик сам ищет предметы отладки по диапазону портовчерез сервер отладки dbgs
Автоподключениепо типам; в файловой базе — только фоновые заданияпо типам и отборам: пользователи, разделители
Инструментыконфигураторконфигуратор и EDT

Для нового сервера берите HTTP: один порт вместо диапазона, отбор по пользователю, EDT.

Порты и брандмауэр

  • HTTP, сервер отладки кластера. Разработчик подключается к серверу 1С на порт 1550 (или из -debugServerPort) — откройте его только для подсети разработчиков.
  • HTTP, локальный сервер отладки. Его поднимает конфигуратор на свободном порту из «Диапазонов портов», адрес — в «Отладка → Подключение → Настройки», поле «Сервер отладки». До него должны достучаться и предметы отладки на сервере, поэтому через брандмауэр или NAT удобнее сервер отладки кластера.
  • TCP. Отладчик ищет процессы сервера в диапазоне портов, который задаёт кнопка «Настройки» в окне подключения; он должен покрывать -range кластера (обычно 1560:1591).

Файловая база и веб-клиент: HTTP-отладка

В файловой базе -debug не нужен: серверный код выполняется в процессе клиента, и F5 отлаживает его сразу. Особых случаев три.

  • Регламентные задания. Их выполняет первый клиент без /AllowExecuteScheduledJobs -Off, а -Force передаёт их нужному сеансу — первая команда листинга плюс автоподключение фоновых заданий.
  • HTTP- и веб-сервисы на Apache или IIS. Код выполняется в модуле веб-сервера, поэтому отладку разрешают элементом debug в default.vrd (в url — адрес сервера отладки) и перезапускают веб-сервер. Подробнее — в статье о публикации 1С на веб-сервере.
  • Веб-клиент. Выберите его в «Сервис → Параметры → Запуск 1С:Предприятия» и нажмите F5 — серверная часть подключится сама; в клиент-серверной базе — только при сервере в режиме отладки. Из браузера то же задают параметры Debug и DebuggerURL.
# Файловая база: отладочный клиент, которому переходят регламентные задания.
# Адрес сервера отладки возьмите из «Отладка → Подключение → Настройки».
"C:\Program Files\1cv8\8.3.27.1786\bin\1cv8c.exe" /F "D:\Bases\buh" /Debug -http -attach /DebuggerURL "http://localhost:1550" /AllowExecuteScheduledJobs -Force
# Клиент тестировщика к серверной базе: регистрируется на сервере отладки кластера
"C:\Program Files\1cv8\8.3.27.1786\bin\1cv8c.exe" /S "srv01\buh" /Debug -http -attach /DebuggerURL "http://srv01:1550"
<!-- default.vrd публикации файловой базы: отладка по HTTP -->
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/buh" ib="File=&quot;D:\Bases\buh&quot;;">
    <!-- прочие элементы публикации оставьте как есть -->
    <debug enable="true" protocol="http" url="http://localhost:1550"/>
</point>

Подключение из конфигуратора: «Отладка → Подключение»

  1. Конфигуратор открыт на той же базе: отладчик и предметы отладки сопоставляются по имени базы в кластере (для копии под другим именем — «Использовать указанное имя информационной базы» на вкладке «Отладка»).
  2. Для удалённого сервера там же выберите «Использовать сервер отладки кластера» и перезапустите конфигуратор.
  3. «Отладка → Подключение» открывает окно «Предметы отладки»; нужный сеанс ищут по колонкам «Тип», «Пользователь», «Компьютер», «Сеанс».
  4. «Автоматическое подключение…» подключает отмеченные типы сразу при появлении:
Что ловимHTTP: тип предметаTCP: флажок
Серверный код сеансовСерверКлиентские и внешние соединения на сервере
Фоновые и регламентные заданияФоновое заданиеФоновые задания
HTTP-сервисыHTTP-сервисHTTP-сервисы
Веб-сервисыWeb-сервисWeb-сервисы
ODataСтандартный интерфейс ODataOData-сервисы
Внешнее соединениеCOM-соединениеКлиентские и внешние соединения на сервере

Свой сеанс, запущенный по F5 в HTTP-режиме, отмечать не нужно. «Отборы предметов отладки» (только HTTP) ограничивают автоподключение пользователями — на общем сервере вы не остановите чужие задания.

Отладка регламентного задания на сервере

Фоновое задание видно в списке предметов, только пока выполняется, поэтому вручную его не поймать. Порядок такой:

  1. Агент работает с -debug, протоколы совпадают, конфигуратор открыт на базе.
  2. В «Автоматическое подключение…» отмечено «Фоновое задание» (в TCP — «Фоновые задания»).
  3. Точка останова стоит в методе задания — процедуре общего модуля с флажком «Сервер».
  4. Задание запускают по расписанию, командой «Выполнить сейчас» в списке регламентных заданий БСП или функцией ВыполнитьДляОтладки из листинга ниже.

На копии рабочей базы часто включена блокировка регламентных заданий — запускайте метод вручную. Задание работает от имени указанного в нём пользователя, ошибки прав воспроизводите под ним. Создание и запуск заданий из кода — в статьях о регламентных и о фоновых заданиях.

Удалённая отладка с другого компьютера

В HTTP-режиме нужны агент с -debug -http, открытый на сервере порт 1550 и сервер отладки кластера в настройках конфигуратора. Пароль из -debugServerPwd вводят в окне «Доступ к серверу отладки» или в группе «Доступ» вкладки «Отладка». Клиент тестировщика запускают второй командой листинга выше: с -attach отладчик сам подключит его клиентскую и серверную части. В TCP-режиме отметьте в окне подключения «Искать предметы отладки на удаленном компьютере» и укажите сервер.

Как проверить, что отладка включена

Реестру не верьте на слово — смотрите ключи работающих процессов:

# Windows: с какими ключами реально работают агент, рабочие процессы и сервер отладки
Get-CimInstance Win32_Process -Filter "Name='ragent.exe' OR Name='rphost.exe' OR Name='dbgs.exe'" |
    Select-Object ProcessId, ParentProcessId, CommandLine | Format-List
#   rphost.exe ... -debug -tcp    отладка по TCP
#   rphost.exe ... -debug -http   отладка по HTTP, рядом dbgs.exe --port=1550
Get-NetTCPConnection -State Listen -LocalPort 1550 -ErrorAction SilentlyContinue
# с компьютера разработчика: порт доступен и сервер отладки отвечает
Test-NetConnection srv01 -Port 1550
(Invoke-WebRequest -UseBasicParsing "http://srv01:1550/").Content
#   <html>1C:Enterprise 8.3 Debug Server (8.3.27.1786) ... - it works!</html>
# Linux: то же через ps и ss
ps -eo pid,args | grep -E '[r]agent|[r]phost|[d]bgs'
sudo ss -ltnp | grep ':1550'
  • у rphost в строке запуска -debug -tcp или -debug -http — отладка включена, протокол виден сразу;
  • в HTTP-режиме рядом работает dbgs.exe --port=1550, а запрос к порту возвращает строку «1C:Enterprise 8.3 Debug Server … - it works!».

Код-помощник для отладки серверного кода

Общий модуль пишет в журнал регистрации, где выполняется код, держит паузу до подключения отладчика и одной функцией запускает метод в текущем сеансе или фоном.

// Общий модуль ОтладкаНаСервере: флажок «Сервер», без «Вызов сервера», не глобальный.
// Помощник для отладки серверного кода, фоновых и регламентных заданий. Платформа 8.3.13+.

// Где выполняется код: по номеру сеанса и компьютеру нужный предмет отладки
// легко найти в окне «Отладка → Подключение».
Функция ОписаниеСеанса() Экспорт
	Сеанс = ПолучитьТекущийСеансИнформационнойБазы();
	Описание = СтрШаблон("сеанс %1 (%2), сервер %3, пользователь ""%4""",
		XMLСтрока(Сеанс.НомерСеанса), ПредставлениеПриложения(Сеанс.ИмяПриложения),
		ИмяКомпьютера(), ИмяПользователя());
	Задание = Сеанс.ПолучитьФоновоеЗадание();
	Если Задание <> Неопределено Тогда
		Описание = Описание + СтрШаблон(", задание ""%1"" %2", Задание.Наименование, Задание.УникальныйИдентификатор);
	КонецЕсли;
	Возврат Описание;
КонецФункции

// Включает ожидание отладчика для метки на заданное число минут (0 - выключить).
// Флаг хранится в настройках пользователя, от имени которого работает задание
// или HTTP-сервис; для чужого пользователя нужны административные права.
// Функция, а не процедура: её можно вызвать из окна «Вычислить выражение».
Функция ВключитьОжидание(Метка, ИмяПользователяИБ = "", Минут = 30) Экспорт
	Срок = ?(Минут > 0, ТекущаяУниверсальнаяДата() + Минут * 60, Дата(1, 1, 1));
	Если ПустаяСтрока(ИмяПользователяИБ) Тогда
		ХранилищеОбщихНастроек.Сохранить("ОтладкаНаСервере", Метка, Срок);
	Иначе
		ХранилищеОбщихНастроек.Сохранить("ОтладкаНаСервере", Метка, Срок, , ИмяПользователяИБ);
	КонецЕсли;
	Возврат Срок;
КонецФункции

// Пауза до подключения отладчика. Точку останова ставят на строку
// с ОжидатьЗавершенияВыполнения; после остановки в окне «Локальные переменные»
// задайте Ждать = Ложь (команда «Установить новое значение в виде выражения»).
Процедура ЖдатьОтладчик(Метка, МаксимумСекунд = 120, Принудительно = Ложь) Экспорт
	Если Не Принудительно И Не ОжиданиеВключено(Метка) Тогда
		Возврат;
	КонецЕсли;
	ЗаписьЖурналаРегистрации("ОтладкаНаСервере.Ожидание", УровеньЖурналаРегистрации.Предупреждение, , ,
		СтрШаблон("[%1] ждём отладчик до %2 с: %3", Метка, МаксимумСекунд, ОписаниеСеанса()));
	Таймер = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
	Вспомогательное = (Таймер = Неопределено);
	Если Вспомогательное Тогда
		// Сеанс не фоновый (HTTP-сервис, клиент): ждём служебное задание-паузу
		ПараметрыПаузы = Новый Массив;
		ПараметрыПаузы.Добавить(МаксимумСекунд);
		Таймер = ФоновыеЗадания.Выполнить("ОтладкаНаСервере.Пауза", ПараметрыПаузы, , "Отладка: пауза " + Метка);
	КонецЕсли;
	Ждать = Истина;
	Окончание = ТекущаяУниверсальнаяДата() + МаксимумСекунд;
	Пока Ждать И ТекущаяУниверсальнаяДата() < Окончание
		И Таймер.Состояние = СостояниеФоновогоЗадания.Активно Цикл
		Таймер = Таймер.ОжидатьЗавершенияВыполнения(1); // точка останова здесь
	КонецЦикла;
	Если Вспомогательное И Таймер.Состояние = СостояниеФоновогоЗадания.Активно Тогда
		Таймер.Отменить();
	КонецЕсли;
КонецПроцедуры

// Фоновое задание, которое ждёт само себя с таймаутом, просто спит.
Процедура Пауза(Секунд) Экспорт
	ТекущееЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
	Если ТекущееЗадание <> Неопределено Тогда
		ТекущееЗадание.ОжидатьЗавершенияВыполнения(Секунд);
	КонецЕсли;
КонецПроцедуры

// Запуск экспортной процедуры серверного общего модуля одной функцией:
// ВФоне = Ложь - в текущем сеансе, точки останова работают без автоподключения;
// ВФоне = Истина - фоновым заданием, как её выполняет планировщик.
// Возвращает идентификатор фонового задания или Неопределено.
Функция ВыполнитьДляОтладки(ИмяМетода, ПараметрыМетода = Неопределено, ВФоне = Ложь, СОжиданием = Ложь) Экспорт
	Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
		ВызватьИсключение "Запуск для отладки доступен только администратору";
	КонецЕсли;
	ПроверитьИмяМетода(ИмяМетода);
	Аргументы = ?(ПараметрыМетода = Неопределено, Новый Массив, ПараметрыМетода);
	Если Не ВФоне Тогда
		ВызватьМетод(ИмяМетода, Аргументы);
		Возврат Неопределено;
	КонецЕсли;
	ПараметрыЗадания = Новый Массив;
	ПараметрыЗадания.Добавить(ИмяМетода);
	ПараметрыЗадания.Добавить(Аргументы);
	ПараметрыЗадания.Добавить(СОжиданием);
	Задание = ФоновыеЗадания.Выполнить("ОтладкаНаСервере.ВыполнитьВФоне", ПараметрыЗадания, ,
		"Отладка: " + ИмяМетода);
	Возврат Задание.УникальныйИдентификатор;
КонецФункции

// Обработчик фонового задания, которое запускает ВыполнитьДляОтладки.
Процедура ВыполнитьВФоне(ИмяМетода, Аргументы, СОжиданием) Экспорт
	Если СОжиданием Тогда
		ЖдатьОтладчик(ИмяМетода, 120, Истина);
	КонецЕсли;
	ВызватьМетод(ИмяМетода, Аргументы);
КонецПроцедуры

// Итог фонового запуска: состояние или подробный текст ошибки.
Функция ИтогЗадания(Идентификатор) Экспорт
	Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
	Если Задание = Неопределено Тогда
		Возврат "Задание не найдено";
	ИначеЕсли Задание.ИнформацияОбОшибке <> Неопределено Тогда
		Возврат ПодробноеПредставлениеОшибки(Задание.ИнформацияОбОшибке);
	КонецЕсли;
	Возврат Строка(Задание.Состояние);
КонецФункции

Функция ОжиданиеВключено(Метка)
	Срок = ХранилищеОбщихНастроек.Загрузить("ОтладкаНаСервере", Метка);
	Возврат ТипЗнч(Срок) = Тип("Дата") И Срок > ТекущаяУниверсальнаяДата();
КонецФункции

Процедура ВызватьМетод(ИмяМетода, Аргументы)
	ЗаписьЖурналаРегистрации("ОтладкаНаСервере.Запуск", УровеньЖурналаРегистрации.Информация, , ,
		ИмяМетода + ": " + ОписаниеСеанса());
	Выражения = Новый Массив;
	Для Индекс = 0 По Аргументы.ВГраница() Цикл
		Выражения.Добавить("Аргументы[" + XMLСтрока(Индекс) + "]");
	КонецЦикла;
	// Выполнить() видит локальные переменные, поэтому значения не подставляются в текст
	Выполнить(ИмяМетода + "(" + СтрСоединить(Выражения, ", ") + ");");
КонецПроцедуры

// Защита Выполнить(): только ИмяМодуля.ИмяПроцедуры серверного неглобального модуля.
Процедура ПроверитьИмяМетода(ИмяМетода)
	Части = СтрРазделить(ИмяМетода, ".");
	Модуль = Неопределено;
	Если Части.Количество() = 2 И ЭтоИдентификатор(Части[1]) Тогда
		Модуль = Метаданные.ОбщиеМодули.Найти(Части[0]);
	КонецЕсли;
	Если Модуль = Неопределено Или Не Модуль.Сервер Или Модуль.Глобальный Тогда
		ВызватьИсключение СтрШаблон("""%1"" - не метод серверного общего модуля", ИмяМетода);
	КонецЕсли;
КонецПроцедуры

Функция ЭтоИдентификатор(Имя)
	Если ПустаяСтрока(Имя) Или СтрНайти("0123456789", Лев(Имя, 1)) > 0 Тогда
		Возврат Ложь;
	КонецЕсли;
	Для Позиция = 1 По СтрДлина(Имя) Цикл
		Символ = Сред(Имя, Позиция, 1);
		Если Символ <> "_" И СтрНайти("0123456789", Символ) = 0 И ВРег(Символ) = НРег(Символ) Тогда
			Возврат Ложь;
		КонецЕсли;
	КонецЦикла;
	Возврат Истина;
КонецФункции
  • Пауза — приём из БСП: фоновое задание, ждущее само себя с таймаутом, просто спит; в сеансе HTTP-сервиса для этого запускается служебное задание Пауза.
  • Флаг ожидания хранится в настройках пользователя со сроком: забытый флаг выключится сам и не повесит обмен.
  • Номер сеанса из записи «ОтладкаНаСервере.Ожидание» совпадает с колонкой «Сеанс» в окне подключения.
  • Выполнить() принимает только метод серверного неглобального модуля и только от администратора.

Встраивание — одна строка в начале метода задания или обработчика сервиса:

// Общий модуль ОбменССайтомСервер (флажок «Сервер»): метод регламентного задания.
// Ожидание включают на полчаса для пользователя, указанного в задании:
// ОтладкаНаСервере.ВключитьОжидание("ВыгрузкаЗаказов", "Регламент", 30)
Процедура ВыгрузитьЗаказы() Экспорт
	ОтладкаНаСервере.ЖдатьОтладчик("ВыгрузкаЗаказов");
	ЗаписьЖурналаРегистрации("Обмен.ВыгрузкаЗаказов", УровеньЖурналаРегистрации.Информация, , ,
		"Старт: " + ОтладкаНаСервере.ОписаниеСеанса());
	// ... прикладной код выгрузки
КонецПроцедуры

// Модуль HTTP-сервиса Заказы: тот же приём для запроса, который присылает сайт.
Функция ЗаказыPOST(Запрос)
	ОтладкаНаСервере.ЖдатьОтладчик("HTTP.Заказы", 60);
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзСтроки("{""status"": ""ok""}", КодировкаТекста.UTF8);
	Возврат Ответ;
КонецФункции

Сайт может оборвать запрос по таймауту раньше, чем вы подключитесь, — увеличьте таймаут или повторите запрос через curl. Если у задания не указан пользователь, флаг ставить некому: запускайте метод из обработки администратора.

// Внешняя обработка администратора, модуль формы: команда запускает метод
// регламентного задания фоном с паузой до подключения отладчика.
&НаКлиенте
Процедура ЗапуститьВФоне(Команда)
	Идентификатор = ЗапуститьНаСервере("ОбменССайтомСервер.ВыгрузитьЗаказы");
	ПоказатьОповещениеПользователя("Задание запущено", , "Подключите отладчик: " + Строка(Идентификатор));
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗапуститьНаСервере(ИмяМетода)
	Возврат ОтладкаНаСервере.ВыполнитьДляОтладки(ИмяМетода, , Истина, Истина);
КонецФункции

Типичные ошибки

  • Точка в серверной процедуре не срабатывает, F11 перешагивает вызов сервера. Ключ вписан в реестр, а служба не перезапущена — проверьте строку запуска rphost.
  • «Тип подключения цели отладки отличается от типа, используемого сервером отладки». Протоколы не совпадают: сервер с одним -debug (TCP), а конфигуратор по HTTP, или наоборот.
  • «Не удалось запустить сервер отладки: порт 1550 занят». Порт держит сервер отладки второго кластера или ibsrv — разведите их ключом -debugServerPort.
  • «Ошибка загрузки сетевой инфраструктуры отладчика…». Конфигуратор не поднял локальный сервер отладки или не достучался до удалённого: проверьте адрес, диапазоны портов и брандмауэр.
  • Служба не стартует: «Ошибка 2: Не удается найти указанный файл». Сбились кавычки вокруг пути к ragent.exe — верните исходную строку из копии.

Частые вопросы

Можно ли включить отладку на сервере без перезапуска службы?

Нет: агент читает ключи только при старте. Если окно не согласовать, поднимите второй агент на других портах с -debug и отлаживайте копию базы.

Можно ли держать -debug на рабочем сервере постоянно?

Технически да, но любой с доступом к конфигуратору базы сможет остановить сеансы пользователей, а остановка внутри транзакции держит блокировки. Если иначе никак — HTTP, пароль -debugServerPwd и порт 1550 только для разработчиков.

Как включить отладку у автономного сервера ibsrv?

Ключом --debug=http или --debug=tcp. Порт сервера отладки задаёт --debug-port (по умолчанию 1550), пароль — --debug-password.

Почему EDT не видит серверные предметы отладки?

EDT отлаживает только по HTTP, а сервер запущен с одним -debug, то есть по TCP. Добавьте -http и перезапустите службу.

Когда проще заказать

Если ошибка есть только на рабочем сервере, перезапуск с -debug надо согласовывать, а причина прячется в обмене или фоновом задании, поиск растягивается на дни. Разместите задачу с текстом ошибки и шагами воспроизведения: оценка бесплатная, ответ в течение рабочего дня. Если база не падает, а тормозит, — услуга «1С тормозит».

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.