1С 8.3 БСП ВыполнитьВФоне
Данные > 1С 8.3 БСП > Длительные операции
Перейти в раздел примеры кода 1С 8.3:
1С 8.3 БСП ВыполнитьВФоне. Вместо этой функции рекомендуется использовать функции ВыполнитьФункцию и ВыполнитьПроцедуру.
Примера кода от rayastar
//В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом:
//1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Процедура ВыполнитьДействие(Параметры, АдресРезультата) Экспорт
...
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура ВыполнитьДействие()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
...
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыПроцедуры = Новый Структура;
...
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
...
Возврат ДлительныеОперации.ВыполнитьВФоне("Обработки.МояОбработка.ВыполнитьДействие",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
//3) Обработка результата выполнения операции:
&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат);
КонецПроцедуры;
//1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Процедура ВыполнитьДействие(Параметры, АдресРезультата) Экспорт
...
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура ВыполнитьДействие()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
...
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыПроцедуры = Новый Структура;
...
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
...
Возврат ДлительныеОперации.ВыполнитьВФоне("Обработки.МояОбработка.ВыполнитьДействие",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
//3) Обработка результата выполнения операции:
&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат);
КонецПроцедуры;
//
&НаСервере
Функция ОбновитьКоличествоСервер()
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("СтруктураОбработки", ЭтотОбъект().ЭтотОбъектВСтруктуруДляФонового());
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания =
НСтр("ru = 'Расчет количества объектов для отправки при синхронизации';
|en = 'Calculate the number of objects to send during synchronization'");
РезультатЗапускаФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(
"ОбменДаннымиСервер.ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений",
ПараметрыЗадания,
ПараметрыВыполнения);
ИдентификаторФоновогоЗадания = РезультатЗапускаФоновогоЗадания.ИдентификаторЗадания;
АдресРезультатаФоновогоЗадания = РезультатЗапускаФоновогоЗадания.АдресРезультата;
Возврат РезультатЗапускаФоновогоЗадания;
КонецФункции;
// Автор библиотеки: ООО "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
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник