Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Группировка
Дальше: Табличная часть

Условное оформление

Примечание

Пример можно посмотреть в демонстрационной базе «Оформление списков», форма списка документа Накладная, команда Условное оформление. Это локальная команда этой формы.

Для условного оформления динамического списка будем использовать локальную команду формы со следующим текстом (листинг 3.95).

Листинг 3.95. Установка условного оформления

&НаКлиенте

Процедура УсловноеОформление(Команда)

 

УО = Список.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы;

 

Если УО.Количество() > 0 Тогда

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Условное оформление уже задано. Команда не выполнена.";

Сообщение.Сообщить();

 

Возврат;

 

КонецЕсли;

 

ЭлементУО = УО.Добавить();

 

// Оформление: цвет фона – светлый лосось

ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.ЛососьСветлый);

 

// Условие: поле НаКонтроле равно Истина

ЭлементУсловия = ЭлементУО.Отбор.Элементы. Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаКонтроле");

ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

ЭлементУсловия.ПравоеЗначение = Истина;

 

// Оформляемое поле: Номер

ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();

ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Номер");

 

Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки);

 

КонецПроцедуры

Здесь также для простоты примера не будем выполнять никаких действий, если условное оформление уже задано (листинг 3.96).

Листинг 3.96. Анализ имеющихся элементов условного оформления

УО = Список.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы;

 

Если УО.Количество() > 0 Тогда

 

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Условное оформление уже задано. Команда не выполнена.";

Сообщение.Сообщить();

 

Возврат;

 

КонецЕсли;

Если же условное оформление не задано, добавим новый элемент, описывающий условное оформление (листинг 3.97).

Листинг 3.97. Добавление нового элемента условного оформления

ЭлементУО = УО.Добавить();

Теперь для этого элемента нужно задать:

Оформление задается путем установки значений имеющихся предопределенных параметров оформления. В нашем примере мы указываем, что поля будут выделяться другим цветом фона – «светлый лосось» (листинг 3.98).

Листинг 3.98. Установка оформления, которое будет применяться

// Оформление: цвет фона светлый лосось

ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.ЛососьСветлый);

Для задания условия, при котором будет применяться оформление, мы используем уже знакомый нам по первому примеру отбор компоновки данных. В коллекцию условий отбора добавим новый элемент и зададим для него левое значение, вид сравнения и правое значение (листинг 3.99).

Листинг 3.99. Добавление условий, при которых будет применяться оформление

// Условие: поле НаКонтроле равно Истина.

ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаКонтроле");

ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

ЭлементУсловия.ПравоеЗначение = Истина;

В результате оформление будет применяться в тех строках, где поле НаКонтроле имеет значение Истина. То есть мы «подсветим» документы, требующие «особого внимания».

В заключение укажем, какие поля будут «подсвечиваться». Если не указывать ничего, то будет «подсвечена» вся строка. Но мы добавим новое поле в коллекцию оформляемых полей и укажем, что оформляться будет только одно поле – Номер (листинг 3.100).

Листинг 3.100. Установка оформляемого поля

// Оформляемое поле: Номер.

ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();

ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Номер");

Загружаем измененные настройки обратно в компоновщик настроек динамического списка (листинг 3.101).

Листинг 3.101. Загрузка настроек в компоновщик настроек

Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки);

Запустим конфигурацию в режиме 1С:Предприятие. Откроется список накладных, который стандартно не содержит никакого условного оформления (рис. 3.111).

Рис. 3.111. Список без условного оформления

ПРИМЕЧАНИЕ

На рис. 3.111 показан список накладных без группировки, которую мы программно установили в предыдущем примере. Для чистоты эксперимента мы удалили эту группировку из настроек списка в режиме 1С:Предприятие.

После того как мы выполним команду Условное оформление, номера документов 000000002 и 000000005 будут выделены цветом фона. Именно эти документы находятся на контроле (рис. 3.112).

Рис. 3.112. Условное оформление списка

Если мы откроем настройку списка, то увидим, что появилось условное оформление (рис. 3.113).

Рис. 3.113. Условное оформление в настройках динамического списка

Это то самое условие, которое мы добавили из встроенного языка. Пользователь может его изменить, отключить, удалить.

Назад: Группировка
Дальше: Табличная часть