RDT1C/DataProcessors/ирАнализЖурналаРегистрации/Ext/ObjectModule.bsl
2016-12-04 00:14:16 +03:00

165 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Функция ПолучитьСписокЗначенийЭлементаОтбора(ПолеОтбора) Экспорт
Если ПолеОтбора = "Уровень" Тогда
ВозможныеЗначения = Новый СписокЗначений;
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Ошибка);
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Предупреждение);
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Информация);
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Примечание);
ИначеЕсли ПолеОтбора = "СтатусТранзакции" Тогда
ВозможныеЗначения = Новый СписокЗначений;
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.Зафиксирована);
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.Отменена);
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.НеЗавершена);
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.НетТранзакции);
ИначеЕсли Ложь
Или ПолеОтбора = "Пользователь"
Или ПолеОтбора = "Компьютер"
Или ПолеОтбора = "ИмяПриложения"
Или ПолеОтбора = "Событие"
Или ПолеОтбора = "Метаданные"
Или ПолеОтбора = "РабочийСервер"
Или ПолеОтбора = "ОсновнойIPПорт"
Или ПолеОтбора = "ВспомогательныйIPПорт"
Или ПолеОтбора = "РазделениеДанныхСеанса"
Тогда
СтруктураЗначенийОтбора = ПолучитьЗначенияОтбораЖурналаРегистрации(ПолеОтбора);
ВозможныеЗначения = СтруктураЗначенийОтбора[ПолеОтбора];
Иначе
ВозможныеЗначения = Неопределено;
КонецЕсли;
Если ВозможныеЗначения <> Неопределено Тогда
Если ТипЗнч(ВозможныеЗначения) = Тип("СписокЗначений") Тогда
СписокВыбора = ВозможныеЗначения;
ИначеЕсли ТипЗнч(ВозможныеЗначения) = Тип("Массив") Тогда
СписокВыбора = Новый СписокЗначений;
СписокВыбора.ЗагрузитьЗначения(ВозможныеЗначения);
СписокВыбора.СортироватьПоЗначению();
ИначеЕсли ТипЗнч(ВозможныеЗначения) = Тип("Соответствие") Тогда
СписокВыбора = Новый СписокЗначений;
Для Каждого КлючИЗначение Из ВозможныеЗначения Цикл
СписокВыбора.Добавить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
СписокВыбора.СортироватьПоПредставлению();
КонецЕсли;
КонецЕсли;
Возврат СписокВыбора;
КонецФункции
Функция ДобавитьЭлементОтбора(Отбор, ПолеОтбора = "Данные", Знач ЗначениеОтбора = Неопределено, ПредставлениеЗначения = Неопределено,
Использование = Истина, ОставлятьСтарыеПометки = Истина) Экспорт
СтрокаОтбора = Отбор.Найти(ПолеОтбора);
Если СтрокаОтбора = Неопределено Тогда
СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Поле = ПолеОтбора;
СтрокаОтбора.Значение = ПолучитьСписокЗначенийЭлементаОтбора(ПолеОтбора);
УстановитьОписаниеТиповЗначенияОтбора(СтрокаОтбора);
КонецЕсли;
ЛксПрисвоитьЕслиНеРавно(СтрокаОтбора.Использование, Использование);
СписокВыбора = СтрокаОтбора.Значение;
Если ТипЗнч(СписокВыбора) = Тип("СписокЗначений") Тогда
Если Не ОставлятьСтарыеПометки Тогда
СписокВыбора.ЗаполнитьПометки(Ложь);
КонецЕсли;
Если ТипЗнч(ЗначениеОтбора) <> Тип("СписокЗначений") Тогда
лПустышка = ЗначениеОтбора;
ЗначениеОтбора = Новый СписокЗначений;
ЗначениеОтбора.Добавить(лПустышка, , Истина);
КонецЕсли;
Для Каждого ЭлементСписка Из СписокВыбора Цикл
ЭлементСтарогоСписка = ЗначениеОтбора.НайтиПоЗначению(ЭлементСписка.Значение);
Если ЭлементСтарогоСписка <> Неопределено Тогда
ЭлементСписка.Пометка = ЭлементСтарогоСписка.Пометка;
КонецЕсли;
КонецЦикла;
Иначе
СтрокаОтбора.Значение = ЗначениеОтбора;
КонецЕсли;
Возврат СтрокаОтбора;
КонецФункции
Функция УстановитьОписаниеТиповЗначенияОтбора(СтрокаОтбора) Экспорт
ПолеОтбора = СтрокаОтбора.Поле;
МетаРеквизит = Метаданные().ТабличныеЧасти.ТаблицаЖурнала.Реквизиты[ПолеОтбора];
БазовоеОписаниеТипов = МетаРеквизит.Тип;
Если Ложь
Или ПолеОтбора = "Уровень"
Или ПолеОтбора = "СтатусТранзакции"
Или ПолеОтбора = "Пользователь"
Или ПолеОтбора = "Компьютер"
Или ПолеОтбора = "ИмяПриложения"
Или ПолеОтбора = "Событие"
Или ПолеОтбора = "Метаданные"
Или ПолеОтбора = "РабочийСервер"
Или ПолеОтбора = "ОсновнойIPПорт"
Или ПолеОтбора = "ВспомогательныйIPПорт"
Или ПолеОтбора = "РазделениеДанныхСеанса"
Тогда
ОписаниеТипов = Новый ОписаниеТипов("СписокЗначений");
ИначеЕсли ПолеОтбора = "Сеанс" Тогда
ОписаниеТипов = Новый ОписаниеТипов(БазовоеОписаниеТипов, "СписокЗначений");
Иначе
ОписаниеТипов = БазовоеОписаниеТипов;
КонецЕсли;
СтрокаОтбора.ОписаниеТипов = ОписаниеТипов;
СтрокаОтбора.Значение = ОписаниеТипов.ПривестиЗначение(СтрокаОтбора.Значение);
СтрокаОтбора.Представление = МетаРеквизит.Представление();
КонецФункции
#Если Клиент Тогда
Функция ОткрытьСПараметром(ПолеОтбора = "Данные", ЗначениеОтбора, ПредставлениеЗначения = Неопределено) Экспорт
Форма = ПолучитьФорму(,, ЗначениеОтбора);
Форма.Открыть();
Форма.Отбор.Очистить();
Форма.НачалоПериода = НачалоДня(ТекущаяДата());
Форма.КонецПериода = Неопределено;
ДобавитьЭлементОтбора(Форма.Отбор, ПолеОтбора, ЗначениеОтбора, ПредставлениеЗначения);
Ответ = Вопрос("Сразу выполнить выгрузку с текущим отбором?", РежимДиалогаВопрос.ОКОтмена);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Форма.ОбновитьТаблицуЖурнала();
КонецЕсли;
Возврат Форма;
КонецФункции
Функция ОткрытьСОтбором(НачалоПериода = Неопределено, КонецПериода = Неопределено, СтруктураОтбора = Неопределено,
МаксимальныйРазмерВыгрузки = Неопределено) Экспорт
Форма = ПолучитьФорму(,,);
Форма.Открыть();
Форма.Отбор.Очистить();
Если НачалоПериода <> Неопределено Тогда
Форма.НачалоПериода = НачалоПериода;
Иначе
Форма.НачалоПериода = НачалоДня(ТекущаяДата());
КонецЕсли;
Если КонецПериода <> Неопределено Тогда
Форма.КонецПериода = КонецПериода;
Иначе
Форма.КонецПериода = Неопределено;
КонецЕсли;
Если МаксимальныйРазмерВыгрузки <> Неопределено Тогда
Форма.МаксимальныйРазмерВыгрузки = МаксимальныйРазмерВыгрузки;
КонецЕсли;
Если СтруктураОтбора <> Неопределено Тогда
Для Каждого КлючИЗначение Из СтруктураОтбора Цикл
ДобавитьЭлементОтбора(Форма.Отбор, КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
КонецЕсли;
Ответ = Вопрос("Сразу выполнить выгрузку с текущим отбором?", РежимДиалогаВопрос.ОКОтмена);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Форма.ОбновитьТаблицуЖурнала();
КонецЕсли;
Возврат Форма;
КонецФункции
#КонецЕсли