Вызватьисключение строковыефункцииклиентсервер подставитьпараметрывстроку

Выполнить программно дополнительный отчет

&НаКлиенте Процедура ВыполнитьСинхронизацию(Команда) // готовим структуру команды вКоманда = Новый Структура; ЗаполнитьСтруктуруВыполняемойКоманды(вКоманда,»Моя доп.обработка»); Если ЗначениеЗаполнено(вКоманда) Тогда ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр(«ru = ‘Команда «»%1″» подготовлена к исполнению.'»),вКоманда.Представление); // оповещаем себя о том, что команда подготовлена и передается на исполнение //ПоказатьОповещениеПользователя(ЗаголовокСостояния + «…», , , БиблиотекаКартинок.ДлительнаяОперация48); Сообщить(ЗаголовокСостояния); // вызываем процедуру исполнения команды в фоне на сервере ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(вКоманда, УникальныйИдентификатор); // подготавливаем данные и выводим «ожидающее» оповещение ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр(«ru = ‘Команда «»%1″» выполняется.'»),вКоманда.Представление); ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); ПараметрыОжидания.ТекстСообщения = ЗаголовокСостояния; // не будем оповещать себя после завершения штатным образом ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь; // а вот окно «ожидания» просим показать ПараметрыОжидания.ВыводитьОкноОжидания = Истина; // непосредственно «ожидаем» ОповещениеОЗавершении = Новый ОписаниеОповещения(«ПослеЗавершенияВыполнения», ЭтотОбъект, вКоманда); ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеЗавершенияВыполнения(Задание, ВыполняемаяКоманда) Экспорт // процедура, которая указана ранее для вызова после завершения исполнения Если Задание.Статус = «Ошибка» Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр(«ru = ‘Не удалось выполнить команду по причине: |%1.'»), Задание.КраткоеПредставлениеОшибки); Иначе // Оповещаем все открытые формы и динамические списки об изменениях (обязательно) Результат = ПолучитьИзВременногоХранилища(Задание.АдресРезультата); ОповеститьФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, «ОповеститьФормы»); Если ОповеститьФормы <> Неопределено Тогда СтандартныеПодсистемыКлиент.ОповеститьФормыОбИзменении(ОповеститьФормы); КонецЕсли; // Оповещаем себя, поскольку ранее в ПараметрыОжидания записали Ложь ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр(«ru = ‘Команда «»%1″» выполнена.'»),ВыполняемаяКоманда.Представление); Сообщить(ЗаголовокСостояния); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьСтруктуруВыполняемойКоманды(ВыполняемаяКоманда,НаименованиеОбработки) // заполняем структуру команды запрошенной обработки ДопОбработкаСсылка=Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(НаименованиеОбработки); Если ЗначениеЗаполнено(ДопОбработкаСсылка) Тогда ВыполняемаяКоманда = Новый Структура; ВыполняемаяКоманда.Вставить(«Ссылка»,ДопОбработкаСсылка); ВыполняемаяКоманда.Вставить(«Представление»,ДопОбработкаСсылка.Команды.Представление); ВыполняемаяКоманда.Вставить(«Идентификатор»,ДопОбработкаСсылка.Команды.Идентификатор); ВыполняемаяКоманда.Вставить(«ВариантЗапуска»,ДопОбработкаСсылка.Команды.ВариантЗапуска); ВыполняемаяКоманда.Вставить(«ПоказыватьОповещение»,ДопОбработкаСсылка.Команды.ПоказыватьОповещение); ВыполняемаяКоманда.Вставить(«Модификатор»,ДопОбработкаСсылка.Команды.Модификатор); ВыполняемаяКоманда.Вставить(«ОбъектыНазначения»,Неопределено); ВыполняемаяКоманда.Вставить(«Вид»,ДопОбработкаСсылка.Вид); ВыполняемаяКоманда.Вставить(«ЭтоОтчет»,Ложь); Иначе ВыполняемаяКоманда = Неопределено; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор) ИмяПроцедуры = «ДополнительныеОтчетыИОбработки.ВыполнитьКоманду»; ПараметрыПроцедуры = Новый Структура(«ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ОбъектыНазначения»); ПараметрыПроцедуры.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка; ПараметрыПроцедуры.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор; ПараметрыПроцедуры.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения; НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); НастройкиЗапуска.НаименованиеФоновогоЗадания = НСтр(«ru = ‘Дополнительные отчеты и обработки: Выполнение серверного метода обработки'»); Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, НастройкиЗапуска); КонецФункции

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *