Отладка регламентных заданий 1с 8.3. Отладка фоновых заданий. Блокировка регламентных заданий

В современных конфигурациях 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";

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

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

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

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


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

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


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

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

Например, вам нужно раз в сутки вам нужно совершать обмен данными с другой программой. Используя регламентные и фоновые задания, 1С сможет производить данные действия самостоятельно, например, в нерабочее время. Такой способ никак не повлияет на работу пользователей и поможет сэкономить время.

Для начала разберемся, что же они обозначают и в чем их отличие:

  • Регламентное задание позволяет запускать на выполнение какие-либо конкретные действия по заранее настроенному расписанию.
  • Фоновое задание – это объект, в котором содержатся выполняемые действия.

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

Откройте конфигурацию и добавьте регламентное задание.

Настройка свойств

Рассмотрим самые важные параметры, которые необходимо заполнить в его свойствах.

  • В поле «Имя метода » выбирается та процедура какого-то определенного общего модуля, которая будет непосредственно выполняться. В ней будут указаны все действия по выгрузке цен на наш сайт. Обратите внимания, что выполнение будет происходить на сервере. Это логично, ведь регламентные операции выполняются без участия пользователя.
  • Регламентное задание можно отключать или включать по необходимости. Не нужно каждый раз править его расписание. Для этого в палитре свойств установите или снимите флаг «Использование ».
  • Еще одной немаловажной является настройка, будет ли являться данное регламентное задание предопределенным , или нет. Предопределенные регламентные задания запускаются автоматически. Если данный признак не установлен, то вам будет нужно запускать их программно, либо воспользоваться обработкой «Консоль заданий» с ИТС.
  • Так же вы можете указать количество повторов и интервал между ними при аварийном завершении. Под аварийным завершением подразумеваются те ситуации, когда задания не отработали по причине возникновения ошибки.

Настройка расписания

Завершающим шагом мы настроим расписание нашей выгрузки на сайт по соответствующей гиперссылке в палитре свойств.

Перед вами откроется типовая настройка расписания в 1С 8.3. Здесь нет ничего сложного. В рамках данного примера мы настроили запуск нашей выгрузки цен на сайт ежедневно с пяти до семи утра. В том случае, если регламентное задание не успеет отработать до 7:00, оно будет выполнено уже на следующий день.

Блокировка регламентных заданий

Запустите стандартную утилиту «Администрирование серверов 1С Предприятия» и откройте свойства той информационной базы, где вы создали регламентное задание (для клиент-серверных версий 1С).

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

Таким же образом можно полностью отключить регламентные задания в 1С 8.3. Для отключения конкретных фоновых заданий можно воспользоваться встроенной в последние релизы обработкой «Консоль фоновых заданий».

Фоновые и регламентные задания в файловом режиме

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

Активация регламентных заданий в данном случае производится при использовании метода «ВыполнитьОбработкуЗаданий()».

Так же вы можете воспользоваться следующей конструкцией:

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

Отслеживание ошибок в фоновых заданиях

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

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