Регламентное задание

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

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

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

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

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

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

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

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

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

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

// ОБРАБОТКА СОБЫТИЙ ЛЕНТЫ, В Т.Ч. ЗАГРУЗКА НОВЫХ ДОКУМЕНТОВ

КоличествоПорцийСобытий = 10; // Кол-во вычитываемых порций событий (каждая порция содержит не более 100 событий)
Для Каждого СтрокаОрганизации Из ОсновнойМодуль.ЭДО_Модуль_ТаблицаОрганизацийПользователя() Цикл

    ОписаниеОрганизации = Новый Структура;
    ОписаниеОрганизации.Вставить("BoxID",        СтрокаОрганизации.BoxID);
    ОписаниеОрганизации.Вставить("Наименование", СтрокаОрганизации.Наименование);
    ОписаниеОрганизации.Вставить("Ссылка",       СтрокаОрганизации.Ссылка);

    ОсталосьСобытийВЛенте = ОсновнойМодуль.ЭДО_Модуль_ОбработатьНовыеСобытияДокументов(ОписаниеОрганизации, КоличествоПорцийСобытий);

КонецЦикла;

// ВЫПОЛНЕНИЕ MessagePatchToPost

Режим = ""; // Режим исполнения: ПередатьНаСогласование / ПередатьНаПодпись / ПередатьПоМаршруту / Согласование / ОтказВСогласовании

ПараметрыMessagePatchToPost = Новый Структура;
ПараметрыMessagePatchToPost.Вставить("Действие",                   Режим); // вариант режима MessagePatchToPost
ПараметрыMessagePatchToPost.Вставить("ИдентификаторСотрудника",    Неопределено); // внутренний ID Диадока
ПараметрыMessagePatchToPost.Вставить("ИдентификаторПодразделения", Неопределено); // внутренний ID Диадока
ПараметрыMessagePatchToPost.Вставить("ИдентификаторМаршрута",      Неопределено); // внутренний ID Диадока
ПараметрыMessagePatchToPost.Вставить("Комментарий",                "");           // произвольный текст

// Произвольная коллекция документов Диадока, которые необходимо пропатчить (необходимо собрать по нужному алгоритму).
// Элементы этой коллекции должны содержать ключ "ДокументДД".
ТаблицаДокументов = Новый ТаблицаЗначений;

Если ЗначениеЗаполнено(Режим) Тогда
    ОсновнойМодуль.ЭДО_ОтправитьMessagePatchToPostДляВыбранныхСтрокСпискаДокументов(ТаблицаДокументов, ПараметрыMessagePatchToPost);
КонецЕсли;

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

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

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

Пример подписания документов на сервере:

// ПРИМЕР ПОДПИСАНИЯ И ОТПРАВКИ СЕРТИФИКАТОМ УСТАНОВЛЕННЫМ НА СЕРВЕРЕ 1С
// ОГРАНИЧЕНИЯ: сервер под Windows; закрытый ключ сертификата установлен под учеткой агента сервера 1С с сохраненным пин-кодом

// 1. Авторизация под сертификатами сервера 1С
ОсновнойМодуль.ЭДО_АвторизоватьсяПодСертификатомНаСервере1С();
КонтекстСеанса = ОсновнойМодуль.ЭДО_КонтекстСеансаКлиентСервер();

// 2. Параметры для получения списка пакетов на отправку
ТаблицаВидовПакетов    = ОсновнойМодуль.ЭДО_СправочникМенеджер_ПолучитьСписокЭлементов("ВидыПакетов");
МассивВидовПакетов     = ТаблицаВидовПакетов.ВыгрузитьКолонку("Ссылка");

ПараметрыОбновленияСписка = Новый Структура;
ПараметрыОбновленияСписка.Вставить("Режим", "ОтправкаПакетов");
ПараметрыОбновленияСписка.Вставить("НачалоПериода", ДобавитьМесяц(ТекущаяДата(), -1));
ПараметрыОбновленияСписка.Вставить("КонецПериода", КонецДня(ТекущаяДата()));
ПараметрыОбновленияСписка.Вставить("МассивВыбранныхВидов", МассивВидовПакетов);

//3. Отправка пакетов по организациям, в которых авторизовались под сертом сервера 1С
Для Каждого Элемент Из КонтекстСеанса Цикл

  СтрокаКонтекста = Элемент.Значение;
  Организация = СтрокаКонтекста.ОрганизацияДиадок.СвязанныйСправочник1;

  ПараметрыОбновленияСписка.Вставить("ОтборПоОрганизации", Организация);

  ОсновнойМодуль.ЭДО_Модуль_ОбновитьСписокДокументов(ПараметрыОбновленияСписка);

  //1 вариант: последовательная отправка
  Для Каждого СтрокаТЧ Из ОсновнойМодуль.СписокДокументов Цикл
      ОсновнойМодуль.ЭДО_ПодготовитьИОтправитьПакет(СтрокаТЧ);
  КонецЦикла;

  //2 вариант: фоновая отправка
  ОсновнойМодуль.ЭДО_ПодготовитьИОтправитьПакетыВФоне(ОсновнойМодуль.СписокДокументов);

КонецЦикла;

Как настроить регламентное задание с помощью консоли заданий

I. Обновить подсистему Диадок до версии 2.23 и выше

На сайте КонтурСправка есть раздел по установке и обновлению подсистемы Диадок.

II. Открыть консоль заданий из состава подсистемы «Инструменты разработчика»

Стандартная консоль заданий на сайте 1С:ИТС не подходит, т.к. с ее помощью нельзя настроить параметры регламентного задания. Вместо нее будем использовать консоль заданий из состава подсистемы «Инструменты разработчика» (далее ИР).

Рекомендуется использовать портативный вариант ИР, т.к. он не требует изменения конфигурации и подходит для платформы 1С версий 8.2.12+, 8.3.4+. Скачать актуальную версию можно с сайта разработчика.

Для запуска консоли заданий нужно:

  1. Распаковать архив с портативной версией ИР. Проверить, что папка «Модули» в этом архиве тоже распакована.
  2. Запустить 1С:Предприятие и открыть внешнюю обработку ирПортативный.epf.
  3. Работа ИР не поддерживается в режиме управляемого приложения. При открытии в этом режиме обработка предложит вам перезапустить 1С в режиме обычного приложения.
../../_images/reg0.png
  1. В открывшейся командной панели ИР нажмите на кнопку «Консоль заданий».
../../_images/reg1.png

III. Добавить регламентное задание

В консоли заданий нажмите кнопку «Добавить».

../../_images/reg2.png

Заполните открывшуюся форму.

../../_images/reg3.PNG

Способы подключения модуля «Диадок» к регламентному заданию

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

1. Модуль встроен в конфигурацию

Значение параметра — строка, имя встроенной обработки.

Пример:

../../_images/reg4.png ../../_images/reg5.png

2. Модуль подключен как внешняя обработка

Значение параметра — элемент справочника «Внешние обработки» для обычных форм или «Дополнительные отчеты и обработки» для управляемых форм.

Пример:

../../_images/reg6.png ../../_images/reg7.png

Если регламентное задание выдает при работе ошибки «Метод задания не найден: Диадок_ФоновыеЗадания:ВыполнитьРегламентныеДействия», значит, версия подсистемы Диадок ниже 2.23. Нужно обновить версию подсистемы через «Конфигурация/Поддержка/Обновить конфигурацию».

Важно

Если используется платформа ниже 8.3.4 версии, то необходимо добавлять второй параметр типа «Не определено». Для этого нажмите на кнопку «Добавить».

../../_images/reg8.png

В противном случае при выполнении регламентного задания будет возникать ошибка «Количество фактических параметров фонового задания не совпадает с количеством параметров метода фонового задания».