Почему отладчик 1С не заходит в серверную функцию и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Рассмотрим подробно причины, почему платформа «1С:Предприятие» не проваливается в серверный контекст, и проанализируем варианты решения этой проблемы.

Причина 1. Служба сервера 1С запущенна без ключа отладки

В клиент-серверном варианте работы отладка серверного кода по умолчанию выключена для экономии ресурсов. Если агент сервера 1С (процесс ragent.exe) запущен без специального параметра -debug, отладчик Конфигуратора не сможет подключиться к серверному сеансу. На клиенте код будет выполняться, но провалиться внутрь процедуры или функции с директивой &НаСервере не удастся.

Разберем по шагам, как включить режим отладки на сервере 1С:

  1. Откройте реестр ОС Windows или параметры службы сервера 1С:Предприятие.
  2. Найдите строку запуска службы агента сервера (ragent.exe).
  3. Добавьте ключ -debug в конец строки параметров запуска.
  4. Перезапустите службу сервера «1С:Предприятие».

Пример командной строки запуска службы с включенным режимом отладки:


"C:\Program Files\1cv8\8.3.10.2252\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Причина 2. Настройки автоматического подключения отладчика

Даже если на сервере включен режим отладки, Конфигуратор должен быть настроен на автоматический перехват серверных предметов отладки. Проанализируем настройки отладчика:

  1. В Конфигураторе выберите пункт меню Отладка — Подключение...
  2. Нажмите кнопку Настройка автоматического подключения.
  3. Убедитесь, что установлены флаги для подключения к серверным сеансам и при необходимости к фоновым заданиям.
  4. Сохраните настройки и переподключите отладчик.

Причина 3. Кэширование модуля внешней обработки

Если разработка ведется во внешней обработке (файл .epf), платформа 1С может кэшировать старую версию модуля в оперативной памяти сеанса. В результате хэш-код модуля в Конфигураторе и в запущенном сеансе различается, из-за чего отладчик проскакивает точки останова.

Чтобы решить проблему с кэшированием внешних обработок, выполним следующие действия:

  1. Закройте форму внешней обработки в режиме «1С:Предприятие».
  2. В Конфигураторе пересохраните обработку (можно с новым именем через Файл — Сохранить как...).
  3. Откройте файл заново через меню Файл — Открыть в клиенте.
  4. Если отладка все равно не срабатывает, перезапустите сеанс через меню Конфигуратора: Отладка — Начать отладку.

Причина 4. Накопление локального кэша платформы

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

Для очистки кэша выполните очистку содержимого каталогов:

Причина 5. Ошибки исполнения на сервере и правила отладки функций

Посмотрим на пример вызова серверной функции из модуля формы:


&НаСервере
Функция Команда1НаСервере()
    ФизЛицо = Объект.СсылкаНаОбъект.ФизическоеЛицо;
    Для Каждого Строка Из ФизЛицо.КонтактнаяИнформация Цикл
        Если Строка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес 
           И Строка.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации Тогда
            Адрес = Строка.Представление;
        КонецЕсли;
    КонецЦикла;
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
    Команда1НаСервере();
КонецПроцедуры

Если при выполнении серверного кода происходит ошибка (например, у реквизита ФизическоеЛицо отсутствует табличная часть КонтактнаяИнформация или реквизит не заполнен), а в Конфигураторе не включена остановка по ошибке, вызов может завершаться досрочно.

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

← На главную