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

Табличная часть

Возможность условного оформления нединамических списков мы рассмотрим на примере табличной части документа. Будем выделять те строки документа, в которых количество товара больше 10.

Примечание

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

При оформлении нединамических списков есть несколько особенностей.

Во-первых, для динамических списков условное оформление является свойством самого реквизита формы. Чтобы оформить нединамические списки, нужно использовать условное оформление самой формы.

Во-вторых, задать оформление динамического списка можно прямо на клиенте. Условное же оформление формы можно задать только на сервере.

В остальном программная работа с условным оформлением нединамических списков ничем не отличается от рассмотренного выше примера.

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

Листинг 3.102. Вызов серверной процедуры для оформления формы

&НаКлиенте

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

 

ОформитьНаСервере();

 

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

А в серверной процедуре выполним условное оформление (листинг 3.103).

Листинг 3.103. Условное оформление формы

&НаСервере

Процедура ОформитьНаСервере()

 

Если УсловноеОформление.Элементы.Количество() > 0 Тогда

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

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

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

 

Возврат;

 

КонецЕсли;

 

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

 

// Оформление: цвет фона – зеленая лужайка.

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

 

// Условие: количество в табличной части больше 10.

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

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

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

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

 

// Оформляемое поле: товар в табличной части.

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

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

 

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

Из особенностей здесь можно упомянуть об именах полей, которые используются в условии оформления и в коллекции оформляемых полей. В динамических списках не вызывает затруднений указать правильное имя поля. Как правило, имена полей в реквизите (динамическом списке) и в таблице совпадают. Так было в предыдущем примере (рис. 3.114).

Рис. 3.114. Имена реквизитов и элементов в динамическом списке

Мы накладывали условие на поле реквизита НаКонтроле, а оформляли поле таблицы Номер. При этом можно было не задумываться, в каком случае чье поле указывается.

В случае с табличной частью имена по большей части не совпадают. Поэтому, когда описывается условие оформления, нужно помнить, что указывается поле реквизита формы – Объект.Товары.Количество (листинг 3.104, рис. 3.115).

Листинг 3.104. В условии оформления указывается поле реквизита формы

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

Рис. 3.115. В условии оформления указывается поле реквизита формы

А в коллекции оформляемых полей нужно указывать имя поля таблицы – ТоварыТовар (листинг 3.105, рис. 3.116).

Листинг 3.105. В коллекции оформляемых полей указывается имя поля таблицы

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

Рис. 3.116. В коллекции оформляемых полей указывается имя поля таблицы

Теперь запустим конфигурацию в режиме 1С:Предприятие и откроем накладную № 6. Ее табличная часть не содержит никакого условного оформления (рис. 3.117).

Рис. 3.117. Табличная часть без условного оформления

После того как мы выполним команду Условное оформление, товар Товар 2 будет выделен цветом фона, потому что количество этого товара больше 10 (рис. 3.118).

Рис. 3.118. Оформленная табличная часть

Пользователь не имеет стандартной возможности изменять условное оформление формы, поэтому в данной ситуации он не сможет отключить или удалить условное оформление, добавленное нами.

Напоследок хочется сделать еще одно небольшое замечание. В отличие от динамических списков, в условном оформлении формы обязательно нужно указывать оформляемые поля. Если хочется выделить всю строку табличной части, нужно указать все поля, которые в ней содержатся.

Назад: Условное оформление
Дальше: Глава 3.16. Дополнительные колонки в списках