No Image

Запустить регламентное задание 1с программно

СОДЕРЖАНИЕ
18 просмотров
04 мая 2020

Область применения: управляемое приложение, обычное приложение.

Методическая рекомендация (полезный совет)

1. Рекомендуется предоставлять пользователям альтернативную возможность по выполнению регламентных заданий вручную. Например, предлагать «по кнопке» выполнить обработку данных, обычно выполняемую регламентным заданием в фоне. Это вызвано тем соображением, что работа системы не должна зависеть от автоматического выполнения регламентных заданий. В частности:

  • выполнение регламентных заданий может быть осознанно выключено на кластере серверов 1С:Предприятия;
  • в отличие от клиент-серверного режима работы 1С:Предприятия версии 8.2 и ранее, в котором регламентные и фоновые задания выполняются на сервере, в файловом режиме отсутствовала возможность по их автоматическому выполнению.

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

1.1. В случае если регламентное задание изменяет в системе некоторые данные , которые необходимы определенному бизнес-процессу или выводятся в конкретном «рабочем месте» (форме), то в таких «рабочих местах» дополнительно рекомендуется размещать команду для выполнения этого действия. Например:

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

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

Пример ручного запуска задания по очистке устаревших версий объектов:

// Проверка, выполняется ли фоновое задание по очистке устаревших версий.
Отбор = Новый Структура;
Отбор.Вставить("ИмяМетода", ИмяМетода);
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
ФоновыеЗаданияОчистки = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Если ФоновыеЗаданияОчистки.Количество() = 0 Тогда
НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = ‘Запуск вручную: %1’"), РегламентноеЗаданиеМетаданные.Синоним);
ФоновыеЗадания.Выполнить(ИмяМетода. НаименованиеФоновогоЗадания);
КонецЕсли;
КонецПроцедуры

Читайте также:  Как по мз можно отличить подделку монитора

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

  • обновление и перестроение агрегатов;
  • установка периода рассчитанных итогов.

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

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

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

Примеры регламентных заданий, которые не меняют данные в базе:

  • рассылка по почтовым адресатам информации об ошибках в журнале регистрации;
  • рассылка информации о новых/просроченных задачах;
  • периодический запуск внешних обработок для рассылки отчетов.

При использовании в конфигурации Библиотеки стандартных подсистем такое рабочее место уже входит в состав подсистемы «Регламентные задания» (форма «Регламентные и фоновые задания»).

2. Для администраторов информационных баз действует рекомендация: на период выполнения обновления ИБ блокировать работу регламентных заданий. Однако если обновление выполняет неподготовленный пользователь, в особенности, в файловом режиме работы, то рекомендуется дополнительно предусмотреть следующие меры:

  • в файловом режиме работы, при неудачной попытке установки монопольного режима для обновления данных ИБ предлагать автоматически блокировать работу регламентных заданий (перезапуск программы с ключом командной строки /AllowExecuteScheduledJobs -Off );
  • в начале кода обработчиков регламентных заданий проверять режим работы и прерывать работу регламентного задания с помощью вызова исключения, если обновление ИБ еще не завершено.
Читайте также:  Не могу определить ссылки на скачивание

При использовании в конфигурации Библиотеки стандартных подсистем первая рекомендация реализована в подсистеме «Обновление версии ИБ», а для выполнения второй предусмотрена процедура ПриНачалеВыполненияРегламентногоЗадания общего модуля ОбщегоНазначения , вызов которой необходимо размещать в начале кода обработчиков регламентных заданий.

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

Алгоритм работы описывается в функции ВыполнитьРегламентныеДействия .

Выполнение алгоритма запускается двумя способами:

  • при нажатии кнопки «Выполнить регламентное задание» в настройках модуля
  • при запуске регламентного задания программно из конфигурации

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

Второй вариант имеет несколько ограничений:

  • использовать можно только методы, работающие на сервере
  • обращение к формам модуля невозможно
  • требуется внесение изменений в конфигурацию (добавление регламентного задания в 1С, описание функции вызова ВыполнитьРегламентныеДействия )

Чаще всего использование регламентного задания предполагает:

  • обновление ленты событий
  • проведение анализа документов и запись требуемых действий
  • отправка на подпись или согласование
  • выполнение сопоставления документов
  • подписание и отправка сертификатом установленным на сервере 1С

Пример получения новых событий и отправка документов:

При большом объеме документов на отправку возникает потребность убрать эту задачу с пользователя.

В этом случае тот сертификат, которым будет производиться подписание, устанавливается на сервер 1С.

Отпечаток сертификата указывается в настройках основного модуля для организации: элемент организации → закладка «Прочие настройки» → поле «Отпечаток сертификата на сервере 1С»

Рассмотрим программный запуск фонового задания 1С на примере запуска обмена с Битрикс из «Управление торговлей ред. 10.3».

Задача: по кнопке осуществлять программный запуск фонового задания 1С для обмена заказами с сайтом. Перед запуском задания надо проверить, не выполняется ли оно прямо сейчас и проинформировать об этом пользователя.

Читайте также:  Nokia 8 sirocco в россии

Исходные данные: у нас уже есть регламентное задание, которое выполняет этот обмен.

Пояснения к коду

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

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

Наименование и ключ регламентного задания

Если в массиве не ноль элементов, значит есть активное фоновое задание. Сообщаем об этом пользователю.

Если выполняемых фоновых заданий не нашли, то создаем свое.

В массив параметров надо положить код обмена. Посмотреть его можно в плане обмена битрикса:

КодНастроек обмена с Битрикс

Пробуем запустить фоновое задание. Если получилось — сообщаем пользователю, что все ОК, если нет, то рекомендуем ему обратиться к разработчику.

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

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

Лог обмена с Битрикс

Если не знаете, где находится нужный вам лог, посмотрите в настройках обмена:

Расположение лога обмена с Битрикс

Комментировать
18 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock
detector