ВыполнитьВФоне
страницаВместо этой функции рекомендуется использовать функции ВыполнитьФункцию и ВыполнитьПроцедуру. Запустить выполнение процедуры в фоновом задании, если это возможно. Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание. Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение, если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.
Синтаксис
Функция ВыполнитьВФоне(Знач ИмяПроцедуры, Знач ПараметрыПроцедуры, Знач ПараметрыВыполнения) ЭкспортПараметры
ИмяПроцедуры— Строка - имя экспортной процедуры общего модуля, модуля менеджера объекта или модуля обработки, которую необходимо выполнить в фоне. Например, "МойОбщийМодуль.МояПроцедура", "Отчет.ЗагруженныеДанные.Сформировать" или "Обработка.ЗагрузкаДанных.МодульОбъекта.Загрузить". У процедуры должно быть два или три формальных параметра:- Параметры - Структура - произвольные параметры ПараметрыПроцедуры;
- АдресРезультата - Строка - адрес временного хранилища, в которое нужно поместить результат работы процедуры. Обязательно;
- АдресДополнительногоРезультата - Строка - если в ПараметрыВыполнения установлен параметр ДополнительныйРезультат, то содержит адрес дополнительного временного хранилища, в которое нужно поместить результат работы процедуры. Опционально. При необходимости выполнить в фоне функцию ее следует обернуть в процедуру, а ее результат возвращать через второй параметр АдресРезультата.
ПараметрыПроцедуры— Структура - произвольные параметры вызова процедуры ИмяПроцедуры.ПараметрыВыполнения— см. ДлительныеОперации.ПараметрыВыполненияВФоне
Возвращаемое значение
Структура:
- Статус - Строка - "Выполняется", если задание еще не завершилось; "Выполнено", если задание было успешно выполнено; "Ошибка", если задание завершено с ошибкой; "Отменено", если задание отменено пользователем или администратором.
- ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит
идентификатор запущенного фонового задания.
- Неопределено - если Статус <> "Выполняется" и фоновое задание не запускалось.
- АдресРезультата - Строка - адрес временного хранилища, в которое будет помещен результат работы процедуры (или уже помещен, если Статус = "Выполнено").
- АдресДополнительногоРезультата - Строка - если установлен параметр ДополнительныйРезультат, содержит адрес дополнительного временного хранилища, в которое будет помещен результат работы процедуры (или уже помещен, если Статус = "Выполнено").
- ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка".
- Неопределено - если Статус <> "Ошибка".
- Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю, которые были сформированы в фоновом задании.
- КраткоеПредставлениеОшибки - Строка - устарел.
- ПодробноеПредставлениеОшибки - Строка - устарел.
Пример вызова
В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом:
1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Процедура ВыполнитьДействие(Параметры, АдресРезультата) Экспорт
...
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры
2) Запуск операции на сервере и подключение обработчика ожидания:
Процедура ВыполнитьДействие()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
...
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
Функция НачатьВыполнениеНаСервере()
ПараметрыПроцедуры = Новый Структура;
...
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
...
Возврат ДлительныеОперации.ВыполнитьВФоне("Обработка.МояОбработка.ВыполнитьДействие",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
3) Обработка результата выполнения операции:
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
СтандартныеПодсистемыКлиент.ВывестиИнформациюОбОшибке(Результат.ИнформацияОбОшибке);
Возврат;
КонецЕсли;
ВывестиРезультат(Результат);
КонецПроцедуры Доступность
Сервер, Толстый клиент, Внешнее соединение