Skip to content

Commit

Permalink
Подписание в регламентном задании
Browse files Browse the repository at this point in the history
  • Loading branch information
nvyhodceva committed Nov 8, 2019
1 parent 43c1975 commit 6299948
Showing 1 changed file with 49 additions and 1 deletion.
50 changes: 49 additions & 1 deletion docs/source/proc/pm/Reglamentnoye_Zadaniye.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

* использовать можно только методы, работающие на сервере
* обращение к формам модуля невозможно
* использование электронной подписи невозможно
* требуется внесение изменений в конфигурацию (добавление регламентного задания в 1С, описание функции вызова :doc:`ВыполнитьРегламентныеДействия <../../func/pm/Vypolnit'_Reglamentnyye_Deystviya>`)

Чаще всего использование регламентного задания предполагает:
Expand All @@ -26,6 +25,7 @@
* проведение анализа документов и запись требуемых действий
* отправка на подпись или согласование
* выполнение сопоставления документов
* подписание и отправка сертификатом установленным на сервере 1С

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

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


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

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

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

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

::

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

0 comments on commit 6299948

Please sign in to comment.