Страницы: 1
RSS
Можно ли фоном выполнять процедуру модуля внешней обработки
 
Да, платформа 1С поддерживает выполнение в фоне процедур модуля внешней обработки
 
Как выполнить внешнюю обработку в фоне?
 

Есть несколько способов.  Например, это зависит от того, что нужно выполнить:

·        Отправить в фон интерактивно запускаемую команду формы или же просто выполнить в фоне экспортную процедуру  модуль обработки, вызвав ее из какого-то места конфигурации.

·        Нужно ли контролировать процесс завершения фонового задания или не нужно; нужно получать результат работы обработки и как-то обрабатывать дальше или нет.

 
Интересует запуск обработки регламентным заданием
 

Тогда достаточно вызвать требуемый метод обработки из обработчика регламентного задания. Обработка должна быть зарегистрирована в механизме «внешние отчеты и обработки».

Простейшую схему такого алгоритм можно описать следующим образом:

1.      Создать внешнюю обработку с учетом требований штатного механизма БСП «Дополнительные отчеты и обработки»

1.1.   Модуль обработки должен содержать экспортную процедуру СведенияОВнешнейОбработке()

1.2.   Обработка должна быть зарегистрирована в справочнике «Дополнительные отчеты и обработки;  здесь важно «Наименовании», с которым она будет зарегистрирована – по нему в дальнейшем будет строиться вызов ее из регламентного задания

2.      В модуль обработки поместить целевую процедуру, которую требуется выполнять в фоне

3.      В модуль обработки поместить целевую  экспортную процедуру, которую требуется выполнять в фоне (например, «ПримерМетодаОбработкаВФоне(ПараметрыМетода, АдресХранилища)»)

3.1.   Она будет вызваться регламентным заданием (п.4)

3.2.   Перечень параметров этой процедуры должен быть согласован с параметрами ее вызова (п.4)

3.3.   В теле этой процедуры построить фоновый вызов (через механизм БСП «ДлительныеОперации») целевой процедуры (п. 2)

4.      В обработчике регламентного задания построить вызов экспортной процедуры (п.3)

4.1.   Для выполнения целевой процедуры в фоне используется механизм БСП «ДлительныеОперации»

ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки(ПараметрыЗадания, АдресХранилища);

4.2.   В составе «ПараметрыЗадания» обязательно должны быть переданы следующие параметры:

·            «ЭтоВнешняяОбработка» = Истина

·            «ИмяОбработки» = в нашем примере «Пример внешней обработки в фоне» (см. п.1.2.)

o       Или непосредственно ссылка на нее в параметре «ДополнительнаяОбработкаСсылка»

ДополнительнаяОбработкаСсылка  = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОбработки)

·            «ИмяМетода» = имя целевой экспортной процедуры в модуле обработки (см. п.3)

Изменено: BIN - 11.02.2024 18:15:26
 
Как процедуру обработки передать дополнительные параметры, необходимые для ее исполнения?
 

В состав «ПараметрыЗадания» (из п.4.2) добавить структуру с именем

·            «ПараметрыВыполнения» - в этой структуре перечислить параметры, которые необходимы целевому методу

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

              ИмяОбработки = "Пример внешней обработки в фоне";

              ПараметрыЗадания = Новый Структура();

              ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);

              ПараметрыЗадания.Вставить("ИмяОбработки", Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОбработки));

              ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка",(Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОбработки)));

              ПараметрыЗадания.Вставить("ИмяМетода", "ПримерМетодаОбработкаВФоне");

              ПараметрыМетода = Новый Структура();

              ПараметрыМетода.Вставить("ПримерБулевогоПараметраМетода_ЗаданиеСтартануло", Ложь);

              ПараметрыЗадания.Вставить("ПараметрыВыполнения", ПараметрыМетода);

              АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено);

              ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки(ПараметрыЗадания, АдресХранилища);

              ЗаданиеСтартануло = ПараметрыМетода.ПримерБулевогоПараметраМетода_ЗаданиеСтартануло;

А простейшая экспортная процедура внешней обработки выгляди следующим образом:

Процедура ПримерМетодаОбработкаВФоне(ПараметрыМетода, АдресХранилища) Экспорт

              ПараметрыМетода.ПримерБулевогоПараметраМетода_ЗаданиеСтартануло = Истина;

КонецПроцедуры
Страницы: 1