1
0
mirror of https://github.com/kuzyara/JobsConsole2019.epf.git synced 2024-11-24 08:32:18 +02:00

Пофиксил предупреждения синтаксического анализатора bsl-ls

This commit is contained in:
ROSSKO\Nikolay.Kuznecov 2020-07-16 11:22:38 +07:00
parent e3eac3379b
commit 36d68fb8ec
10 changed files with 447 additions and 382 deletions

3
.gitignore vendored
View File

@ -1,3 +1,4 @@
JobsConsole2019.zip
JobsConsole2019_1.*
src/bin/*
src/bin/*
Консоли запросов/КонсольЗапросов9000_.epf

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ВнешниеОбработки</name>
<name>КонсольЗаданий</name>
<comment></comment>
<projects>
</projects>

View File

@ -1,19 +1,27 @@
&НаКлиенте
Процедура ОК(Команда)
Если ПериодАвтообновления < 5 Тогда
ПериодАвтообновления = 5;
КонецЕсли;
Результат = Новый Структура("Автообновление, ПериодАвтообновления", Автообновление, ПериодАвтообновления);
Закрыть(Результат);
КонецПроцедуры
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Автообновление = Параметры.Автообновление;
ПериодАвтообновления = Параметры.ПериодАвтообновления;
Если ПериодАвтообновления < 5 Тогда
ПериодАвтообновления = 5;
АвтоОбновление = Параметры.АвтоОбновление;
ПериодАвтоОбновления = Параметры.ПериодАвтоОбновления;
ИнтервалСекунд = 5;
Если ПериодАвтоОбновления < ИнтервалСекунд Тогда
ПериодАвтоОбновления = ИнтервалСекунд;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОК(Команда)
ИнтервалСекунд = 5;
Если ПериодАвтоОбновления < ИнтервалСекунд Тогда
ПериодАвтоОбновления = ИнтервалСекунд;
КонецЕсли;
Результат = Новый Структура("АвтоОбновление, ПериодАвтоОбновления", АвтоОбновление, ПериодАвтоОбновления);
Закрыть(Результат);
КонецПроцедуры
#КонецОбласти

View File

@ -1,3 +1,36 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Предопределенное = Ложь;
Использование = Ложь;
Для Каждого Метаданное Из Метаданные.РегламентныеЗадания Цикл
Элементы.МетаданныеВыбор.СписокВыбора.Добавить(Метаданное.Имя, Метаданное.Представление());
КонецЦикла;
Если Параметры.Отбор <> Неопределено Тогда
Для Каждого Свойство Из Параметры.Отбор Цикл
Если Свойство.Ключ = "Ключ" Тогда
Ключ = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Наименование" Тогда
Наименование = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Использование" Тогда
Использование = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Предопределенное" Тогда
Предопределенное = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Метаданные" Тогда
МетаданныеВыбор = Свойство.Значение;
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОК(Команда)
@ -26,28 +59,4 @@
Закрыть(Отбор);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Предопределенное = Ложь;
Использование = Ложь;
Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл
Элементы.МетаданныеВыбор.СписокВыбора.Добавить(Метаданное.Имя, Метаданное.Представление());
КонецЦикла;
Если Параметры.Отбор <> Неопределено Тогда
Для Каждого Свойство из Параметры.Отбор Цикл
Если Свойство.Ключ = "Ключ" Тогда
Ключ = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Наименование" Тогда
Наименование = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Использование" Тогда
Использование = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Предопределенное" Тогда
Предопределенное = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Метаданные" Тогда
МетаданныеВыбор = Свойство.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@ -1,3 +1,72 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
СписокВыбора = Элементы.Регламентное.СписокВыбора;
Для Каждого РегламентноеЗадание Из Регламентные Цикл
Если СписокВыбора.НайтиПоЗначению(РегламентноеЗадание.Метаданные.Имя) = Неопределено Тогда
СписокВыбора.Добавить(РегламентноеЗадание.Метаданные.Имя, РегламентноеЗадание.Метаданные.Представление());
КонецЕсли;
КонецЦикла;
Активно = Ложь;
Завершено = Ложь;
ЗавершеноАварийно = Ложь;
Отменено = Ложь;
ЗаполнитьРеквизиты();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеквизиты()
Если Параметры.Отбор = Неопределено Тогда
Возврат;
КонецЕсли;
Отбор = Параметры.Отбор.Получить();
Для Каждого Свойство Из Отбор Цикл
Если Свойство.Ключ = "Начало" Тогда
Начало = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Конец" Тогда
Конец = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Ключ" Тогда
Ключ = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Наименование" Тогда
Наименование = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "ИмяМетода" Тогда
Метод = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "РегламентноеЗадание" Тогда
Регламентное = Свойство.Значение.Метаданные.Имя;
ИначеЕсли Свойство.Ключ = "Состояние" Тогда
УстановитьФлагиСостояния(Свойство.Значение);
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура УстановитьФлагиСостояния(МассивСостояний)
Для Каждого СостояниеЗадания Из МассивСостояний Цикл
Если СостояниеЗадания = СостояниеФоновогоЗадания.Активно Тогда
Активно = Истина;
ИначеЕсли СостояниеЗадания = СостояниеФоновогоЗадания.Завершено Тогда
Завершено = Истина;
ИначеЕсли СостояниеЗадания = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
ЗавершеноАварийно = Истина;
ИначеЕсли СостояниеЗадания = СостояниеФоновогоЗадания.Отменено Тогда
Отменено = Истина;
Иначе
ВызватьИсключение "Неизвестное состояние задания: " + СостояниеЗадания;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОК(Команда)
@ -55,7 +124,7 @@
Массив.Добавить(СостояниеФоновогоЗадания.Отменено);
КонецЕсли;
Если Массив.Количество() > 0 ТОгда
Если Массив.Количество() > 0 Тогда
Отбор.Вставить("Состояние", Массив);
КонецЕсли;
@ -71,59 +140,4 @@
КонецЕсли;
КонецФункции
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
СписокВыбора = Элементы.Регламентное.СписокВыбора;
Для Каждого РегламентноеЗадание из Регламентные Цикл
Если СписокВыбора.НайтиПоЗначению(РегламентноеЗадание.Метаданные.Имя) = Неопределено Тогда
СписокВыбора.Добавить(РегламентноеЗадание.Метаданные.Имя, РегламентноеЗадание.Метаданные.Представление());
КонецЕсли;
КонецЦикла;
Активно = Ложь;
Завершено = Ложь;
ЗавершеноАварийно = Ложь;
Отменено = Ложь;
Если Параметры.Отбор <> Неопределено Тогда
Отбор = Параметры.Отбор.Получить();
Для Каждого Свойство из Отбор Цикл
Если Свойство.Ключ = "Начало" Тогда
Начало = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Конец" Тогда
Конец = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Ключ" Тогда
Ключ = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Наименование" Тогда
Наименование = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "ИмяМетода" Тогда
Метод = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "Ключ" Тогда
Ключ = Свойство.Значение;
ИначеЕсли Свойство.Ключ = "РегламентноеЗадание" Тогда
Регламентное = Свойство.Значение.Метаданные.Имя;
//Регламентное = Свойство.Значение;
//СписокВыбора = Элементы.Регламентное.СписокВыбора;
//Для Каждого ЭлементСписка из СписокВыбора Цикл
// Если ЭлементСписка.Значение.УникальныйИдентификатор = Регламентное.УникальныйИдентификатор ТОгда
// Регламентное = ЭлементСписка.Значение;
// Прервать;
// КонецЕсли;
//КонецЦикла;
ИначеЕсли Свойство.Ключ = "Состояние" Тогда
Для Каждого СостояниеЗадания из Свойство.Значение Цикл
Если СостояниеЗадания = СостояниеФоновогоЗадания.Активно Тогда
Активно = Истина;
ИначеЕсли СостояниеЗадания = СостояниеФоновогоЗадания.Завершено Тогда
Завершено = Истина;
ИначеЕсли СостояниеЗадания = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
ЗавершеноАварийно = Истина;
ИначеЕсли СостояниеЗадания = СостояниеФоновогоЗадания.Отменено Тогда
Отменено = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@ -716,7 +716,7 @@
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ПараметрыЗаданияЗначение1</name>
<name>ПараметрыЗаданияЗначение</name>
<id>74</id>
<visible>true</visible>
<enabled>true</enabled>
@ -730,7 +730,7 @@
</dataPath>
<handlers>
<event>OnChange</event>
<name>ПараметрыЗаданияЗначение1ПриИзменении</name>
<name>ПараметрыЗаданияЗначениеПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПараметрыЗаданияЗначение1РасширеннаяПодсказка</name>

View File

@ -1,44 +1,32 @@
#Область ОбработчикиСобытийФормы
&НаКлиенте
Перем Расписание;
&НаКлиенте
Процедура ОК(Команда)
Если ЗаписатьРегламентноеЗадание(Расписание) Тогда
ЭтаФорма.Закрыть(РегламентноеЗаданиеИД);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРасписаниеНажатие(Элемент)
ИзменитьРасписание();
КонецПроцедуры
&НаКлиенте
Процедура ДиалогРасписанияРегламентногоЗаданияОткрытьЗавершение(РасписаниеРезультат, ДополнительныеПараметры) Экспорт
Если РасписаниеРезультат <> Неопределено Тогда
Расписание = РасписаниеРезультат;
Элементы.НадписьРасписание.Заголовок = "Выполнять: " + Строка(Расписание);
КонецЕсли;
Процедура ПриОткрытии(Отказ)
Расписание = ПолучитьРасписаниеРегламентногоЗадания(РегламентноеЗаданиеИД);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл
ПредставлениеМетаданного = СтрШаблон("%1 (%2)", Метаданное.Имя, Метаданное.Синоним);
Элементы.МетаданныеВыбор.СписокВыбора.Добавить(Метаданное.Имя, ПредставлениеМетаданного);
Для Каждого Задание Из Метаданные.РегламентныеЗадания Цикл
ПредставлениеЗадания = СтрШаблон("%1 (%2)", Задание.Имя, Задание.Синоним);
Элементы.МетаданныеВыбор.СписокВыбора.Добавить(Задание.Имя, ПредставлениеЗадания);
КонецЦикла;
Элементы.МетаданныеВыбор.СписокВыбора.СортироватьПоЗначению();
Попытка
ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
Исключение
Сообщить("Ошибка при получении списка пользователей информационной базы: " + ОписаниеОшибки());
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Ошибка при получении списка пользователей информационной базы: " + ОписаниеОшибки();
Сообщение.Сообщить();
ПользователиИБ = Неопределено;
КонецПопытки;
Если ПользователиИБ <> Неопределено Тогда
Для Каждого Пользователь из ПользователиИБ Цикл
Для Каждого Пользователь Из ПользователиИБ Цикл
Элементы.ПользователиВыбор.СписокВыбора.Добавить(Пользователь.Имя, Пользователь.ПолноеИмя);
КонецЦикла;
@ -64,7 +52,7 @@
// Добавлены параметры
Для Каждого Параметр Из РегламентноеЗадание.Параметры Цикл
НоваяСтрока = ПараметрыЗадания.Добавить();
НоваяСтрока.НомерСтроки = ПараметрыЗадания.Индекс(НоваяСтрока)+1;
НоваяСтрока.НомерСтроки = ПараметрыЗадания.Индекс(НоваяСтрока) + 1;
НоваяСтрока.Значение = Параметр;
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(Параметр));
@ -79,6 +67,61 @@
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОК(Команда)
Если ЗаписатьРегламентноеЗадание(Расписание) Тогда
ЭтаФорма.Закрыть(РегламентноеЗаданиеИД);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРасписаниеНажатие(Элемент)
ИзменитьРасписание();
КонецПроцедуры
&НаКлиенте
Процедура НадписьРасписаниеНажатие(Элемент)
ИзменитьРасписание();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРасписание()
Диалог = Новый ДиалогРасписанияРегламентногоЗадания(Расписание);
ОписаниеОповещения = Новый ОписаниеОповещения("ДиалогРасписанияРегламентногоЗаданияОткрытьЗавершение", ЭтаФорма);
Диалог.Показать(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ДиалогРасписанияРегламентногоЗаданияОткрытьЗавершение(РасписаниеРезультат, ДополнительныеПараметры) Экспорт
Если РасписаниеРезультат <> Неопределено Тогда
Расписание = РасписаниеРезультат;
Элементы.НадписьРасписание.Заголовок = "Выполнять: " + Строка(Расписание);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПараметрыЗаданияЗначениеПриИзменении(Элемент)
ОбновитьПараметры();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПараметры()
Для Каждого ТекСтрока Из ПараметрыЗадания Цикл
ТекСтрока.НомерСтроки = ПараметрыЗадания.Индекс(ТекСтрока) + 1;
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(ТекСтрока.Значение));
ТекСтрока.Тип = Новый ОписаниеТипов(МассивТипов);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ЗаписатьРегламентноеЗадание(Расписание)
Попытка
@ -111,19 +154,16 @@
РегламентноеЗадание.Записать();
Исключение
Сообщить("Ошибка: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Ошибка: " + ОписаниеОшибки();
Сообщение.Сообщить();
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Расписание = ПолучитьРасписаниеРегламентногоЗадания(РегламентноеЗаданиеИД);
КонецПроцедуры
&НаСервере
Функция ПолучитьРасписаниеРегламентногоЗадания(УникальныйНомерЗадания) Экспорт
ОбъектЗадания = ПолучитьОбъектРегламентногоЗадания(УникальныйНомерЗадания);
@ -136,9 +176,9 @@
&НаКлиенте
Процедура МетаданныеВыборОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СвойстваМетаданного = ПолучитьСвойстваЗадания(ВыбранноеЗначение);
Наименование = СвойстваМетаданного.Представление;
Метод = СвойстваМетаданного.ИмяМетода;
СвойстваЗадания = ПолучитьСвойстваЗадания(ВыбранноеЗначение);
Наименование = СвойстваЗадания.Представление;
Метод = СвойстваЗадания.ИмяМетода;
КонецПроцедуры
&НаСервереБезКонтекста
@ -152,34 +192,7 @@
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ИзменитьРасписание()
Диалог = Новый ДиалогРасписанияРегламентногоЗадания(Расписание);
ОписаниеОповещения = Новый ОписаниеОповещения("ДиалогРасписанияРегламентногоЗаданияОткрытьЗавершение", ЭтаФорма);
Диалог.Показать(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура НадписьРасписаниеНажатие(Элемент)
ИзменитьРасписание();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПараметры()
Для Каждого ТекСтрока Из ПараметрыЗадания Цикл
ТекСтрока.НомерСтроки = ПараметрыЗадания.Индекс(ТекСтрока)+1;
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(ТекСтрока.Значение));
ТекСтрока.Тип = Новый ОписаниеТипов(МассивТипов);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПараметрыЗаданияЗначение1ПриИзменении(Элемент)
ОбновитьПараметры();
КонецПроцедуры
&НаСервере
Функция ПолучитьОбъектРегламентногоЗадания(УникальныйНомерЗадания) Экспорт
@ -200,3 +213,5 @@
Возврат ТекущееРегламентноеЗадание;
КонецФункции
#КонецОбласти

View File

@ -1,3 +1,32 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаданиеИД = Параметры.ИдентификаторЗадания;
ФоновоеЗадание = ПолучитьОбъектФоновогоЗадания(ЗаданиеИД);
Если ФоновоеЗадание <> Неопределено Тогда
ИмяМетода = ФоновоеЗадание.ИмяМетода;
Наименование = ФоновоеЗадание.Наименование;
Ключ = ФоновоеЗадание.Ключ;
КонецЕсли;
Если Параметры.Свойство("ИмяМетода") Тогда
ИмяМетода = Параметры.ИмяМетода;
Наименование = Параметры.Наименование;
Ключ = Параметры.Ключ;
КонецЕсли;
Для Каждого Метаданное Из Метаданные.РегламентныеЗадания Цикл
Элементы.ИмяМетода.СписокВыбора.Добавить(Метаданное.ИмяМетода);
КонецЦикла;
Элементы.ИмяМетода.СписокВыбора.СортироватьПоЗначению();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОК(Команда)
@ -8,39 +37,13 @@
&НаСервере
Процедура ВыполнитьФоновоеЗадание(ИдентификаторЗадания)
//Попытка
ФоновоеЗадание = ФоновыеЗадания.Выполнить(ИмяМетода,, Ключ, Наименование);
ИдентификаторЗадания = ФоновоеЗадание.УникальныйИдентификатор;
//Исключение
// Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
//КонецПопытки;
ФоновоеЗадание = ФоновыеЗадания.Выполнить(ИмяМетода, , Ключ, Наименование);
ИдентификаторЗадания = ФоновоеЗадание.УникальныйИдентификатор;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаданиеИД = Параметры.ИдентификаторЗадания;
ФоновоеЗадание = ПолучитьОбъектФоновогоЗадания(ЗаданиеИД);
Если ФоновоеЗадание <> Неопределено Тогда
ИмяМетода = ФоновоеЗадание.ИмяМетода;
Наименование = ФоновоеЗадание.Наименование;
Ключ = ФоновоеЗадание.Ключ;
Иначе
//Ключ = Новый УникальныйИдентификатор;
КонецЕсли;
Если Параметры.Свойство("ИмяМетода") Тогда
ИмяМетода = Параметры.ИмяМетода;
Наименование = Параметры.Наименование;
Ключ = Параметры.Ключ;
КонецЕсли;
Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл
Элементы.ИмяМетода.СписокВыбора.Добавить(Метаданное.ИмяМетода);
КонецЦикла;
Элементы.ИмяМетода.СписокВыбора.СортироватьПоЗначению();
#КонецОбласти
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПолучитьОбъектФоновогоЗадания(УникальныйНомерЗадания) Экспорт
@ -60,4 +63,6 @@
Возврат ТекущееФоновоеЗадание;
КонецФункции
КонецФункции
#КонецОбласти

View File

@ -5,7 +5,8 @@
ЭтаФорма.ОтборФоновыхЗаданийВключен = Истина;
// защитный фильтр при интенсивном запуске фоновых
ЭтаФорма.ОтборФоновыхЗаданий = Новый ХранилищеЗначения(Новый Структура("Начало", ТекущаяДата() - 3600));
ИнтервалДляОтбора = 3600;
ЭтаФорма.ОтборФоновыхЗаданий = Новый ХранилищеЗначения(Новый Структура("Начало", ТекущаяДата() - ИнтервалДляОтбора));
КонецПроцедуры
@ -14,11 +15,11 @@
Попытка
ОтборПриОткрытии();
Если АвтообновлениеСпискаФоновыхЗаданий = Истина Тогда
ПодключитьОбработчикОжидания("ОбработчикАвтообновленияФоновыхЗаданий", ПериодАвтообновленияСпискаФоновыхЗаданий);
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий", ПериодАвтоОбновленияСпискаФоновыхЗаданий);
КонецЕсли;
Если АвтообновлениеСпискаРегламентныхЗаданий = Истина Тогда
ПодключитьОбработчикОжидания("ОбработчикАвтообновленияРегламентныхЗаданий", ПериодАвтообновленияСпискаРегламентныхЗаданий);
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияРегламентныхЗаданий", ПериодАвтоОбновленияСпискаРегламентныхЗаданий);
КонецЕсли;
ОбновитьСписокФоновыхЗаданий();
@ -40,34 +41,22 @@
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ОтключитьОбработчикОжидания("ОбработчикАвтообновленияФоновыхЗаданий");
ОтключитьОбработчикОжидания("ОбработчикАвтообновленияРегламентныхЗаданий");
ОтключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий");
ОтключитьОбработчикОжидания("ОбработчикАвтоОбновленияРегламентныхЗаданий");
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикАвтообновленияФоновыхЗаданий()
//Попытка
ОбновитьСписокФоновыхЗаданий();
//Исключение
// // Может возикать ошибка "Неизвестный идентификатор формы"
//КонецПопытки;
Процедура ОбработчикАвтоОбновленияФоновыхЗаданий()
ОбновитьСписокФоновыхЗаданий();
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикАвтообновленияРегламентныхЗаданий()
//Попытка
ОбновитьСписокРегламентныхЗаданий();
//Исключение
// // Может возикать ошибка "Неизвестный идентификатор формы"
//КонецПопытки;
Процедура ОбработчикАвтоОбновленияРегламентныхЗаданий()
ОбновитьСписокРегламентныхЗаданий();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокРегламентныхЗаданий
&НаКлиенте
@ -78,7 +67,7 @@
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("СписокРегламентныхЗаданийПередНачаломДобавленияЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогРегламентногоЗадания"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогРегламентногоЗадания"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
@ -102,7 +91,7 @@
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("СписокРегламентныхЗаданийПередНачаломИзмененияЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогРегламентногоЗадания"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогРегламентногоЗадания"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
@ -129,7 +118,7 @@
&НаСервере
Процедура УдалитьРегламентноеЗадание()
ВыделенныеСтроки = Элементы.СписокРегламентныхЗаданий.ВыделенныеСтроки;
Для Каждого Стр из ВыделенныеСтроки Цикл
Для Каждого Стр Из ВыделенныеСтроки Цикл
Строка = СписокРегламентныхЗаданий.НайтиПоИдентификатору(Стр);
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Строка.Идентификатор);
@ -138,11 +127,11 @@
КонецЕсли;
КонецЦикла;
Для Каждого Стр из ВыделенныеСтроки Цикл
Для Каждого Стр Из ВыделенныеСтроки Цикл
Строка = СписокРегламентныхЗаданий.НайтиПоИдентификатору(Стр);
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Строка.Идентификатор);
РегламентноеЗадание.Удалить();
КонецЦикла
КонецЦикла;
КонецПроцедуры
&НаКлиенте
@ -154,27 +143,24 @@
ТекущиеДанные = ЭтаФорма.СписокРегламентныхЗаданий.НайтиПоИдентификатору(ТекущаяСтрока);
Если ТекущиеДанные <> Неопределено Тогда
СвойстваПоследнегоВыполненого = ПолучитьСвойстваПоследнегоВыполненого(ТекущиеДанные.Идентификатор);
ТекущиеДанные.Состояние = СвойстваПоследнегоВыполненого.Состояние;
ТекущиеДанные.Выполнялось = СвойстваПоследнегоВыполненого.Выполнялось;
СвойстваПоследнегоВыполненного = ПолучитьСвойстваПоследнегоВыполненного(ТекущиеДанные.Идентификатор);
ТекущиеДанные.Состояние = СвойстваПоследнегоВыполненного.Состояние;
ТекущиеДанные.Выполнялось = СвойстваПоследнегоВыполненного.Выполнялось;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция ПолучитьПолноеИмяФормы(ИмяФормы)
Возврат Лев(ЭтаФорма.ИмяФормы, Найти(ЭтаФорма.ИмяФормы,".Форма.")+6) + ИмяФормы;
ДлинаИмени = 6;
Возврат Лев(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, ".Форма.") + ДлинаИмени) + ИмяФормы;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСвойстваПоследнегоВыполненого(ИдентификаторРегламентногоЗадания, Регламентное_ = Неопределено)
Функция ПолучитьСвойстваПоследнегоВыполненного(ИдентификаторРегламентногоЗадания, Регламентное_ = Неопределено)
Результат = Новый Структура("Выполнялось, Состояние");
Если Регламентное_ = Неопределено Тогда
Регламентное = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторРегламентногоЗадания);
@ -188,7 +174,7 @@
Исключение
ПоследнееЗадание = Неопределено;
Инфо = ИнформацияОбОшибке();
Сообщить(ПодробноеПредставлениеОшибки(Инфо));
СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
Возврат Результат;
КонецПопытки;
@ -201,6 +187,13 @@
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(ТекстСообщения)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ТекстСообщения;
Сообщение.Сообщить();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандТаблицыСписокРегламентныхЗаданий
@ -212,7 +205,7 @@
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("УстановитьОтборРегламентныхЗаданийЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогОтбораРегламентногоЗадания"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогОтбораРегламентногоЗадания"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
@ -248,77 +241,14 @@
Идентификаторы = Новый Массив;
ВыделенныеСтроки = Элементы.СписокРегламентныхЗаданий.ВыделенныеСтроки;
Для Каждого ВыделеннаяСтрока из ВыделенныеСтроки Цикл
Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
ТекСтрока = СписокРегламентныхЗаданий.НайтиПоИдентификатору(ВыделеннаяСтрока);
Идентификаторы.Добавить(ТекСтрока.Идентификатор);
КонецЦикла;
СписокРегламентныхЗаданий.Очистить();
Отбор = Неопределено;
СтрокаОтбора = "";
Если ОтборРегламентныхЗаданийВключен = Истина Тогда
Отбор = ОтборРегламентныхЗаданий;
Для Каждого Элемент Из Отбор Цикл
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = СтрокаОтбора + ";"
КонецЕсли;
СтрокаОтбора = СтрокаОтбора + Элемент.Ключ + ": " + Элемент.Значение;
КонецЦикла;
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = " ("+СтрокаОтбора+")";
КонецЕсли;
КонецЕсли;
Элементы.РегламентныеЗадания.Заголовок = "Регламентные задания" + СтрокаОтбора;
Попытка
Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);
Исключение
//Элементы.СписокРегламентныхЗаданий.Доступность = Ложь;
Инфо = ИнформацияОбОшибке();
Сообщить(ПодробноеПредставлениеОшибки(Инфо));
Возврат;
КонецПопытки;
//Элементы.СписокРегламентныхЗаданий.Доступность = Истина;
НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
Оптимизация = Ложь;
Для Каждого Регламентное из Регламентные Цикл
НоваяСтрока = СписокРегламентныхЗаданий.Добавить();
НоваяСтрока.Метаданные = Регламентное.Метаданные.Представление();
НоваяСтрока.Наименование = Регламентное.Наименование;
НоваяСтрока.Ключ = Регламентное.Ключ;
НоваяСтрока.Расписание = Регламентное.Расписание;
НоваяСтрока.Пользователь = Регламентное.ИмяПользователя;
НоваяСтрока.Предопределенное = Регламентное.Предопределенное;
НоваяСтрока.Использование = Регламентное.Использование;
НоваяСтрока.Идентификатор = Регламентное.УникальныйИдентификатор;
НоваяСтрока.Метод = Регламентное.Метаданные.ИмяМетода;
Если ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера < 1000 Тогда
// На больших базах подвисает...
СвойстваПоследнегоВыполненого = ПолучитьСвойстваПоследнегоВыполненого(НоваяСтрока.Идентификатор, Регламентное);
НоваяСтрока.Состояние = СвойстваПоследнегоВыполненого.Состояние;
НоваяСтрока.Выполнялось = СвойстваПоследнегоВыполненого.Выполнялось;
Иначе
Оптимизация = Истина;
КонецЕсли;
ИмяРегламентногоЗадания = НоваяСтрока.Метаданные + ?(ЗначениеЗаполнено(НоваяСтрока.Наименование), ":" + НоваяСтрока.Наименование, "");
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Метод, Наименование", НоваяСтрока.Метод, НоваяСтрока.Наименование));
Для Каждого Фоновое Из Строки Цикл
Фоновое.Регламентное = ИмяРегламентногоЗадания;
КонецЦикла;
КонецЦикла;
Если Оптимизация Тогда
Пояснение = "Получение состояния всех рег. заданий заняло длительное время, поэтому обновление происходит только при активации строки.";
Элементы.СписокРегламентныхЗаданийВыполнялось.Заголовок = "Выполнялось*";
Элементы.СписокРегламентныхЗаданийВыполнялось.Подсказка = Пояснение;
Элементы.СписокРегламентныхЗаданийСостояние.Заголовок = "Состояние*";
Элементы.СписокРегламентныхЗаданийСостояние.Подсказка = Пояснение;
КонецЕсли;
ВывестиРегламентные();
СписокРегламентныхЗаданий.Сортировать("Метаданные");
@ -333,7 +263,7 @@
ВыделенныеСтроки.Очистить();
КонецЕсли;
Для Каждого Идентификатор из Идентификаторы Цикл
Для Каждого Идентификатор Из Идентификаторы Цикл
Строки = СписокРегламентныхЗаданий.НайтиСтроки(Новый Структура("Идентификатор", Идентификатор));
Если Строки.Количество() > 0 Тогда
ВыделенныеСтроки.Добавить(Строки[0].ПолучитьИдентификатор());
@ -342,6 +272,80 @@
КонецПроцедуры
&НаСервере
Функция ПолучитьОтборРегламентных()
Отбор = Неопределено;
СтрокаОтбора = "";
Если ОтборРегламентныхЗаданийВключен = Истина Тогда
Отбор = ОтборРегламентныхЗаданий;
Для Каждого Элемент Из Отбор Цикл
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = СтрокаОтбора + ";";
КонецЕсли;
СтрокаОтбора = СтрокаОтбора + Элемент.Ключ + ": " + Элемент.Значение;
КонецЦикла;
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = " (" + СтрокаОтбора + ")";
КонецЕсли;
КонецЕсли;
Элементы.РегламентныеЗадания.Заголовок = "Регламентные задания" + СтрокаОтбора;
Возврат Отбор;
КонецФункции
&НаСервере
Процедура ВывестиРегламентные()
Отбор = ПолучитьОтборРегламентных();
Попытка
Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);
Исключение
Инфо = ИнформацияОбОшибке();
СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
Возврат;
КонецПопытки;
НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
Оптимизация = Ложь;
Для Каждого Регламентное Из Регламентные Цикл
НоваяСтрока = СписокРегламентныхЗаданий.Добавить();
НоваяСтрока.Метаданные = Регламентное.Метаданные.Представление();
НоваяСтрока.Наименование = Регламентное.Наименование;
НоваяСтрока.Ключ = Регламентное.Ключ;
НоваяСтрока.Расписание = Регламентное.Расписание;
НоваяСтрока.Пользователь = Регламентное.ИмяПользователя;
НоваяСтрока.Предопределенное = Регламентное.Предопределенное;
НоваяСтрока.Использование = Регламентное.Использование;
НоваяСтрока.Идентификатор = Регламентное.УникальныйИдентификатор;
НоваяСтрока.Метод = Регламентное.Метаданные.ИмяМетода;
ТаймаутВывода = 1000;
Если ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера < ТаймаутВывода Тогда
// На больших базах подвисает...
СвойстваПоследнегоВыполненного = ПолучитьСвойстваПоследнегоВыполненного(НоваяСтрока.Идентификатор, Регламентное);
НоваяСтрока.Состояние = СвойстваПоследнегоВыполненного.Состояние;
НоваяСтрока.Выполнялось = СвойстваПоследнегоВыполненного.Выполнялось;
Иначе
Оптимизация = Истина;
КонецЕсли;
ИмяРегламентногоЗадания = НоваяСтрока.Метаданные + ?(ЗначениеЗаполнено(НоваяСтрока.Наименование), ":" + НоваяСтрока.Наименование, "");
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Метод, Наименование", НоваяСтрока.Метод, НоваяСтрока.Наименование));
Для Каждого Фоновое Из Строки Цикл
Фоновое.Регламентное = ИмяРегламентногоЗадания;
КонецЦикла;
КонецЦикла;
Если Оптимизация Тогда
Пояснение = "Получение состояния всех регламентных заданий заняло длительное время, поэтому обновление происходит только при активации строки.";
Элементы.СписокРегламентныхЗаданийВыполнялось.Заголовок = "Выполнялось*";
Элементы.СписокРегламентныхЗаданийВыполнялось.Подсказка = Пояснение;
Элементы.СписокРегламентныхЗаданийСостояние.Заголовок = "Состояние*";
Элементы.СписокРегламентныхЗаданийСостояние.Подсказка = Пояснение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Расписание(Команда)
ВыделенныеСтроки = Элементы.СписокРегламентныхЗаданий.ВыделенныеСтроки;
@ -404,23 +408,23 @@
&НаКлиенте
Процедура НастройкаСпискаРегламентныхЗаданий(Команда)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Автообновление", АвтообновлениеСпискаРегламентныхЗаданий);
СтруктураПараметров.Вставить("ПериодАвтообновления", ПериодАвтообновленияСпискаРегламентныхЗаданий);
СтруктураПараметров.Вставить("АвтоОбновление", АвтообновлениеСпискаРегламентныхЗаданий);
СтруктураПараметров.Вставить("ПериодАвтоОбновления", ПериодАвтоОбновленияСпискаРегламентныхЗаданий);
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("НастройкаСпискаРегламентныхЗаданийЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогНастроекСписка"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогНастроекСписка"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НастройкаСпискаРегламентныхЗаданийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
АвтообновлениеСпискаРегламентныхЗаданий = РезультатЗакрытия.Автообновление;
ПериодАвтообновленияСпискаРегламентныхЗаданий = РезультатЗакрытия.ПериодАвтообновления;
ПериодАвтоОбновленияСпискаРегламентныхЗаданий = РезультатЗакрытия.ПериодАвтообновления;
ОтключитьОбработчикОжидания("ОбработчикАвтообновленияРегламентныхЗаданий");
Если АвтообновлениеСпискаРегламентныхЗаданий = Истина Тогда
ПодключитьОбработчикОжидания("ОбработчикАвтообновленияРегламентныхЗаданий", ПериодАвтообновленияСпискаРегламентныхЗаданий);
ОтключитьОбработчикОжидания("ОбработчикАвтоОбновленияРегламентныхЗаданий");
Если АвтоОбновлениеСпискаРегламентныхЗаданий = Истина Тогда
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияРегламентныхЗаданий", ПериодАвтообновленияСпискаРегламентныхЗаданий);
КонецЕсли;
Элементы.СписокРегламентныхЗаданийНастройкаСпискаРегламентныхЗаданий.Пометка = АвтообновлениеСпискаРегламентныхЗаданий;
КонецЕсли;
@ -446,7 +450,7 @@
Индекс = 0;
Пока Индекс < Задание.Параметры.Количество() Цикл
СтрокаПараметров = СтрокаПараметров + "Задание.Параметры[" + Индекс + "]";
Если Индекс < (Задание.Параметры.Количество()-1) Тогда
Если Индекс < (Задание.Параметры.Количество() - 1) Тогда
СтрокаПараметров = СтрокаПараметров + ",";
КонецЕсли;
Индекс = Индекс + 1;
@ -469,25 +473,23 @@
Идентификатор = Новый УникальныйИдентификатор(УникальныйИдентификатор);
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
//Если Задание.Использование Тогда
//проверка на выполнение в текущий момент
Отбор=Новый Структура;
Отбор.Вставить("Ключ",Строка(Задание.УникальныйИдентификатор));
Отбор.Вставить("Состояние ",СостояниеФоновогоЗадания.Активно);
МассивЗаданий=ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
// проверка на выполнение в текущий момент
Отбор = Новый Структура;
Отбор.Вставить("Ключ", Строка(Задание.УникальныйИдентификатор));
Отбор.Вставить("Состояние ", СостояниеФоновогоЗадания.Активно);
МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
ИдентификаторНовогоЗадания = Неопределено;
Если МассивЗаданий.Количество() = 0 Тогда
НаименованиеФоновогоЗадания = "Запуск вручную: " + Задание.Метаданные.Синоним;
ФоновоеЗадание = ФоновыеЗадания.Выполнить(Задание.Метаданные.ИмяМетода, Задание.Параметры, Строка(Задание.УникальныйИдентификатор), НаименованиеФоновогоЗадания);
ИдентификаторНовогоЗадания = ФоновоеЗадание.УникальныйИдентификатор;
Иначе
СообщитьПользователю("Задание уже запущено");
КонецЕсли;
ИдентификаторНовогоЗадания = Неопределено;
Если МассивЗаданий.Количество()=0 Тогда
НаименованиеФоновогоЗадания = "Запуск вручную: "+ Задание.Метаданные.Синоним;
ФоновоеЗадание = ФоновыеЗадания.Выполнить(Задание.Метаданные.ИмяМетода, Задание.Параметры, Строка(Задание.УникальныйИдентификатор), НаименованиеФоновогоЗадания);
ИдентификаторНовогоЗадания = ФоновоеЗадание.УникальныйИдентификатор;
Иначе
Сообщить("Задание уже запущено");
КонецЕсли;
//КонецЕсли;
ОбновитьСписокРегламентныхЗаданий();
ОбновитьСписокФоновыхЗаданий(ИдентификаторНовогоЗадания);
КонецПроцедуры
@ -501,7 +503,10 @@
&НаСервере
Процедура ПодключитьВнешнююОбработкуНаСервере()
ВнешниеОбработки.Подключить("v8res://mngbase/StandardEventLog.epf", "StandardEventLog", false);
// BSLLS:UsingExternalCodeTools-off
// https://github.com/1c-syntax/bsl-language-server/issues/1283
ВнешниеОбработки.Подключить("v8res://mngbase/StandardEventLog.epf", "StandardEventLog", Истина);
// BSLLS:UsingExternalCodeTools-on
КонецПроцедуры
#КонецОбласти
@ -525,7 +530,7 @@
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("СписокФоновыхЗаданийПередНачаломДобавленияЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогФоновогоЗадания"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогФоновогоЗадания"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
@ -558,8 +563,8 @@
Фоновое = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ТекущаяСтрока.Идентификатор);
Если Фоновое <> Неопределено Тогда
СообщенияПользователю = Фоновое.ПолучитьСообщенияПользователю();
Для Каждого Сообщение Из СообщенияПользователю Цикл;
Сообщить(Сообщение.Текст);
Для Каждого Сообщение Из СообщенияПользователю Цикл
СообщитьПользователю(Сообщение.Текст);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
@ -581,7 +586,7 @@
&НаСервере
Процедура ОтменитьФоновыеЗадания()
ВыделенныеСтроки = Элементы.СписокФоновыхЗаданий.ВыделенныеСтроки;
Для Каждого Стр из ВыделенныеСтроки Цикл
Для Каждого Стр Из ВыделенныеСтроки Цикл
Строка = СписокФоновыхЗаданий.НайтиПоИдентификатору(Стр);
ТекИдентификатор = Новый УникальныйИдентификатор(Строка.Идентификатор);
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ТекИдентификатор);
@ -596,7 +601,7 @@
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("УстановитьОтборФоновыхЗаданийЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогОтбораФоновогоЗадания"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогОтбораФоновогоЗадания"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
@ -621,9 +626,6 @@
ТекЗадание = СписокРегламентныхЗаданий.НайтиПоИдентификатору(ТекИдентификаторСтроки);
ТекОтбор = Новый Структура;
//Если ТипЗнч(ОтборФоновыхЗаданий) = Тип("ХранилищеЗначения") Тогда
// ТекОтбор = ОтборФоновыхЗаданий.Получить();
//КонецЕсли;
Регламентное = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ТекЗадание.Идентификатор);
ТекОтбор.Вставить("РегламентноеЗадание", Регламентное);
@ -662,40 +664,49 @@
Идентификаторы = Новый Массив;
ВыделенныеСтроки = Элементы.СписокФоновыхЗаданий.ВыделенныеСтроки;
Для Каждого ВыделеннаяСтрока из ВыделенныеСтроки Цикл
Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
ТекСтрока = СписокФоновыхЗаданий.НайтиПоИдентификатору(ВыделеннаяСтрока);
Идентификаторы.Добавить(ТекСтрока.Идентификатор);
КонецЦикла;
СписокФоновыхЗаданий.Очистить();
Отбор = Неопределено;
СтрокаОтбора = "";
Если ОтборФоновыхЗаданийВключен = Истина Тогда
Отбор = ОтборФоновыхЗаданий.Получить();
Для Каждого Элемент Из Отбор Цикл
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = СтрокаОтбора + ";"
КонецЕсли;
СтрокаОтбора = СтрокаОтбора + Элемент.Ключ + ": " + Элемент.Значение;
КонецЦикла;
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = " ("+СтрокаОтбора+")";
ВывестиФоновые();
Если ТекущийИдентификатор <> Неопределено Тогда
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Идентификатор", ТекущийИдентификатор));
Если Строки.Количество() > 0 Тогда
Элементы.СписокФоновыхЗаданий.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
Элементы.ФоновыеЗадания.Заголовок = "Фоновые задания" + СтрокаОтбора;
Если Идентификаторы.Количество() > 0 Тогда
ВыделенныеСтроки.Очистить();
КонецЕсли;
Для Каждого Идентификатор Из Идентификаторы Цикл
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Идентификатор", Идентификатор));
Если Строки.Количество() > 0 Тогда
ВыделенныеСтроки.Добавить(Строки[0].ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВывестиФоновые()
Отбор = ПолучитьОтборФоновых();
Попытка
Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Исключение
Инфо = ИнформацияОбОшибке();
Сообщить(ПодробноеПредставлениеОшибки(Инфо));
//Элементы.СписокФоновыхЗаданий.Доступность = Ложь;
СообщитьПользователю(ПодробноеПредставлениеОшибки(Инфо));
Возврат;
КонецПопытки;
//Элементы.СписокФоновыхЗаданий.Доступность = Истина;
Для Каждого Фоновое из Фоновые Цикл
Для Каждого Фоновое Из Фоновые Цикл
НоваяСтрока = СписокФоновыхЗаданий.Добавить();
НоваяСтрока.Сообщения = Фоновое.ПолучитьСообщенияПользователю().Количество();
@ -726,51 +737,53 @@
НоваяСтрока.Идентификатор = Фоновое.УникальныйИдентификатор;
НоваяСтрока.СостояниеЗадания = Фоновое.Состояние;
КонецЦикла;
Если ТекущийИдентификатор <> Неопределено Тогда
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Идентификатор", ТекущийИдентификатор));
Если Строки.Количество() > 0 Тогда
Элементы.СписокФоновыхЗаданий.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
Если Идентификаторы.Количество() > 0 Тогда
ВыделенныеСтроки.Очистить();
КонецЕсли;
Для Каждого Идентификатор из Идентификаторы Цикл
Строки = СписокФоновыхЗаданий.НайтиСтроки(Новый Структура("Идентификатор", Идентификатор));
Если Строки.Количество() > 0 Тогда
ВыделенныеСтроки.Добавить(Строки[0].ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПолучитьОтборФоновых()
Отбор = Неопределено;
СтрокаОтбора = "";
Если ОтборФоновыхЗаданийВключен = Истина Тогда
Отбор = ОтборФоновыхЗаданий.Получить();
Для Каждого Элемент Из Отбор Цикл
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = СтрокаОтбора + ";";
КонецЕсли;
СтрокаОтбора = СтрокаОтбора + Элемент.Ключ + ": " + Элемент.Значение;
КонецЦикла;
Если СтрокаОтбора <> "" Тогда
СтрокаОтбора = " (" + СтрокаОтбора + ")";
КонецЕсли;
КонецЕсли;
Элементы.ФоновыеЗадания.Заголовок = "Фоновые задания" + СтрокаОтбора;
Возврат Отбор;
КонецФункции
&НаКлиенте
Процедура НастройкаСпискаФоновыхЗаданий(Команда)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Автообновление", АвтообновлениеСпискаФоновыхЗаданий);
СтруктураПараметров.Вставить("ПериодАвтообновления", ПериодАвтообновленияСпискаФоновыхЗаданий);
СтруктураПараметров.Вставить("АвтоОбновление", АвтоОбновлениеСпискаФоновыхЗаданий);
СтруктураПараметров.Вставить("ПериодАвтоОбновления", ПериодАвтообновленияСпискаФоновыхЗаданий);
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("НастройкаСпискаФоновыхЗаданийЗавершение", ЭтаФорма);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогНастроекСписка"), СтруктураПараметров, ЭтаФорма,,,,ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму(ПолучитьПолноеИмяФормы("ДиалогНастроекСписка"), СтруктураПараметров, ЭтаФорма, , , , ОписаниеОповещенияОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НастройкаСпискаФоновыхЗаданийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
АвтообновлениеСпискаФоновыхЗаданий = РезультатЗакрытия.Автообновление;
ПериодАвтообновленияСпискаФоновыхЗаданий = РезультатЗакрытия.ПериодАвтообновления;
ПериодАвтоОбновленияСпискаФоновыхЗаданий = РезультатЗакрытия.ПериодАвтоОбновления;
ОтключитьОбработчикОжидания("ОбработчикАвтообновленияФоновыхЗаданий");
Если АвтообновлениеСпискаФоновыхЗаданий = Истина Тогда
ПодключитьОбработчикОжидания("ОбработчикАвтообновленияФоновыхЗаданий", ПериодАвтообновленияСпискаФоновыхЗаданий);
ОтключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий");
Если АвтоОбновлениеСпискаФоновыхЗаданий = Истина Тогда
ПодключитьОбработчикОжидания("ОбработчикАвтоОбновленияФоновыхЗаданий", ПериодАвтоОбновленияСпискаФоновыхЗаданий);
КонецЕсли;
Элементы.СписокФоновыхЗаданийНастройкаСпискаФоновыхЗаданий.Пометка = АвтообновлениеСпискаФоновыхЗаданий;
Элементы.СписокФоновыхЗаданийНастройкаСпискаФоновыхЗаданий.Пометка = АвтоОбновлениеСпискаФоновыхЗаданий;
КонецЕсли;
КонецПроцедуры

View File

@ -38,15 +38,6 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="2dcca15d-838d-4d87-a775-0c234c0178ef">
<name>ДиалогНастроекСписка</name>
<synonym>
<key>ru</key>
<value>Диалог настроек списка</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="649c7ad0-644e-4fd5-9fad-b54f271275a1">
<name>ДиалогОтбораРегламентногоЗадания</name>
<synonym>
@ -65,4 +56,13 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="2dcca15d-838d-4d87-a775-0c234c0178ef">
<name>ДиалогНастроекСписка</name>
<synonym>
<key>ru</key>
<value>Диалог настроек списка</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:ExternalDataProcessor>