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