Отладка регламентных заданий 1с. Отладка фоновых заданий. Настроить автоматическое подключение фоновых заданий в конфигураторе

Отладка 1С — очень мощный и функциональный механизм платформы 1С 8.3, позволяющий быстро найти ошибки в программном коде (в других языках программирования это называется «дебаг», от английского «debug»).

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

Внимание! Если Вы используете клиент-серверный режим работы (на сервере), Вам необходимо .

Самый простой способ запустить отладку в 1С — открыть 1С в режиме и из него запустить режим отладки в нужном режиме работы (тонком/толстом, управляемом/обычном):

Отладка фоновых заданий 1С

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

В этом окне Вы можете установить соответствующий флаг.

Помимо фоновых заданий, в данном окне Вы можете включить отладку внешних соединений, http и .

Установка точки останова (брейкпойнта)

Вторым этапом при отладке является установка точки останова (в других языках программирования — брейкпойнт).

Для примера я выбрал для отладки обработчик «При изменении» на форме документа :

Для того чтобы установить точку останова, необходимо найти нужный программный код и кликнуть дважды на поле, слева от поля ввода кода (или нажать кнопку F9):

Чтобы увидеть список всех установленных, необходимо зайти в меню Отладка — Список точек останова (alt + F9):

Получите 267 видеоуроков по 1С бесплатно:

Точка останова 1С с условием (синяя)

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

Например, остановим цикл на строке с номером 25:

Неактивная точка останова (серая)

Серая точка останова означает, что она не активна, система не будет останавливаться на такой точке. Сделать не активной её можно, нажав специальную кнопку на панели «Отключить точку останова» (shift+ctrl+F9):

Точка останова по ошибке

Система может остановиться по вызванной ошибке, для этого необходимо в меню Отладка — Остановка по ошибке установить соответствующий флаг:

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

Пошаговое перемещение по программному коду 1С

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

Для того чтобы сделать шаг к следующей строке, необходимо нажать кнопку «F11″(Шагнуть в).

Если Вы пошагово проходите по строчкам программного кода и на строке присутствует процедура или функция, то Вы «провалитесь» внутрь этой процедуры (или функции).

Чтобы не «проваливаться», достаточно вместо F11 (Шагнуть в) выполнять переход по строкам кнопкой F10 (Шагнуть через), эта кнопка позволяет перешагивать через процедуры в программном коде.

Чтобы перейти с текущего положения курсора к нужному, минуя промежуточные строчки кода, необходимо установить курсор на нужной строке и нажать shift + F10 (Идти до курсора).

Анализ значений в режиме отладки 1С

Посмотреть значения определенных значений можно разными способами:

Отображение значения при наведении курсора

При наведении на переменную система «подсвечивает» значения переменной:

Использование «Вычислить выражение» или «Табло»

  • Форму Вычислить выражение можно вызвать с помощью контекстного меню или нажатия быстрых клавиш — (Shift + F9), или меню (Отладка — Вычислить выражение).
  • Табло вызывается с помощью быстрых клавиш Ctrl + Alt +W или из меню (Отладка — Табло).

Эти два метода анализа очень похожи, основные отличия в интерфейсе. Табло удобнее использовать для группы показателей, выражения — для одиночных.

Использовать эти методы очень просто. Достаточно ввести в табло имя нужной переменной. Большой плюс произвольных вычислений — Вы можете добавить в выражение свои данные.

Например:

Очень полезно использовать вычисление выражения и выполнить запрос, выгрузить в таблицу значений и посмотреть её.

Как узнать откуда вызвана процедура в отладке — Стек вызовов

Очень часто требуется понять, откуда была вызвана та или иная процедура или функция и с какими параметрами. Для этого в 1С предусмотрена специальная функция — «Стек вызовов». Для запуска Стека вызовов необходимо нажать горячие клавиши — Ctrl + Alt + C или через меню (Отладка — Стек вызовов).

С помощью него Вы можете подробно узнать, откуда была вызвана процедура и с какими параметрами:

Если Вас интересует оценка производительности при отладке — .

Смотрите также обзорное видео по отладке в 1С:

В современных конфигурациях 1С:Предриятия очень широко используются фоновые задания.

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

Включить режим отладки на сервере 1С:Предприятия.

Первое, что необходимо сделать — это убедиться в том, сервер 1С:Предприятия запущен в режиме отладки. Если отладка на сервере не включена, необходимо остановить службу ragent и повторно запустить ее с параметром /debug

Настроить автоматическое подключение фоновых заданий в конфигураторе

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

В открывшемся диалоговом окне нажать кнопку Автоматическое подключение и в следующем окне установить флажок Фоновые задания

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

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

Дело в том, что строка подключения для запуска конфигуратора должна в точности совпадать со строкой подключения фонового задания. Причем совпадение должно быть посимвольным. Учитывается даже регистр букв. Ведь при добавлении базы в список информационных баз мы можем прописать кластер серверов для одной и той же базы несколькими разными способами: с помощью IP-адреса, через имя сервера, с указанием порта и без него. И все эти разные строки подключения могут срабатывать одинаково успешно. Но при отладке фоновых заданий могут начаться проблемы. Так, например, я столкнулся с тем, что в списке баз у меня была прописана строка подключения с использованием порта

Srvr="Server1C:1541";Ref="Test";

А фоновое задание почему-то запускалось без указания порта

Srvr="Server1C";Ref="Test";

Поэтому пришлось изменить строку подключения в списке баз соответствующим образом.
Но тут сразу же возникает вопрос. Как узнать строку подключения фонового задания? Здесь нам может прийти на помощь . Ведь в момент выполнения фонового задания мы можем программно делать записи в журнал регистрации. А с помощью процедуры СтрокаСоединенияИнформационнойБазы() мы сможем получить строку подключения.

Таким образом, делаем в подходящем общем модуле (у меня это будет ФоновыеЗаданияСервер ) вот такую процедуру

Процедура ЗаписатьВЖурналСтрокуПодключения() Экспорт СтрокаПодключения = СтрокаСоединенияИнформационнойБазы() ; ЗаписьЖурналаРегистрации(СтрокаПодключения) ; КонецПроцедуры

А теперь выполним эту процедуру запустив :

&НаСервере Процедура ЗаписатьСтрокуПодключенияНаСервере() ФоновыеЗадания. Выполнить ("ФоновыеЗаданияСервер.ЗаписатьВЖурналСтрокуПодключения" ) ; КонецПроцедуры

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

Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема.

Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема. И проблема эта заключается в том, что отладчику не удается подключиться к процессу исполняемому на стороне сервера.

Для решение этой проблемы нам необходимо решить две задачи:

1. Включить отладку на сервере 1С. По умолчанию отладка на сервере выключена и чтобы ее включить, необходимо:Запустить реестр Windows, прописав в "Выполнить " команду REGEDIT . Найти строчку

"C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent

(взятую из параметров запуска службы Агент сервера 1С:Предприятия 8.1). (это для версии платформы 8.1)

Дописать в конец ключ -debug (не забываем перед ключом -debug ставить пробел )

Пример
. "ImagePath"= было "С:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "С:\Program Files\1cv81\server" ставим "С:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "С:\Program Files\1cv81\server"

Перезапустить агент сервера. Готово. Теперь нам доступна отладка серверных потоков исполнения.

2. Регистр букв имени сервера и имени базы в соединение клиента с сервером 1С должен в точности совпадать.

Правильное подключение:
Фоновое задание Клиент - Srvr="SERVER-NAME";Ref="Base_Name";
Неправильное подключение :
Фоновое задание - Srvr="SERVER-NAME";Ref="Base_Name" ; Клиент - Srvr="Server-name";Ref="Base_Name";

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

Код следующий:

Процедура ЗаписатьСоединениеСБазой () Экспорт
ЗаписьЖурналаРегистрации (,СтрокаСоединенияИнформационнойБазы ());
КонецПроцедуры

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


Теперь указываем автоматическое подключение к фоновым заданиям.

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


Вы еще не читали? Вам это будет интересно...

Последние материалы раздела:

Неисправности инфракрасных (ИК) пультов дистанционного управления (ДУ)
Неисправности инфракрасных (ИК) пультов дистанционного управления (ДУ)

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

Услуга Теле2
Услуга Теле2 "В Крыму, как дома": описание, цены и альтернативный вариант

работают не совсем так, как в других регионах России, из-за боязни санкций (а может и по иным причинам) на полуострове не работают Мегафон, Билайн...

Способы удаления разделов жесткого диска
Способы удаления разделов жесткого диска

Использование разрывов особенно популярно у тех, кто часто создает в текстовом редакторе большие по объему документы, имеющие разделы, подразделы и...