Как запустить отладку отчета в 1С:ЗУП 3.1, если точки остановки не срабатывают?

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

Разработка и доработка отчетов в современных конфигурациях, таких как 1С:Зарплата и Управление Персоналом 3.1, часто превращается в сложную задачу для программиста. Одной из самых распространенных проблем является ситуация, когда расставленные в коде точки остановки упорно игнорируются системой. Вы меняете код, видите изменения в формируемом макете, но «провалиться» в процедуру для анализа значений переменных не получается. Рассмотрим подробно, почему это происходит и как настроить рабочее окружение для полноценной отладки.

Почему 1С игнорирует точки остановки?

Проанализируем архитектуру современных типовых решений. Большинство отчетов в ЗУП 3.1 построены с использованием Библиотеки стандартных подсистем (БСП). Одной из ключевых особенностей является выполнение длительных операций, к которым относится и формирование отчетов, в фоновом режиме. Это делается для того, чтобы интерфейс пользователя не «зависал» во время построения тяжелой таблицы.

Когда вы нажимаете кнопку «Сформировать», система порождает новый сеанс на сервере — фоновое задание. Ваш текущий сеанс конфигуратора «подцеплен» к клиентскому приложению, но он ничего не знает о новом серверном процессе, который внезапно возник и начал выполнять программный код отчета. Выясним, как заставить конфигуратор автоматически отслеживать эти процессы.

Способ 1. Настройка автоматического подключения к фоновым заданиям

Это самый простой и эффективный способ, который помогает в большинстве случаев. Разберем по шагам, как активировать эту опцию в конфигураторе:

  1. Откройте конфигуратор и перейдите в меню Отладка.
  2. Выберите пункт Подключение....
  3. В открывшемся окне нажмите кнопку Автоматическое подключение.
  4. Установите флажок напротив пункта Фоновые задания.
  5. Нажмите «ОК» и закройте окно подключений.

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

Способ 2. Использование параметров запуска (РежимОтладки)

Иногда автоматическое подключение может не срабатывать из-за особенностей сетевых настроек или задержек в регистрации сеансов. В таких случаях мы можем использовать «хитрость» и заставить отчет формироваться не в фоне, а непосредственно в основном сеансе. Для этого проанализируем возможности параметров запуска.

В конфигураторе перейдите в Сервис — Параметры — Запуск 1С:Предприятия — Основные. В поле «Параметры запуска» впишите:

/Параметр РежимОтладки

Многие типовые отчеты на БСП проверяют наличие этого параметра. Если он передан, система понимает, что разработчик хочет видеть процесс формирования «здесь и сейчас», и отключает механизм фонового выполнения. В этом случае код будет выполняться в контексте вашего основного сеанса, и точка остановки сработает гарантированно.

Способ 3. Проверка настроек сервера 1С:Предприятия

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

Рассмотрим, как включить отладку на сервере под управлением Windows:

  1. Остановите службу 1C:Enterprise 8.3 Server Agent.
  2. Откройте редактор реестра (regedit).
  3. Найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.
  4. Найдите параметр ImagePath.
  5. В конец строки запуска добавьте параметр -debug. Пример должен выглядеть примерно так:
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
    
  6. Запустите службу сервера.

Важно: Без параметра -debug на стороне сервера отладка серверного кода (включая фоновые задания) работать не будет, какие бы галочки вы ни ставили в конфигураторе.

Способ 4. Переход на протокол HTTP

Начиная с версии платформы 8.3.14, 1С поддерживает отладку по протоколу HTTP. Это более стабильный механизм, особенно для распределенных сетей. Посмотрим, как его включить:

В настройках конфигуратора (Сервис — Параметры — Отладка) выберите Протокол отладки: HTTP. При использовании этого протокола вместо прямого TCP-соединения используется специальный сервер отладки dbgs. Это часто решает проблемы, когда отладчик «не видит» серверные вызовы из-за блокировок портов фаерволом.

Способ 5. Особенности внешних отчетов и безопасный режим

Если ваш отчет является внешним и подключен через справочник «Дополнительные отчеты и обработки», он может запускаться в Безопасном режиме. В этом режиме отладка кода может быть ограничена политиками безопасности системы.

Проанализируем ситуацию: если вы пытаетесь отладить внешний отчет, лучше всего на время разработки открывать его через меню Файл — Открыть. Если же необходимо тестировать именно в составе подсистемы дополнительных обработок, убедитесь, что в карточке регистрации отчета снят флажок «Безопасный режим» (или установлена соответствующая настройка разрешений).

Программные методы «принудительной» остановки

Если ничего из вышеперечисленного не помогает, можно прибегнуть к методам, которые заставят систему прервать выполнение кода:

1. Остановка по ошибке. Добавьте в начало интересующей вас процедуры заведомо ошибочный код:


Процедура ЗаполнитьМакет()
    // Временный код для вызова отладчика
    А = 1 / 0; 
    ...
КонецПроцедуры

В конфигураторе включите режим Отладка — Остановка по ошибке. Когда выполнение дойдет до деления на ноль, система предложит «Конфигурировать», и вы окажетесь ровно в том месте кода, которое вас интересует. После этого вы сможете увидеть стек вызовов и понять, в каком сеансе выполняется код.

2. Искусственная пауза. Иногда фоновое задание пролетает настолько быстро, что отладчик не успевает к нему подключиться. Выясним, как дать ему время:


// Для платформы 8.3.15+
Приостановить(10); // Пауза на 10 секунд

Добавьте этот вызов в начало серверной процедуры. За эти 10 секунд вы успеете вручную зайти в Отладка — Подключение и проверить, появилось ли там новое фоное задание, чтобы подключиться к нему принудительно.

Отладка в веб-клиенте

Если вы работаете через браузер, ситуация усложняется. Для успешной отладки необходимо, чтобы в файле публикации (default.vrd) был разрешен режим отладки. Рассмотрим фрагмент конфигурации файла публикации:

<debug enable="true" url="tcp://localhost" />

Без этого параметра сервер не будет транслировать отладочную информацию в сеанс веб-клиента. Также при запуске браузера рекомендуется добавлять к адресу базы параметр /debug, например: http://server/base/?debug.

Подведем итог: для успешной отладки отчета в ЗУП 3.1 необходимо обеспечить работу сервера в режиме -debug, включить автоматическое подключение фоновых заданий в конфигураторе и, при необходимости, использовать параметр РежимОтладки для запуска кода в основном потоке приложения. Сочетание этих методов позволяет решить 99% проблем с «невидимыми» точками остановки.

← На главную