При добавлении внешней обработки в справочник «Дополнительные отчеты и обработки» типовой конфигурации на платформе «1С:Предприятие 8.3» часто возникает необходимость запускать ее по заданному расписанию в автоматическом режиме. При этом у разработчиков и администраторов возникают вопросы: от чьего имени выполняется задание, может ли оно выполняться, если в базе нет активных пользователей, и что делать, если фоновое выполнение блокируется окном «Предупреждение безопасности».
Рассмотрим подробно все нюансы настройки автоматического запуска и разберем пути решения возникающих проблем.
Проанализируем, как механизм регламентных заданий платформы «1С:Предприятие» выполняет обработку в различных режимах:
rphost). В этом режиме регламентное задание запускается автоматически строго по расписанию даже в том случае, когда в информационной базе нет ни одного активного пользователя. Задание выполняется от имени пользователя информационной базы, который назначен в настройках регламентного задания, либо от системного пользователя./C ЗапуститьОбработкуРегламентныхЗаданий.Выясним, под какой учетной записью платформа стартует фоновое выполнение. В свойствах созданного регламентного задания в конфигураторе или в справочнике дополнительных обработок указывается конкретный пользователь информационной базы. Именно его права, настройки и параметры безопасности будут использоваться при выполнении модуля обработки.
Для корректной работы служебному пользователю необходимы права (роли), достаточные для чтения и изменения тех данных, с которыми взаимодействует алгоритм внешней обработки.
В современных версиях платформы 1С 8.3 действует встроенный механизм защиты от опасных действий. Если внешняя обработка запускается по расписанию в фоновом задании, диалоговое окно с подтверждением безопасности не может отобразиться пользователю, в результате чего в Журнале регистрации фиксируется ошибка или предупреждение, а выполнение прерывается.
Разберем по шагам, как настроить систему для беспрепятственного автоматического выполнения:
Робот или СлужбаФоновыхЗаданий).Кроме того, если внешняя обработка разработана с использованием механизмов Библиотеки Стандартных Подсистем (БСП), в модуле объекта обработки в функции СведенияОВнешнейОбработке() можно явно отключить безопасный режим для команды:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
// Настройка команд обработки
СтрокаКоманды = ПараметрыРегистрации.Команды.Добавить();
СтрокаКоманды.Идентификатор = "ВыполнитьПоРасписанию";
СтрокаКоманды.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
Важно помнить, что фоновые и регламентные задания всегда выполняются на сервере вне контекста пользовательского интерфейса. В коде таких процедур категорически запрещено использовать клиентские интерактивные методы (например, ОткрытьФорму(), Предупреждение(), Вопрос()).
Если стоит задача периодически выводить диалоговое окно или форму конкретному работающему пользователю, регламентное задание сервера не сможет открыть его напрямую. В таких случаях применяются следующие подходы:
ПодключитьОбработчикОжидания(), который через заданный интервал проверяет серверные данные (например, флаг в регистре сведений) и при необходимости открывает нужную форму интерактивно.Посмотрим, где анализировать ход выполнения и возможные ошибки. Все результаты работы регламентных процедур логируются в Журнале регистрации. Для фильтрации событий необходимо выбрать события «Регламентное задание» и «Фоновое задание» со статусом «Ошибка» или «Предупреждение».