Программное окрашивание строки по условию в таблице значений
При вызове данной процедуры ругается, что Поле объекта не обнаружено (ЦветФона). Подскажите, что тут не так и как это можно исправить. Вызывается из другой процедуры на клиенте.
&НаКлиенте
Процедура ВыделитьСтроки()
МинКод = Неопределено;
МаксКод = Неопределено;
Для Каждого Строка Из ТаблицаРезультатов Цикл
Если МинКод = Неопределено Или Строка.ЧисловойКод < МинКод Тогда
МинКод = Строка.ЧисловойКод;
КонецЕсли;
Если МаксКод = Неопределено Или Строка.ЧисловойКод > МаксКод Тогда
МаксКод = Строка.ЧисловойКод;
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из ТаблицаРезультатов Цикл
Если Строка.ЧисловойКод = МинКод Тогда
Строка.ЦветФона = Новый Цвет(255, 100, 100); // Красный оттенок
ИначеЕсли Строка.ЧисловойКод = МаксКод Тогда
Строка.ЦветФона = Новый Цвет(100, 255, 100); // Зеленый оттенок
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Смотрите "Условное оформление управляемые формы". Можно отсюда начать - Ссылка для тех, которым по этой теме инфы не особо много:)
(4) Исходя из материалов по вашей ссылке получилось вот что. Но теперь выдаёт ошибку Поле объекта не обнаружено (УсловноеОформление)
&НаСервере
Процедура ВыделитьСтрокиНаСервере()
МинКод = Неопределено;
МаксКод = Неопределено;
Для Каждого Строка Из ТаблицаРезультатов Цикл
Если МинКод = Неопределено Или Строка.ЧисловойКод < МинКод Тогда
МинКод = Строка.ЧисловойКод;
КонецЕсли;
Если МаксКод = Неопределено Или Строка.ЧисловойКод > МаксКод Тогда
МаксКод = Строка.ЧисловойКод;
КонецЕсли;
КонецЦикла;
// Условное оформление для минимального кода
ЭлементОформленияМинКод = ТаблицаРезультатов.УсловноеОформление.Элементы.Добавить();
ЭлементОтбораМинКод = ЭлементОформленияМинКод.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораМинКод.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЧисловойКод");
ЭлементОтбораМинКод.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораМинКод.ПравоеЗначение = МинКод;
ЭлементОтбораМинКод.Использование = Истина;
ЭлементОформленияМинКод.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный); // Красный оттенок
ЭлементОформленияМинКод.Использование = Истина;
// Условное оформление для максимального кода
ЭлементОформленияМаксКод = ТаблицаРезультатов.УсловноеОформление.Элементы.Добавить();
ЭлементОтбораМаксКод = ЭлементОформленияМаксКод.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораМаксКод.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЧисловойКод");
ЭлементОтбораМаксКод.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораМаксКод.ПравоеЗначение = МаксКод;
ЭлементОтбораМаксКод.Использование = Истина;
ЭлементОформленияМаксКод.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(100, 255, 100)); // Зеленый оттенок
ЭлементОформленияМаксКод.Использование = Истина;
КонецПроцедуры
Показать
(5) ЭлементОформленияМинКод = ТаблицаРезультатов.УсловноеОформление.Элементы.Добавить();
ТаблицаРезультатов тут лишнее
Ну и стоит понимать, что при каждом нажатии кнопки будет создаваться новое условное оформление в дополнение к существующим.
Поэтому стоит добавлять какой-нибудь комментарий, и перед добавлением УО по этому комментарию находить те, что уже есть и удалять.
ТаблицаРезультатов тут лишнее
Ну и стоит понимать, что при каждом нажатии кнопки будет создаваться новое условное оформление в дополнение к существующим.
Поэтому стоит добавлять какой-нибудь комментарий, и перед добавлением УО по этому комментарию находить те, что уже есть и удалять.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот