//ирПортативный Перем ирПортативный Экспорт; //ирПортативный Перем ирОбщий Экспорт; //ирПортативный Перем ирСервер Экспорт; //ирПортативный Перем ирКэш Экспорт; //ирПортативный Перем ирПривилегированный Экспорт; Перем ТаблицаАктивныхФоновыхЗаданий Экспорт; Функция ДлительностьФоновогоЗадания(ФоновоеЗадание) Экспорт #Если Сервер И Не Сервер Тогда ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(); #КонецЕсли Если Не ЗначениеЗаполнено(ФоновоеЗадание.Конец) Тогда Длительность = ТекущаяДата() - ФоновоеЗадание.Начало; Иначе Длительность = ФоновоеЗадание.Конец - ФоновоеЗадание.Начало; КонецЕсли; Возврат Длительность; КонецФункции Процедура ОбновитьСтрокуФоновогоЗадания(Знач СтрокаСпискаФоновыхЗаданий, Знач ФоновоеЗадание = Неопределено, Знач Длительность = Неопределено) Экспорт Если ФоновоеЗадание = Неопределено Тогда ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(СтрокаСпискаФоновыхЗаданий.Идентификатор)); КонецЕсли; Если Длительность = Неопределено Тогда Длительность = ДлительностьФоновогоЗадания(ФоновоеЗадание); КонецЕсли; СтрокаСпискаФоновыхЗаданий.Наименование = ФоновоеЗадание.Наименование; СтрокаСпискаФоновыхЗаданий.Ключ = ФоновоеЗадание.Ключ; СтрокаСпискаФоновыхЗаданий.ИмяМетода = ФоновоеЗадание.ИмяМетода; СтрокаСпискаФоновыхЗаданий.Начало = ФоновоеЗадание.Начало; СтрокаСпискаФоновыхЗаданий.Конец = ФоновоеЗадание.Конец; СтрокаСпискаФоновыхЗаданий.Длительность = Длительность; СтрокаСпискаФоновыхЗаданий.Сервер = ФоновоеЗадание.Расположение; Если ФоновоеЗадание.ИнформацияОбОшибке <> Неопределено Тогда СтрокаСпискаФоновыхЗаданий.Ошибка = ПодробноеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке); КонецЕсли; Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда СтрокаАктивногоФоновогоЗадания = ТаблицаАктивныхФоновыхЗаданий.Найти(ФоновоеЗадание.УникальныйИдентификатор, "Идентификатор"); Если СтрокаАктивногоФоновогоЗадания <> Неопределено Тогда СтрокаСпискаФоновыхЗаданий.НомерСеанса = СтрокаАктивногоФоновогоЗадания.НомерСеанса; СтрокаСпискаФоновыхЗаданий.НомерСоединения = СтрокаАктивногоФоновогоЗадания.НомерСоединения; КонецЕсли; КонецЕсли; СтрокаСпискаФоновыхЗаданий.Идентификатор = ФоновоеЗадание.УникальныйИдентификатор; СтрокаСпискаФоновыхЗаданий.СостояниеЗадания = ФоновоеЗадание.Состояние; СтрокаСпискаФоновыхЗаданий.СостояниеПредставление = ФоновоеЗадание.Состояние; СтрокаСпискаФоновыхЗаданий.РазделениеДанных = ФоновоеЗадание.РазделениеДанных; СтрокаСпискаФоновыхЗаданий.РазделениеДанныхПредставление = ирОбщий.РасширенноеПредставлениеЗначенияЛкс(ФоновоеЗадание.РазделениеДанных); КонецПроцедуры Функция ОтборДляЖурналаПоСтрокеЗадания(Знач ТекущаяСтрока) Экспорт СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("ИмяПриложения", "BackgroundJob"); Если ЗначениеЗаполнено(ТекущаяСтрока.НомерСеанса) Тогда СтруктураОтбора.Вставить("Сеанс", ТекущаяСтрока.НомерСеанса); КонецЕсли; Возврат СтруктураОтбора; КонецФункции Процедура ОткрытьОшибкиЖРПоЗаданию(Знач ВыбраннаяСтрока) Экспорт СтруктураОтбора = ОтборДляЖурналаПоСтрокеЗадания(ВыбраннаяСтрока); СтруктураОтбора.Вставить("Уровень", "Ошибка"); АнализЖурналаРегистрации = ирОбщий.ПолучитьОбъектПоПолномуИмениМетаданныхЛкс("Обработка.ирАнализЖурналаРегистрации"); #Если Сервер И Не Сервер Тогда АнализЖурналаРегистрации = Обработки.ирАнализЖурналаРегистрации.Создать(); #КонецЕсли АнализЖурналаРегистрации.ОткрытьСОтбором(ВыбраннаяСтрока.Начало, ВыбраннаяСтрока.Конец, СтруктураОтбора); КонецПроцедуры //ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла); //ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf"; //ирПортативный #Если Клиент Тогда //ирПортативный Контейнер = Новый Структура(); //ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер); //ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда //ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля); //ирПортативный ирПортативный.Открыть(); //ирПортативный КонецЕсли; //ирПортативный #Иначе //ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта //ирПортативный #КонецЕсли //ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий"); //ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш"); //ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер"); //ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");