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