1с отладчик не заходит в процедуру

Обновлено: 03.07.2024

через regedit найди ветку службы запуска агента сервера 1С HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.2 Server Agent (x86-64) и в параметре ImagePath пропиши "C:\Program Files\1cv82\8.2.18.109\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv82\srvinfo" -debug

перезапусти сервер 1С

(24) E_Johnny, я написал выше что делал это уже и не помогло.

там требуюется только выбрать путь к файлу ragent.exe
остальные параметры запуска службы выбираются и откавычиваются в окне проги.

а у нас например сервер один, но 2 порта, и для одного отладка запрещена - для порта с рабочими базами, а для тестовых - открыта. может вы у себя порт не тот указываете в ключе запуска? Посмотри как выглядит соединение сеанса клиента (справка/о программе).
Фича в том, что имя сервера должно быть одинаковым как у конфигуратора, так и у предприятия (клиента), иначе отладчик не может подключиться.
Под одинаковостью имеется ввиду вплоть до регистра.
Иногда отладка запускается не в том регистре, в котором настроено соединение конфигуратора.
Чтобы было все хорошо, лучше писать имя сервера всегда большими буквами (в настройках соединения, где конфигуратор). (31) tolyan_ekb,
А у тебя не в фоновом задании серверный вызов случайно? (32) helgi, у меня обычная процедура сообщить("11") на сервере.
(33) helgi, номер сеанса совпадает в журнал регистрации записывается. Это для какой версии платформы ПолучитьПараметрыСоединенияСеанса().СтрокаСоединение? (34) tolyan_ekb,
у меня последняя, там есть. В какой появилось - не помню. Судя по тому, что у тебя 2.13 - может и нет.
Тогда попробуй

и на клиенте и на сервере попробуй. И сравни.

PS. Судя по тому, что ты пишешь, то единственная проблема, о которой мне известно, это разные имена сервера (case sens) у конфигуратора и клиента (а может у клиентского и серверного предмета отладки). Просто очень давно не сталкивался, но в свое время полдня потратил на понимание природы неподключения.

(34) tolyan_ekb, "сообщить" не работает на сервере. может в этом дело?

.
но в любом случае исключение не выкидывается.

(42) helgi, не получилось. Переустановил платформу и сервер 1С. Поставил в итоге платформу на том же компе, что и сервер 1С, для отладки. Там работает без проблем. (43) tolyan_ekb,
может попробовать поискать предметы отладки на удаленном компьютере. (28) В моем случае (при запуске конфигуратора не на самой серверной машине) помог именно верхний регистр в имени кластера серверов в параметрах подключения информационной базы. И сделай на всякий случай в серверной процедуре (которая не отлаживается):

Потом найди, что туда записалось и посмотри, действиетльно ли подключен этот предмет отладки. Первым делом на всех ПК (сервер, клиент) остановить брандмауэр, ферволы (если стоят какие-то), антивирусы. В большинстве случаев после этого все начинает работать. Добрый день!
Помогло:
1. Указание базы и кластера в верхнем регистре.
2. Отключение Брандмауэра на клиентской машине и сервере (45) (Но можно настроить и фильтры по портам (71))
3. На сервере в реестре [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent] добавил "-debug" в параметр "ImagePath"= "С:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "С:\Program Files\1cv81\server"
4. Перезагрузил сервер и свой комп. столкнулся с той же байдой. Параметр debug прописан, предмет отладки виден, все нужные галочки как в настройках отладки так и в настройках программы стоят, встроенный брендмауер отключен полностью - отладка не проходит. При том, что еще месяц назад, я на ЭТОМ же серваке, на ЭТОЙ же платформе отлаживал серверные процедуры. Мистика какая-то

здесь нашел решение. А именно:

Строка соединения с информационной базой, используемая в Конфигураторе, должна быть точно такой-же, как и строка соединения с информационной базой, которую можно получить в работающем фоновом задании с помощью функции СтрокаСоединенияИнформационнойБазы() Столкнулся с такой же проблемой. Отключил файрвол и антивирус, проверил написания всех имен при подключении клиента и сервера. Вручную включил предмет отладки, но НЕ РАБОТАЕТ. Была такая же проблема. После переустановки Windows перестал заходить отладчиком в процедуры, выполняющиеся на сервере. Проблема решилась отключением брандмауэра на клиентской машине и последующей перезагрузкой компа. Подниму старую тему чтобы не флудить.
Испробовал все советы этой темы и все что наше в интернете, а также свой опыт.
Но не смог заставить работать отладку на сервере 64-bit.
Вопрос этот стоит давно и остается тайной, так как иногда счастье все же случается, но это разные сервера.
В данным момент имею Win 2008 r2 и платформу 8.3.5.1119. А вообще нет последний совет я не попробовал, дело действительно в брандмауэре на клиентской машине.

Так ведь вообще на сервере не дебажит отладчик.

Либо переноси все на клиента, либо вариантов нет.

8.3.5.1146 и 8.3.5.1186 на Win8.1 файловая база отладка не работает, там же но 8.3.4.496 работает, танцы с бубном не помогли, файрвол, антивирус, ipv6 всё отключено. 8.3.5.1186 на WinServer2012, серверная БД - отладка работает.

Нашёл в интернете:

Вот! Нашел решение. Пусть эта инфа будет для тех, кто только начинает свой путь.

Как установить режим отладки на стороне сервера в клиент-серверном режиме работы

Раньше попадал, а теперь - не могу. Кэш почистил, хранилище настройки почистил. База SQL но локальная, на моём компе запускается.
Что я делаю не так?

(1) newborn, отчет может не использует скд? Кнопка сформировать типовая или самописная?

Включена
Я заходил в эту процедуру буквально утром

(6) Boneman,
Какое отношение они имеют к отчету на СКД. Тем более, что на локальной машине у меня антивируса нет. Я с неё в инет не захожу, это моя рабочая виртуальная машина, сделанная на VirtualBox.

Мляха буха. А сейчас попал. Четыре часа мулчался. Никак не могу понять, что я сделал, из-за чего она туда не попадала и что я сделал, чтобы я туда попал.
Едиственное, что могу предположить, что дело в хранилище настроек ХранилищеВариантовОтчетов

(7) newborn, такая ситуация может встречаться, если есть динамические обновления. Чистить кэш нужно и перезапускать софт. Но для встроенных объектов такой проблемы нет.

(9) Xershi,
Я даже перезагрузился.
Вот утром - захожу.
Потом что-то сделал - не захожу.
Потом что-то ещё сделал (а среди прочего почистил кэш и почистил хранилище настроек, ещё разок перезагрузился) - опа! опять попал в эту процедуру.

Прям, шайтан какой-то.

(10) newborn, скорее всего там был какой-то механизм кэширования. Из-за этого проблемы с отладкой. Я в тонкостях не разбирался, но перезапуск софта и чистка кэша помогала.

12. user682398_paul_candle 2 20.12.17 11:24 Сейчас в теме

У меня оказалось, что в аналогичной ситуации отладчик не останавливался в ПриКомпоновкеРезультата() из-за того, что отчет запускался в фоновом режиме. В результате смог попасть в ПриКомпоновкеРезультата после изменения настройки отладчика Отладка. Подключение. Автоматическое подключение. Фоновые задания.

(12) Тоже смог зайти в эту процедуру только после включения в Автоматическом подключении Фоновых заданий !

Нужно в серверном варианте включать режим debug для отладки серверных процедур.

Тоже не получалось отлаживать серверные вызовы.
В реестре HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\1C:Enterprise 8.3 Server Agent добавил -debug -http, стало например "C:\Program Files (x86)\1cv8\8.3.10.2252\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files (x86)\1cv8\srvinfo" -debug -http", перезапустить службу Агента сервера 1С:Предприятия 8.3, очистить 1С-кэши и ВСЁ станет замечательно )))

Сервис - Параметры - Запуск 1С:Предприятие - Параметр запуска = РежимОтладки

(17) отладка была включена :)
Сначала помогала чистка кеша. Потом она перестала. Потом помогло включение отладки фоновых заданий. Потом оно тоже перестало помогать. В конце концов ушел на отладку в копии которой никого кроме меня нет и все заработало.
Судя по местным комментам это возникает когда отчет запускает выполнение в фоновые задачи, которые при динамическом обновлении подвисают на сервере и отладка в реальные процедуры которые изменены не заходит.
У меня последняя платформа, соответственно дело не в ней. :)
Короче отлаживайте в копии в которой никого кроме вас нет.


Знакомая ситуация, ставишь точку останова на строке кода в отладчике, а она не срабатывает, хотя программа точно через нее проходит. Такое бывает если данная строка кода выполняется на севере 1С на котором не включен режим отладки.

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

Так как же включить режим отладки на сервере 1С? Очень просто. Необходимо всего лишь прописать ключ -debug в строке запуска службы сервера 1С 8.3 и перезапустить данную службу. Это конечно если сервер установлен как служба, если же он запускается как самостоятельное приложение, то и указанный ключ необходимо прописать в строке запуска этого приложения. Правда такой режим запуска сервере 1С очень редкое явление и на практике встречается не часто, поэтому рассматривать его не будем.

Для того чтобы изменить строку запуска службы сервера 1С придётся зайти в реестр Windows. Для редактирования реестра используется программа regedit. Проще всего найти и запустить ее можно через быстрый доступ по комбинации клавиш Win+R.

Консоль запуска программ в Windows

В поле вводим regedit, нажимаем ОК, на вопрос системы безопасности отвечаем ДА и запускаем программу. Открываем ветку HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ services и там ищем что то похожее на 1C:Enterprise 8.3 Server Agent. Имя может отличаться в зависимости от версии установленного сервера 1С.

Включаем отладку сервера 1С 8.3 в реестре Windows

Настройка службы сервера 1С 8.3 в реестре Windows

Заходим в это раздел и находим параметр ImagePath. Открываем его на редактирование двойным кликом мыши. В поле «Значение» в конце добавляем ключ -debug и сохраняем.

Ключ -debug в строке запуска сервера 1С в реестре

Ключ -debug в строке запуска службы сервера 1С

После проверки перезапускаем службу. После этого можно проверять работу отладчика в конфигураторе 1С. Здесь можно почитать как настроить отладку в конфигураторе 1С. Если после включения отладки на сервере 1С, у вас все равно не получилось подключиться к серверным сеансам, смотрим возможные причины здесь.


Форма подключения и настройки отладки в Конфигураторе 1С

Форма подключения и настройки отладки в Конфигураторе 1С

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

Итак, при настройке отладки в конфигураторе 1С надо учесть два момента.

Первое, если вы запустили Конфигуратор не на сервере 1С, то для поиска предметов отладки надо указать имя или IP адрес сервера 1С (если хотим отлаживать не серверный, а клиентский сеанс другого пользователя, то соответственно клиентского компьютера). Для этого ставим флажок «Искать предметы отладки на удалённом компьютере» и рядом в поле вводим имя компьютера, например – srv1c.

Настройка поиска отладки на удаленном компьютере в Конфигураторе 1С

Второе. Бывают случаи, когда сервер 1С (тестовый к примеру) запущен не на типовых портах по умолчанию из диапазона 1560-1591, а, например, на портах 1660-1691. Тогда надо по кнопке «Настройка» в форме настройки отладчика указать тот диапазон портов для поиска предметов отладки который был задан в строке запуска службы сервера 1С. В моем случае ставим диапазон 1560-1900, это потому что у меня есть еще запущены тестовые сервера 1С на диапазонах портов 1760-1791 и 1860-1891. После этого нажимаем в правом верхнем углу значок «Обновить» и видим появившиеся предметы отладки. Видно что у серверного сеанса порт указан 1660, это как раз тот сеанс который подключен к тестовому серверу 1С, запущенному на диапазоне портов 1660-1691.

Настройка портов для поиска предметов отладки в Конфигураторе 1С

Теперь можно выбрать нужный сеанс и нажать кнопку «Подключить», предмет отобразиться в нижней части формы в разделе «Подключенные предметы отладки».

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

Точка останова при отладке в строке кода 1С

Если после всех настроек список доступных предметов отладки так и остался пустым, то следует проверить включен ли режим отладки на сервер 1С. Вот здесь можно посмотреть как включить отладку на сервере 1С.

Доступ к настройкам параметров в клиентском приложении 1С

Настройка параметров отладки в клиентском приложении 1С

После этой настройки в конфигураторе обновляем список доступных предметов отладки, если все сделано правильно, там должен появится данный клиентский сеанс.


Теперь нам не надо вручную искать предмет отладки и нажимать кнопку «Подключить». Система сама подключиться к запущенному сеансу и сработает точка останова поставленная на строке кода.


Читайте также: