Как настроить автоматический запуск внешней обработки по расписанию в 1С 8.3?

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

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

Рассмотрим подробно все нюансы настройки автоматического запуска и разберем пути решения возникающих проблем.

Особенности запуска в зависимости от режима работы базы данных

Проанализируем, как механизм регламентных заданий платформы «1С:Предприятие» выполняет обработку в различных режимах:

  1. Клиент-серверный режим (SQL): За запуск фоновых процессов отвечает служба кластера серверов 1С (процесс rphost). В этом режиме регламентное задание запускается автоматически строго по расписанию даже в том случае, когда в информационной базе нет ни одного активного пользователя. Задание выполняется от имени пользователя информационной базы, который назначен в настройках регламентного задания, либо от системного пользователя.
  2. Файловый режим: В файловых информационных базах отсутствует отдельная служба сервера, выполняющая код в фоне без запущенных приложений. Для того чтобы регламентные задания отрабатывали автономно, требуется создать и поддерживать запущенный сеанс 1С. Для этого настраивают запуск служебного сеанса через Планировщик заданий операционной системы с использованием параметра командной строки /C ЗапуститьОбработкуРегламентныхЗаданий.

От чьего имени выполняется обработка и настройка прав

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

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

Решение проблемы с предупреждением безопасности

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

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

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

Кроме того, если внешняя обработка разработана с использованием механизмов Библиотеки Стандартных Подсистем (БСП), в модуле объекта обработки в функции СведенияОВнешнейОбработке() можно явно отключить безопасный режим для команды:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    
    // Настройка команд обработки
    СтрокаКоманды = ПараметрыРегистрации.Команды.Добавить();
    СтрокаКоманды.Идентификатор = "ВыполнитьПоРасписанию";
    СтрокаКоманды.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    
    Возврат ПараметрыРегистрации;
КонецФункции

Ограничения при фоновом выполнении и вывод диалоговых окон

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

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

  1. Обработчик ожидания на клиенте: В модуле управляемого приложения или формы настраивается метод ПодключитьОбработчикОжидания(), который через заданный интервал проверяет серверные данные (например, флаг в регистре сведений) и при необходимости открывает нужную форму интерактивно.
  2. Система взаимодействия: Использование механизма встроенных оповещений и сообщений платформы для отправки уведомлений в сеанс целевого пользователя.

Диагностика выполнения

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

← На главную