Выполнить команду фоне.
//
Процедура ВыполнитьКомандуВФоне(Знач ИдентификаторКоманды, Знач ПараметрыКоманды, Знач Обработчик) Экспорт
ИмяПроцедуры = "ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКомандуВФоне";
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
ИмяПроцедуры,
"ИдентификаторКоманды",
ИдентификаторКоманды,
Тип("Строка"));
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
ИмяПроцедуры,
"ПараметрыКоманды",
ПараметрыКоманды,
Тип("Структура"));
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
ИмяПроцедуры,
"ПараметрыКоманды.ДополнительнаяОбработкаСсылка",
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыКоманды, "ДополнительнаяОбработкаСсылка"),
Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки"));
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
ИмяПроцедуры,
"Обработчик",
Обработчик,
Новый ОписаниеТипов("ОписаниеОповещения, ФормаКлиентскогоПриложения"));
ПараметрыКоманды.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
ПолучатьРезультат = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыКоманды, "ПолучатьРезультат", Ложь);
Форма = Неопределено;
Если ПараметрыКоманды.Свойство("ФормаВладелец", Форма) Тогда
ПараметрыКоманды.ФормаВладелец = Неопределено;
КонецЕсли;
Если ТипЗнч(Обработчик) = Тип("ОписаниеОповещения") Тогда
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "Обработчик.Модуль",
Обработчик.Модуль,
Тип("ФормаКлиентскогоПриложения"));
Форма = ?(Форма <> Неопределено, Форма, Обработчик.Модуль);
Иначе
Форма = Обработчик;
Обработчик = Неопределено;
ПолучатьРезультат = Истина; // для обратной совместимости
КонецЕсли;
Задание = ДополнительныеОтчетыИОбработкиВызовСервера.ЗапуститьДлительнуюОперацию(Форма.УникальныйИдентификатор, ПараметрыКоманды);
СопровождающийТекст = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыКоманды, "СопровождающийТекст", "");
Заголовок = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыКоманды, "Заголовок");
Если ЗначениеЗаполнено(Заголовок) Тогда
СопровождающийТекст = СокрЛП(Заголовок + Символы.ПС + СопровождающийТекст);
КонецЕсли;
Если Не ЗначениеЗаполнено(СопровождающийТекст) Тогда
СопровождающийТекст = НСтр("ru = 'Команда выполняется.'");
КонецЕсли;
НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Форма);
НастройкиОжидания.ТекстСообщения = СопровождающийТекст;
НастройкиОжидания.ВыводитьОкноОжидания = Истина;
НастройкиОжидания.ПолучатьРезультат = ПолучатьРезультат; // для обратной совместимости
НастройкиОжидания.ВыводитьСообщения = Истина;
ДлительныеОперацииКлиент.ОжидатьЗавершение(Задание, Обработчик, НастройкиОжидания);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////