// Функция назначения условного оформления динамического списка
//
// Параметры:
// Форма - УправляемаяФорма, ДинамическийСписок - Передаем контекст нашей формы - ЭтаФорма, для возможности установки условного оформления.
// Также можно передать динамический список с формы.
// ПараметрыОформления - Структура - В этом параметре мы указываем необходимое оформление,
// которое нужно добавить в условное оформление списка - Новый Структура("ЦветФона, Поле", ЦветФонаСписка, ИмяПоля).
// ЦветФонаСписка - например, цвет, который нам нужно задать на фон, ИмяПоля - Можно указать конкретную графу (поле) динамического списка, которое нужно оформить.
// Отборы - Массив, Структура - возможен массив структур
// * Ключи -
// ** ТЧ - Строка - имя таблицы
// ** Поле - Строка - имя поля
// ** Значение - Произвольный - устанавливаемое значение
// ** ВидСравнения - ВидСравненияКомпоновкиДанных - необязательное
//
// В этом параметре мы указываем необходимый отбор, при котором нужно,
// чтобы срабатывало условие оформления - Новый Структура("ТЧ, Поле, Значение", ИмяСписка, "СкладскаяОперация", СкладскаяОперация).
// ИмяСписка(ТЧ) - это имя нашего динамического списка на форме, "СкладскаяОперация" (Поле) - на которое устанавливается отбор,
// СкладскаяОперация (Значение) - значение, при котором нужно, чтобы оформление работало.
// ВидГруппы - ТипГруппыЭлементовОтбораКомпоновкиДанных - необязательное, по умолчанию "ГруппаИ"
//
//
// Возвращаемое значение:
// Структура - содержит ключи:
// - Элемент - количество элементов
// - Отбор - количество отборов
//
//Пример:
// ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста", WebЦвета.ЛимонноЗеленый), Новый Структура("ТЧ, Поле, Значение","Объект.Двор_СостояниеВорот", "Направление", ""))
// ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("ЦветТекста", WebЦвета.ОранжевоКрасный), Новый Структура("ТЧ, Поле, Значение, ВидСравнения","СписокДокументов_Приемка_Паллеты", "Длительность", 2, ВидСравненияКомпоновкиДанных.Больше))
// ДобавитьУсловноеОформление(ЭтаФорма, Новый Структура("Шрифт, Поле", Новый Шрифт(,,Истина), ИмяСписка+"Анализ"), Новый Структура("ТЧ, Поле, Значение","Объект.АнализДокумента", "ВидЗапроса", 7))
//
Функция ДобавитьУсловноеОформление(ФормаОбъекта, ПараметрыОформления, Отборы, ВидГруппы = Неопределено) экспорт
Если Не ТипЗнч(Отборы) = Тип("Массив") Тогда
Отборы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Отборы);
КонецЕсли;
НовыйЭлемент = ФормаОбъекта.УсловноеОформление.Элементы.Добавить();
Для Каждого Элемент Из ПараметрыОформления Цикл
Если Элемент.Ключ="Поле" Тогда
ПолеОформления = Элемент.Значение;
ОформляемыеПоля = НовыйЭлемент.Поля.Элементы.Добавить();
ОформляемыеПоля.Поле = Новый ПолеКомпоновкиДанных(ПолеОформления);
Иначе
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(Элемент.Ключ, Элемент.Значение);
КонецЕсли;
КонецЦикла;
НовыйЭлемент.Использование = Истина;
Если Отборы.Количество()>1 Тогда
ГруппаОтбора = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
Если ЗначениеЗаполнено(ВидГруппы) Тогда
ГруппаОтбора.ТипГруппы = ВидГруппы;
Иначе
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
КонецЕсли;
ГруппаОтбора.Использование = Истина;
Иначе
ГруппаОтбора = Неопределено;
КонецЕсли;
Для Каждого Отбор Из Отборы Цикл
Если ГруппаОтбора = Неопределено Тогда
ЭлементОтбор = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Иначе
ЭлементОтбор = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
КонецЕсли;
ЭлементОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(?(ТипЗнч(ФормаОбъекта)=Тип("ДинамическийСписок"), Отбор.Поле, Отбор.ТЧ+"."+Отбор.Поле));
Если Отбор.Свойство("ВидСравнения") Тогда
ЭлементОтбор.ВидСравнения = Отбор.ВидСравнения;
Иначе
ЭлементОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
КонецЕсли;
ЭлементОтбор.ПравоеЗначение = Отбор.Значение;
КонецЦикла;
Возврат Новый Структура("Элемент, Отбор", ФормаОбъекта.УсловноеОформление.Элементы.Количество()-1, НовыйЭлемент.Отбор.Элементы.Количество()-1);
КонецФункции
|