Slon747 @ Сегодня, 12:45
необходимо зарегистрироваться для просмотра ссылки
,
Кусок рабочего кода:
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
ДлительнаяОперация=ПечатьВФоне(ОбъектыНазначенияМассив[0]);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
ПараметрыОжидания.Интервал = 10; //Небольшое значение - для теста
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДлительнаяОперация,
Новый ОписаниеОповещения("ПечатьЗавершение", ЭтотОбъект),
ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция ПечатьВФоне(СсылкаНаОбъект)
ОбъектВПФ=РеквизитФормыВЗначение("Объект");
////////////СсылкаНаВПФ=Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","ВПФФоном");
СсылкаНаВПФ=Параметры.ДополнительнаяОбработкаСсылка;
Макет=ОбъектВПФ.ПолучитьМакет("МакетПечати");
//Это что вызываем
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ИмяОбработки", "ВнешняяОбработка.ВПФФономИсторияОбъекта");
ПараметрыЗадания.Вставить("ИмяМетода", "Печать");
ПараметрыЗадания.Вставить("ПараметрыВыполнения", Новый Структура("СсылкаНаОбъект,Макет", СсылкаНаОбъект,Макет));
ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);
ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка",СсылкаНаВПФ);
//Это как вызываем
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = "Запуск длительного формирования ВПФ";;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение=0.1; //Нет смысла ждать!!!
//запускаем выполнение фонового задания
Возврат ДлительныеОперации.ВыполнитьВФоне("ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки", ПараметрыЗадания, ПараметрыВыполнения);
КонецФункции // ЗапуститьФормированиеВПФ()
&НаКлиенте
Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
ИначеЕсли Результат.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Результат.ПодробноеПредставлениеОшибки);
ИначеЕсли Результат.Статус = "Выполнено" Тогда
ТабДок=ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
ТабДок.Показать();
КонецЕсли;
КонецПроцедуры
Обратите внимание на:
//запускаем выполнение фонового задания
Возврат ДлительныеОперации.ВыполнитьВФоне("ДлительныеОперации.
ВыполнитьПроцедуруМодуляОбъектаОбработки", ПараметрыЗадания, ПараметрыВыполнения);
//Это что вызываем
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ИмяОбработки", "ВнешняяОбработка.ВПФФономИсторияОбъекта");
ПараметрыЗадания.Вставить("
ИмяМетода", "Печать");
ПараметрыЗадания.Вставить("ПараметрыВыполнения", Новый Структура("СсылкаНаОбъект,Макет", СсылкаНаОбъект,Макет));
ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);
ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка",СсылкаНаВПФ);
Пример можно скачать:
необходимо зарегистрироваться для просмотра ссылки