1С 8.3 БСП ВыполнитьФункцию
Данные > 1С 8.3 БСП > Длительные операции
Перейти в раздел примеры кода 1С 8.3:
1С 8.3 БСП ВыполнитьФункцию. Запустить выполнение функции в фоновом задании, если это возможно. При выполнении любого из следующих условий запуск выполняется не в фоне, а сразу в основном потоке.
Примера кода от rayastar
//В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом:
//1) Функция, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Функция РассчитатьЗначение(Знач МойПараметр1, Знач МойПараметр2) Экспорт
...
Возврат Результат;
КонецФункции
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура РассчитатьЗначение()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Обработки.МояОбработка.РассчитатьЗначение",
МойПараметр1, МойПараметр2);
КонецФункции
//3) Обработка результата длительной операции:
&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат.АдресРезультата);
КонецПроцедуры
//
&НаСервере
Функция ВыполнитьПоискУстаревшихВерсий()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск устаревших версий объектов'");
ДлительнаяОперация = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
"ВерсионированиеОбъектов.ИнформацияОбУстаревшихВерсиях");
ТекущееФоновоеЗадание = "Подсчет";
ИдентификаторФоновогоЗадания = ДлительнаяОперация.ИдентификаторЗадания;
АдресРезультата = ДлительнаяОперация.АдресРезультата;
Возврат ДлительнаяОперация;
//1) Функция, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Функция РассчитатьЗначение(Знач МойПараметр1, Знач МойПараметр2) Экспорт
...
Возврат Результат;
КонецФункции
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура РассчитатьЗначение()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Обработки.МояОбработка.РассчитатьЗначение",
МойПараметр1, МойПараметр2);
КонецФункции
//3) Обработка результата длительной операции:
&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат.АдресРезультата);
КонецПроцедуры
//
&НаСервере
Функция ВыполнитьПоискУстаревшихВерсий()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск устаревших версий объектов'");
ДлительнаяОперация = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
"ВерсионированиеОбъектов.ИнформацияОбУстаревшихВерсиях");
ТекущееФоновоеЗадание = "Подсчет";
ИдентификаторФоновогоЗадания = ДлительнаяОперация.ИдентификаторЗадания;
АдресРезультата = ДлительнаяОперация.АдресРезультата;
Возврат ДлительнаяОперация;
КонецФункции;
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник