рубрики: Регламентные задания | Дата: 17 мая, 2017
В современных конфигурациях 1С:Предриятия очень широко используются фоновые задания.
В частности во всех типовых конфигурациях многие отчеты формируются в фоновом режиме, что позволяет во время формирования отчета продолжать работать в той же самой сессии 1С не дожидаясь завершения выполнения отчета. И конечно же возникает необходимость отладки кода во время выполнения фоновых заданий. Для успешного запуска отладки фоновых заданий необходимо выполнить несколько условий.
Первое, что необходимо сделать — это убедиться в том, сервер 1С:Предприятия запущен в режиме отладки. Если отладка на сервере не включена, необходимо остановить службу ragent и повторно запустить ее с параметром /debug
Поскольку фоновое задание не имеет клиентской части, в конфигураторе выполняется настройка автоматического подключения к фоновым заданиям. Для этого необходимо в меню выбрать пункт Отладка —> Подключение
В открывшемся диалоговом окне нажать кнопку Автоматическое подключение и в следующем окне установить флажок Фоновые задания
Теоретически двух вышеперечисленных пунктов должно хватить, чтобы в момент выполнения фонового задания начали отрабатывать точки останова. Но на практике многие сталкиваются с тем, что автоматического подключения к фоновым заданиям не происходит. Это связано со строкой подключения к информационной базе.
Дело в том, что строка подключения для запуска конфигуратора должна в точности совпадать со строкой подключения фонового задания. Причем совпадение должно быть посимвольным. Учитывается даже регистр букв. Ведь при добавлении базы в список информационных баз мы можем прописать кластер серверов для одной и той же базы несколькими разными способами: с помощью IP-адреса, через имя сервера, с указанием порта и без него. И все эти разные строки подключения могут срабатывать одинаково успешно. Но при отладке фоновых заданий могут начаться проблемы. Так, например, я столкнулся с тем, что в списке баз у меня была прописана строка подключения с использованием порта
Srvr="Server1C:1541";Ref="Test";
А фоновое задание почему-то запускалось без указания порта
Srvr="Server1C";Ref="Test";
Поэтому пришлось изменить строку подключения в списке баз соответствующим образом.
Но тут сразу же возникает вопрос. Как узнать строку подключения фонового задания? Здесь нам может прийти на помощь журнал регистрации. Ведь в момент выполнения фонового задания мы можем программно делать записи в журнал регистрации. А с помощью процедуры СтрокаСоединенияИнформационнойБазы() мы сможем получить строку подключения.
Таким образом, делаем в подходящем общем модуле (у меня это будет ФоновыеЗаданияСервер) вот такую процедуру
Процедура ЗаписатьВЖурналСтрокуПодключения() Экспорт
СтрокаПодключения = СтрокаСоединенияИнформационнойБазы();
ЗаписьЖурналаРегистрации(СтрокаПодключения);
КонецПроцедуры
А теперь выполним эту процедуру запустив программно фоновое задание:
&НаСервере
Процедура ЗаписатьСтрокуПодключенияНаСервере()
ФоновыеЗадания.Выполнить("ФоновыеЗаданияСервер.ЗаписатьВЖурналСтрокуПодключения");
КонецПроцедуры
Открываем журнал регистрации, смотрим запись со строкой подключения, и прописываем настройки подключения к базе по аналогии с фоновым заданием.
Огромное спасибо!!!!
И вам спасибо! Очень приятно слышать, что статья кому-то пригодилась
Спасибо. Я забыл о флаге в окне настройки. Прочитал и вспомнил!