Сформировать представление отбора. Создает пользовательское представление отбора журнала регистрации.
// Создает пользовательское представление отбора журнала регистрации.
//
// Параметры:
// ПредставлениеОтбора - Строка - строка, содержащая пользовательское представление отбора.
// ОтборЖурналаРегистрации - Структура - значения отбора журнала регистрации.
// ОтборЖурналаРегистрацииПоУмолчанию - Структура - значения отбора журнала регистрации по умолчанию
// (не включаются в пользовательское представления).
//
Процедура СформироватьПредставлениеОтбора(ПредставлениеОтбора, ОтборЖурналаРегистрации,
ОтборЖурналаРегистрацииПоУмолчанию = Неопределено) Экспорт
ПредставлениеОтбора = "";
// Интервал
ДатаНачалаИнтервала = Неопределено;
ДатаОкончанияИнтервала = Неопределено;
Если Не ОтборЖурналаРегистрации.Свойство("ДатаНачала", ДатаНачалаИнтервала)
Или ДатаНачалаИнтервала = Неопределено Тогда
ДатаНачалаИнтервала = Дата('00010101000000');
КонецЕсли;
Если Не ОтборЖурналаРегистрации.Свойство("ДатаОкончания", ДатаОкончанияИнтервала)
Или ДатаОкончанияИнтервала = Неопределено Тогда
ДатаОкончанияИнтервала = Дата('00010101000000');
КонецЕсли;
Если ЗначениеЗаполнено(ДатаОкончанияИнтервала) И ДатаНачалаИнтервала > ДатаОкончанияИнтервала Тогда
ПромежуточноеПредставление = ПредставлениеПериода(ДатаОкончанияИнтервала, ДатаНачалаИнтервала);
ПредставлениеЧастями = СтрРазделить(ПромежуточноеПредставление, "-");
Если ПредставлениеЧастями.Количество() = 2 Тогда
ПредставлениеОтбора = СокрЛП(ПредставлениеЧастями[1]) + " - " + СокрЛП(ПредставлениеЧастями[0]);
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(ДатаНачалаИнтервала) Или ЗначениеЗаполнено(ДатаОкончанияИнтервала) Тогда
ПредставлениеОтбора = ПредставлениеПериода(ДатаНачалаИнтервала, ДатаОкончанияИнтервала);
КонецЕсли;
ДобавитьОграничениеВПредставлениеОтбора(ОтборЖурналаРегистрации, ПредставлениеОтбора, "Пользователь");
ДобавитьОграничениеВПредставлениеОтбора(ОтборЖурналаРегистрации, ПредставлениеОтбора,
"Событие", ОтборЖурналаРегистрацииПоУмолчанию);
ДобавитьОграничениеВПредставлениеОтбора(ОтборЖурналаРегистрации, ПредставлениеОтбора,
"ИмяПриложения", ОтборЖурналаРегистрацииПоУмолчанию);
ДобавитьОграничениеВПредставлениеОтбора(ОтборЖурналаРегистрации, ПредставлениеОтбора, "Сеанс");
ДобавитьОграничениеВПредставлениеОтбора(ОтборЖурналаРегистрации, ПредставлениеОтбора, "Уровень");
// Остальные ограничения указываем просто по представлением, без указания значений ограничения.
Для Каждого ЭлементОтбора Из ОтборЖурналаРегистрации Цикл
ИмяОграничения = ЭлементОтбора.Ключ;
Если ВРег(ИмяОграничения) = ВРег("ДатаНачала")
Или ВРег(ИмяОграничения) = ВРег("ДатаОкончания")
Или ВРег(ИмяОграничения) = ВРег("Событие")
Или ВРег(ИмяОграничения) = ВРег("ИмяПриложения")
Или ВРег(ИмяОграничения) = ВРег("Пользователь")
Или ВРег(ИмяОграничения) = ВРег("Сеанс")
Или ВРег(ИмяОграничения) = ВРег("Уровень") Тогда
Продолжить; // Интервал и особые ограничения уже выводили.
КонецЕсли;
// Для некоторых ограничений меняем представление.
Если ВРег(ИмяОграничения) = ВРег("ИмяПриложения") Тогда
ИмяОграничения = НСтр("ru = 'Приложение'");
ИначеЕсли ВРег(ИмяОграничения) = ВРег("СтатусТранзакции") Тогда
ИмяОграничения = НСтр("ru = 'Статус транзакции'");
ИначеЕсли ВРег(ИмяОграничения) = ВРег("ПредставлениеДанных") Тогда
ИмяОграничения = НСтр("ru = 'Представление данных'");
ИначеЕсли ВРег(ИмяОграничения) = ВРег("РабочийСервер") Тогда
ИмяОграничения = НСтр("ru = 'Рабочий сервер'");
ИначеЕсли ВРег(ИмяОграничения) = ВРег("ОсновнойIPПорт") Тогда
ИмяОграничения = НСтр("ru = 'Основной IP порт'");
ИначеЕсли ВРег(ИмяОграничения) = ВРег("ВспомогательныйIPПорт") Тогда
ИмяОграничения = НСтр("ru = 'Вспомогательный IP порт'");
ИначеЕсли ВРег(ИмяОграничения) = ВРег("РазделениеДанныхСеанса") Тогда
ИмяОграничения = НСтр("ru = 'Разделение данных сеанса'");
КонецЕсли;
Если Не ПустаяСтрока(ПредставлениеОтбора) Тогда
ПредставлениеОтбора = ПредставлениеОтбора + "; ";
КонецЕсли;
ПредставлениеОтбора = ПредставлениеОтбора + ИмяОграничения;
КонецЦикла;
Если ПустаяСтрока(ПредставлениеОтбора) Тогда
ПредставлениеОтбора = НСтр("ru = 'Не установлен'");
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
СформироватьПредставлениеТелефона (БСП)
НайтиЭлементОтбораПоПредставлению (БСП)
СформироватьПредставлениеАдреса (БСП)
ПредставлениеОтбораДополненияВыгрузки (БСП)
УдалитьЭлементыГруппыОтбора (БСП)
СформироватьСписокУчастников (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)