mirror of
https://github.com/kuzyara/JobsConsole2019.epf.git
synced 2025-02-19 19:00:08 +02:00
оптимизация открытия, таймаут 200 мс на получение состояний рег. заданий
This commit is contained in:
parent
d1db8b1501
commit
6357533aae
@ -1,7 +1,9 @@
|
||||
#Область ОбработчикиСобытийФормы
|
||||
|
||||
// Расписание регламентного задания
|
||||
&НаКлиенте
|
||||
Перем Расписание;
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПриОткрытии(Отказ)
|
||||
Расписание = ПолучитьРасписаниеРегламентногоЗадания(РегламентноеЗаданиеИД);
|
||||
@ -192,8 +194,6 @@
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
|
||||
|
||||
&НаСервере
|
||||
Функция ПолучитьОбъектРегламентногоЗадания(УникальныйНомерЗадания) Экспорт
|
||||
|
||||
|
@ -16,7 +16,6 @@
|
||||
Ключ = Параметры.Ключ;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Для Каждого Метаданное Из Метаданные.РегламентныеЗадания Цикл
|
||||
Элементы.ИмяМетода.СписокВыбора.Добавить(Метаданное.ИмяМетода);
|
||||
КонецЦикла;
|
||||
|
@ -3946,6 +3946,26 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>ВремяЗаполненияРегламентных</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Время заполнения регламентных</value>
|
||||
</title>
|
||||
<id>16</id>
|
||||
<valueType>
|
||||
<types>Number</types>
|
||||
<numberQualifiers>
|
||||
<precision>10</precision>
|
||||
</numberQualifiers>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>ОбновитьРегламентныеЗадания</name>
|
||||
<title>
|
||||
@ -3955,7 +3975,7 @@
|
||||
<id>1</id>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Обновить регламентные задания</value>
|
||||
<value>Обновить регламентные задания и состояния каждого (может занять продолжительное время)</value>
|
||||
</toolTip>
|
||||
<use>
|
||||
<common>true</common>
|
||||
|
@ -6,28 +6,23 @@
|
||||
ЭтаФорма.ОтборФоновыхЗаданийВключен = Истина;
|
||||
// защитный фильтр при интенсивном запуске фоновых
|
||||
ИнтервалДляОтбора = 3600;
|
||||
ЭтаФорма.ОтборФоновыхЗаданий = Новый ХранилищеЗначения(Новый Структура("Начало", ТекущаяДата() - ИнтервалДляОтбора));
|
||||
ЭтаФорма.ОтборФоновыхЗаданий = Новый ХранилищеЗначения(Новый Структура("Начало", ТекущаяДатаСеанса() - ИнтервалДляОтбора));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПриОткрытии(Отказ)
|
||||
Попытка
|
||||
ОтборПриОткрытии();
|
||||
Если АвтообновлениеСпискаФоновыхЗаданий = Истина Тогда
|
||||
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий", ПериодАвтоОбновленияСпискаФоновыхЗаданий);
|
||||
КонецЕсли;
|
||||
|
||||
Если АвтообновлениеСпискаРегламентныхЗаданий = Истина Тогда
|
||||
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияРегламентныхЗаданий", ПериодАвтоОбновленияСпискаРегламентныхЗаданий);
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьСписокФоновыхЗаданий();
|
||||
ОбновитьСписокРегламентныхЗаданий();
|
||||
Исключение
|
||||
ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
ОбновитьПриСоздании();
|
||||
|
||||
Если АвтообновлениеСпискаФоновыхЗаданий = Истина Тогда
|
||||
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий", ПериодАвтоОбновленияСпискаФоновыхЗаданий);
|
||||
КонецЕсли;
|
||||
|
||||
Если АвтообновлениеСпискаРегламентныхЗаданий = Истина Тогда
|
||||
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияРегламентныхЗаданий", ПериодАвтоОбновленияСпискаРегламентныхЗаданий);
|
||||
КонецЕсли;
|
||||
|
||||
#Если ТолстыйКлиентОбычноеПриложение Тогда
|
||||
Элементы.СписокРегламентныхЗаданийЖурналРегистрации1.Видимость = Ложь;
|
||||
#КонецЕсли
|
||||
@ -35,10 +30,27 @@
|
||||
Элементы.СписокРегламентныхЗаданийВыполнитьЗаданиеВручную.Заголовок = "На клиенте (толстый клиент)";
|
||||
#КонецЕсли
|
||||
Элементы.СписокФоновыхЗаданийНастройкаСпискаФоновыхЗаданий.Пометка = АвтообновлениеСпискаФоновыхЗаданий;
|
||||
Элементы.СписокРегламентныхЗаданийНастройкаСпискаРегламентныхЗаданий.Пометка = АвтообновлениеСпискаРегламентныхЗаданий;
|
||||
Элементы.СписокРегламентныхЗаданийНастройкаСпискаРегламентныхЗаданий.Пометка = АвтообновлениеСпискаРегламентныхЗаданий;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ОбновитьПриСоздании()
|
||||
|
||||
Попытка
|
||||
ОтборПриОткрытии();
|
||||
|
||||
ОбновитьСписокФоновыхЗаданий();
|
||||
ОбновитьСписокРегламентныхЗаданий();
|
||||
Исключение
|
||||
СообщитьПользователю(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
ВерсияОбработки = РеквизитФормыВЗначение("Объект").ВерсияОбработки();
|
||||
ЭтаФорма.Заголовок = СтрШаблон("Регламентные и фоновые задания %1", ВерсияОбработки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
|
||||
ОтключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий");
|
||||
@ -111,7 +123,7 @@
|
||||
|
||||
ОбновитьСписокРегламентныхЗаданий();
|
||||
Исключение
|
||||
ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке());
|
||||
СообщитьПользователю(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
КонецПроцедуры
|
||||
|
||||
@ -136,6 +148,11 @@
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СписокРегламентныхЗаданийПриАктивизацииСтроки(Элемент)
|
||||
ПодключитьОбработчикОжидания("ОбновитьСостояниеТекущегоРегламентногоЗадания", 1, Истина);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьСостояниеТекущегоРегламентногоЗадания()
|
||||
ТекущаяСтрока = Элементы.СписокРегламентныхЗаданий.ТекущаяСтрока;
|
||||
Если ТекущаяСтрока = Неопределено Тогда
|
||||
Возврат;
|
||||
@ -173,8 +190,8 @@
|
||||
ПоследнееЗадание = Регламентное.ПоследнееЗадание;
|
||||
Исключение
|
||||
ПоследнееЗадание = Неопределено;
|
||||
Инфо = ИнформацияОбОшибке();
|
||||
СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
|
||||
ТекстОшибки = ОписаниеОшибки();
|
||||
СообщитьПользователю(ТекстОшибки);
|
||||
Возврат Результат;
|
||||
КонецПопытки;
|
||||
|
||||
@ -225,11 +242,11 @@
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьРегламентныеЗадания(Команда)
|
||||
ОбновитьСписокРегламентныхЗаданий();
|
||||
ОбновитьСписокРегламентныхЗаданий(Истина);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ОбновитьСписокРегламентныхЗаданий()
|
||||
Процедура ОбновитьСписокРегламентныхЗаданий(ПолучитьСостояниеВсех = Ложь)
|
||||
Перем ТекущийИдентификатор;
|
||||
|
||||
ТекущаяСтрока = Элементы.СписокРегламентныхЗаданий.ТекущаяСтрока;
|
||||
@ -248,7 +265,7 @@
|
||||
|
||||
СписокРегламентныхЗаданий.Очистить();
|
||||
|
||||
ВывестиРегламентные();
|
||||
ВывестиРегламентные(ПолучитьСостояниеВсех);
|
||||
|
||||
СписокРегламентныхЗаданий.Сортировать("Метаданные");
|
||||
|
||||
@ -293,20 +310,21 @@
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Процедура ВывестиРегламентные()
|
||||
Процедура ВывестиРегламентные(ПолучитьСостояниеВсех = Ложь)
|
||||
|
||||
Отбор = ПолучитьОтборРегламентных();
|
||||
Попытка
|
||||
Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);
|
||||
Исключение
|
||||
Инфо = ИнформацияОбОшибке();
|
||||
СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
|
||||
ТекстОшибки = ОписаниеОшибки();
|
||||
СообщитьПользователю(ТекстОшибки);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
|
||||
Таймаут = Ложь;
|
||||
НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||
Оптимизация = Ложь;
|
||||
|
||||
Сч = 0;
|
||||
Количество = Регламентные.Количество();
|
||||
Для Каждого Регламентное Из Регламентные Цикл
|
||||
НоваяСтрока = СписокРегламентныхЗаданий.Добавить();
|
||||
НоваяСтрока.Метаданные = Регламентное.Метаданные.Представление();
|
||||
@ -319,15 +337,18 @@
|
||||
НоваяСтрока.Идентификатор = Регламентное.УникальныйИдентификатор;
|
||||
НоваяСтрока.Метод = Регламентное.Метаданные.ИмяМетода;
|
||||
|
||||
ТаймаутВывода = 1000;
|
||||
Если ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера < ТаймаутВывода Тогда
|
||||
ТаймаутВыводаМиллисекунд = 200;
|
||||
ДлительностьВывода = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
|
||||
Если НЕ Таймаут И ДлительностьВывода < ТаймаутВыводаМиллисекунд ИЛИ ПолучитьСостояниеВсех Тогда
|
||||
Сч = Сч + 1;
|
||||
// На больших базах подвисает...
|
||||
СвойстваПоследнегоВыполненного = ПолучитьСвойстваПоследнегоВыполненного(НоваяСтрока.Идентификатор, Регламентное);
|
||||
НоваяСтрока.Состояние = СвойстваПоследнегоВыполненного.Состояние;
|
||||
НоваяСтрока.Выполнялось = СвойстваПоследнегоВыполненного.Выполнялось;
|
||||
Иначе
|
||||
Оптимизация = Истина;
|
||||
КонецЕсли;
|
||||
Если НЕ Таймаут И ДлительностьВывода > ТаймаутВыводаМиллисекунд Тогда
|
||||
Таймаут = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяРегламентногоЗадания = НоваяСтрока.Метаданные + ?(ЗначениеЗаполнено(НоваяСтрока.Наименование), ":" + НоваяСтрока.Наименование, "");
|
||||
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Метод, Наименование", НоваяСтрока.Метод, НоваяСтрока.Наименование));
|
||||
@ -336,13 +357,16 @@
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Если Оптимизация Тогда
|
||||
Пояснение = "Получение состояния всех регламентных заданий заняло длительное время, поэтому обновление происходит только при активации строки.";
|
||||
Элементы.СписокРегламентныхЗаданийВыполнялось.Заголовок = "Выполнялось*";
|
||||
Элементы.СписокРегламентныхЗаданийВыполнялось.Подсказка = Пояснение;
|
||||
Элементы.СписокРегламентныхЗаданийСостояние.Заголовок = "Состояние*";
|
||||
Элементы.СписокРегламентныхЗаданийСостояние.Подсказка = Пояснение;
|
||||
КонецЕсли;
|
||||
ВремяЗаполненияРегламентных = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
|
||||
|
||||
ОптимизацияТекстПояснения = СтрШаблон("За %1 мсек. получено состояние %2 из %3 регламентных заданий,"
|
||||
+ " но обновление происходит и при активации строки.", ВремяЗаполненияРегламентных, Сч, Количество)
|
||||
+ " Для отображения состояния сразу всех воспользуйтесь командой обновления списка регламентных заданий.";
|
||||
|
||||
Элементы.СписокРегламентныхЗаданийВыполнялось.Подсказка = ОптимизацияТекстПояснения;
|
||||
Элементы.СписокРегламентныхЗаданийВыполнялось.Заголовок = "Выполнялось" + ?(Сч = Количество, "", "*");
|
||||
Элементы.СписокРегламентныхЗаданийСостояние.Подсказка = ОптимизацияТекстПояснения;
|
||||
Элементы.СписокРегламентныхЗаданийСостояние.Заголовок = "Состояние" + ?(Сч = Количество, "", "*");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -579,7 +603,8 @@
|
||||
ОтменитьФоновыеЗадания();
|
||||
ОбновитьСписокФоновыхЗаданий();
|
||||
Исключение
|
||||
ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке());
|
||||
ТекстОшибки = ОписаниеОшибки();
|
||||
СообщитьПользователю(ТекстОшибки);
|
||||
КонецПопытки;
|
||||
КонецПроцедуры
|
||||
|
||||
@ -701,8 +726,8 @@
|
||||
Попытка
|
||||
Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
|
||||
Исключение
|
||||
Инфо = ИнформацияОбОшибке();
|
||||
СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
|
||||
ТекстОшибки = ОписаниеОшибки();
|
||||
СообщитьПользователю(ТекстОшибки);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
#Область СведенияОВнешнейОбработке
|
||||
// -------------------------------------------------------
|
||||
//
|
||||
// БСП
|
||||
@ -22,7 +23,6 @@
|
||||
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
|
||||
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
|
||||
// которые поддерживают механизм ВПФ
|
||||
// МассивНазначений.Добавить("Документ.ЗаказКлиента");
|
||||
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
|
||||
|
||||
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
|
||||
@ -55,17 +55,17 @@
|
||||
// Выполняет команду в фоновом варианте
|
||||
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
|
||||
|
||||
Если ИдентификаторКоманды = "" Тогда
|
||||
Если ИдентификаторКоманды = "" Тогда
|
||||
|
||||
ИдентификаторКоманды = "";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Функция НаименованиеОбработки()
|
||||
|
||||
Возврат Метаданные().Синоним
|
||||
Возврат Метаданные().Синоним;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
|
||||
Функция ВерсияОбработки() Экспорт
|
||||
|
||||
Возврат "1.0.9";
|
||||
Возврат "1.0.10";
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -106,3 +106,5 @@
|
||||
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
|
||||
Возврат Команды;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -6,7 +6,7 @@
|
||||
<name>КонсольЗаданий2019</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Консоль заданий2019</value>
|
||||
<value>Консоль заданий 2019</value>
|
||||
</synonym>
|
||||
<comment>https://github.com/kuzyara/JobsConsole2019.epf (c)Душелов'2009</comment>
|
||||
<containedObjects classId="c3831ec8-d8d5-4f93-8a22-f9bfae07327f" objectId="03ed91a2-d56a-422c-8411-70bd7d3b1a76"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user