Это старая версия документа!
в БСП вместо длительных операций уже рекомендуется применять «ВыполнитьПроцедуру» или «ВыполнитьФункцию»
В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом:
- 1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
- P.S. ОБЯЗАТЕЛЬО ДВА ПАРАМЕТРА ДОЛЖА ПРИНИМАТЬ ВІПОЛНЯЕМАЯ В ФОНЕ
Процедура ВыполнитьРасчет(Знач МойПараметр1, Знач МойПараметр2) Экспорт ... КонецПроцедуры
2) Запуск операции на сервере и подключение обработчика ожидания (при необходимости):
&НаКлиенте
Процедура ВыполнитьРасчет()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере Функция НачатьВыполнениеНаСервере() Возврат ДлительныеОперации.ВыполнитьПроцедуру(, "Обработки.МояОбработка.ВыполнитьРасчет", МойПараметр1, МойПараметр2); КонецФункции
3) Обработка результата длительной операции:
&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ПриЗавершенииРасчета();
КонецПроцедуры
&НаСервере
Функция ЗапуститьФоновуюОтправкуФайлов()
ОтправляемыеФайлы = Новый Массив;
Для Каждого Файл Из Файлы.ПолучитьЭлементы() Цикл
ОписаниеФайла = Новый Структура;
ОписаниеФайла.Вставить("ИмяФайла", Файл.Наименование);
ОписаниеФайла.Вставить("ДатаИзменения");
ОписаниеФайла.Вставить("Каталог");
ОписаниеФайла.Вставить("ДвоичныеДанные", ПолучитьИзВременногоХранилища(Файл.Адрес));
ОтправляемыеФайлы.Добавить(ОписаниеФайла);
КонецЦикла;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Отправка файлов в сервиса распознавания документов'");
ФоновоеЗадание = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения,
"Обработки.РаспознаваниеДокументов.ОтправитьФайлыНаРаспознавание", ОтправляемыеФайлы);
Возврат ФоновоеЗадание;
КонецФункции;