dlitelnye_operacii._fonovye_vypolnenija_bsp

Вариант 1

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

  • 1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
  • P.S. ОБЯЗАТЕЛЬО ДВА ПАРАМЕТРА ДОЛЖА ПРИНИМАТЬ ВІПОЛНЯЕМАЯ В ФОНЕ
Процедура ВыполнитьРасчет(Знач МойПараметр1, Знач МойПараметр2) Экспорт
   ...
КонецПроцедуры

2) Запуск операции на сервере и подключение обработчика ожидания (при необходимости):

&НаКлиенте
Процедура ВыполнитьРасчет()
   ДлительнаяОперация = НачатьВыполнениеНаСервере();
   ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
   ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
   ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
   Возврат ДлительныеОперации.ВыполнитьПроцедуру(, "Обработки.МояОбработка.ВыполнитьРасчет",
   МойПараметр1, МойПараметр2);
КонецФункции

3) Обработка результата длительной операции:

&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
   Если Результат = Неопределено Тогда
       Возврат;
   КонецЕсли;
   ПриЗавершенииРасчета();
КонецПроцедуры
&НаСервере
Функция ЗапуститьФоновуюОтправкуФайлов()

   ОтправляемыеФайлы = Новый Массив;
   Для Каждого Файл Из Файлы.ПолучитьЭлементы() Цикл

       ОписаниеФайла = Новый Структура;
       ОписаниеФайла.Вставить("ИмяФайла", Файл.Наименование);
       ОписаниеФайла.Вставить("ДатаИзменения");
       ОписаниеФайла.Вставить("Каталог");
       ОписаниеФайла.Вставить("ДвоичныеДанные", ПолучитьИзВременногоХранилища(Файл.Адрес));

       ОтправляемыеФайлы.Добавить(ОписаниеФайла);
   КонецЦикла;

   ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
   ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Отправка файлов в сервиса распознавания документов'");

   ФоновоеЗадание = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения,
"Обработки.РаспознаваниеДокументов.ОтправитьФайлыНаРаспознавание", ОтправляемыеФайлы);

   Возврат ФоновоеЗадание;

КонецФункции;

Вариант 2 (БСП. Для вызова с сервера без отслеживания выполнения)

1. Необходимая на выоплнение процедура должна быть экспортной и обязательно иметь два параметра

Процедура ОтправитьДанныеООтмеченныхВхНДПоЗаказам(знач парам1=Неопределено, знач парам2=Неопределено) Экспорт 
//код
КонецПроцедуры

2. Где необходимо на сервере вызываем

&НаСервере
Процедура тестАсинхроннойОтправкиНаСервере()
	результат = ДлительныеОперации.ВыполнитьВФоне("Доработки_Сервер.ОтправитьДанныеООтмеченныхВхНДПоЗаказам",Новый Структура,ДлительныеОперации.ПараметрыВыполненияВФоне(Неопределено));
КонецПроцедуры

Вариант 3

в БСП вместо длительных операций уже рекомендуется применять «ВыполнитьПроцедуру» или «ВыполнитьФункцию» еще не разбирал

  • /sites/data/pages/dlitelnye_operacii._fonovye_vypolnenija_bsp.txt
  • Последнее изменение: 2024/05/03 10:14
  • tro