Цвет фона строки в ТаблицеЗначений

1. Tym1980 06.05.19 11:23 Сейчас в теме
Есть обработка, которая использует сложный запрос, и прямо #НаСервере заполняется таблица значений.

Как сделать изменение фона строки таблицы значений в зависимости от значения одного из реквизитов таблицы значения.

P.S. вариант заполнить таблицу значений на сервере, а потом пройтись по каждой строке на клиенте не подходит, хотелось упростить вывод
Найденные решения
9. meriferi 07.05.19 07:44 Сейчас в теме
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sergitax 06.05.19 12:26 Сейчас в теме
Если у Вас таблица значений отображается на форме, то можете сделать программное заполнение условного оформления формы.
3. Tym1980 06.05.19 13:18 Сейчас в теме
(2)
Условное оформление можно делуть только на динамические списки и на табличные части. На таблицы значений увы
4. Sergitax 06.05.19 13:21 Сейчас в теме
(3)
Уже года 3 как работаем: программно создаются реквизиты, в том числе типа "ТаблицаЗначений" и так же программно красятся. ЧЯДНТ??? Управляемые формы?

Вот пример из общего модуля:
Процедура ДобавитьУсловноеОформление(Форма, ИмяТаблицы)
	ЭлементУсловноеОформление = Форма.УсловноеОформление.Элементы.Добавить();
	
	//делаем условие
	ЭлементОтбора = ЭлементУсловноеОформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ХарактеристикиЗначения.Изменена");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.ПравоеЗначение = Истина;
	ЭлементОтбора.Использование = Истина;
	
	//делаем поля
	Элемент = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
	Элемент.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицы + "Характеристика");
	Элемент.Использование = Истина;
	
	Элемент = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
	Элемент.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицы + "Значение");
	Элемент.Использование = Истина;
	
	Элемент = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
	Элемент.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицы + "Дата");
	Элемент.Использование = Истина;
	
	//делаем оформление
	ЭлементОформления = ЭлементУсловноеОформление.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветТекста"));
	Если ЭлементОформления <> Неопределено Тогда
		ЭлементОформления.Значение = Новый Цвет(255, 0, 0);
		ЭлементОформления.Использование = Истина;
	КонецЕсли;
КонецПроцедуры
Показать
5. Tym1980 06.05.19 13:37 Сейчас в теме
6. Sergitax 06.05.19 13:45 Сейчас в теме
(5)
В данном примере идет программное заполнение условного оформления как если бы у вас эта таблица (реквизит и элемент) были созданы интерактивно, В примере текст строки делается красным если реквизит "Изменена" стал равен Истина. Первый блок - условие, второй блок - на какие колонки таблицы распространяется действие условного оформления, третий - само оформление. Контекст серверный. Вынесено в общий модуль, т.к. вызов идет с разных форм.
7. Tym1980 06.05.19 14:11 Сейчас в теме
(6) а можно как нибудь посмотреть это в коде?
8. Sergitax 06.05.19 14:28 Сейчас в теме
(7)
Само добавление условного оформления в (4), а вызов ниже:

Процедура ХарактеристикиДобавитьЭлементы(Форма, ЭлементРодитель, ИмяТаблицы, ИмяТаблицыПодчиненные, НомерРеквизита, ИмяКоманды, Отбор = Неопределено)
	// добавляем таблицу
	ЭлементТаблица = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные, Тип("ТаблицаФормы"), ЭлементРодитель);
	ЭлементТаблица.ПутьКДанным = ИмяТаблицы;
	ЭлементТаблица.ИзменятьПорядокСтрок = Ложь;
	ЭлементТаблица.ИзменятьСоставСтрок = Ложь;
	ЭлементТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
	ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;
	ЭлементТаблица.РежимВыделения = РежимВыделенияТаблицы.Одиночный;
	ЭлементТаблица.ВысотаВСтрокахТаблицы = 1;
	ЭлементТаблица.УстановитьДействие("Выбор", "ХарактеристикиВыбор");
	ЭлементТаблица.УстановитьДействие("ПриАктивизацииСтроки", "ХарактеристикиПриАктивизацииСтроки");
	ЭлементТаблица.УстановитьДействие("ПередНачаломИзменения", "ХарактеристикиПередНачаломИзменения");
	ЭлементТаблица.КонтекстноеМеню.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
	
	// добавляем колонки
	Элемент = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные + "Характеристика", Тип("ПолеФормы"), ЭлементТаблица);
	Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Элемент.ПутьКДанным = ИмяТаблицы + "." + "Характеристика";
	Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр;
	Элемент.ТолькоПросмотр = Истина;
	Элемент.Ширина = 10;
	
	Элемент = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные + "Значение", Тип("ПолеФормы"), ЭлементТаблица);
	Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Элемент.ПутьКДанным = ИмяТаблицы + "." + "Значение";
	Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр;
	Элемент.ВыбиратьТип = Ложь;
	Элемент.ТолькоПросмотр = Ложь;
	Элемент.МногострочныйРежим = Истина;
	Элемент.Высота = 1;
	Элемент.УстановитьДействие("ПриИзменении", "ХарактеристикиЗначениеПриИзменении");
	Элемент.УстановитьДействие("НачалоВыбора", "ХарактеристикиЗначениеНачалоВыбора");
	Элемент.УстановитьДействие("Открытие", "ХарактеристикиЗначениеОткрытие");
	Элемент.Ширина = 5;
	Элемент.КнопкаОткрытия = Истина;
	Элемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
	
	Элемент = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные + "Дата", Тип("ПолеФормы"), ЭлементТаблица);
	Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Элемент.ПутьКДанным = ИмяТаблицы + "." + "Дата";
	Элемент.УстановитьДействие("ПриИзменении", "ХарактеристикиДатаПриИзменении");
	
	// установим отбор
	ЭлементТаблица.ОтборСтрок = Отбор;
	
	...; // остальное
	
	// добавим условное оформление
	ДобавитьУсловноеОформление(Форма, ЭлементТаблица.Имя);
КонецПроцедуры
Показать


Ну и программное создание таблицы значений:

Процедура ХарактеристикиДобавитьРеквизиты(Форма, ИмяТаблицы)
	МассивРеквизитов = Новый Массив;
	
	Реквизит = Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений"), , , Истина);
	МассивРеквизитов.Добавить(Реквизит);
	Форма.ИзменитьРеквизиты(МассивРеквизитов);
	
	// колонки таблицы характеристик
	МассивРеквизитов.Очистить();
	
	Реквизит = Новый РеквизитФормы("Характеристика", Новый ОписаниеТипов("СправочникСсылка.Характеристики"), ИмяТаблицы, НСтр("ru = 'Характеристика'; en = 'Characteristic'"));
	МассивРеквизитов.Добавить(Реквизит);
	
	Реквизит = Новый РеквизитФормы("Значение", Справочники.Характеристики.ПолучитьСуммарныйТип(), ИмяТаблицы, НСтр("ru = 'Значение'; en = 'Value'"));
	МассивРеквизитов.Добавить(Реквизит);

	Реквизит = Новый РеквизитФормы("Дата", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата), ИмяТаблицы, НСтр("ru = 'Дата'; en = 'Date'"));
	МассивРеквизитов.Добавить(Реквизит);

	Реквизит = Новый РеквизитФормы("Изменена", Новый ОписаниеТипов("Булево"), ИмяТаблицы, НСтр("ru = 'Изменена'; en = 'Changed'"));
	МассивРеквизитов.Добавить(Реквизит);
	
	Форма.ИзменитьРеквизиты(МассивРеквизитов);
КонецПроцедуры
Показать
9. meriferi 07.05.19 07:44 Сейчас в теме
12. пользователь 07.12.21 22:33
Сообщение было скрыто модератором.
...
10. Stih 17.03.21 17:39 Сейчас в теме
Как же задолбали с сайтами в разработке
mrChOP93; +1 Ответить
11. Stih 17.03.21 17:44 Сейчас в теме
Так вроде понятно
Прикрепленные файлы:
Evilleo; user1559729; Varozh; Amivita; Nikitos_NSK; marku; user937209; 6385232; +8 Ответить
14. Varozh 04.10.22 16:40 Сейчас в теме
(11) Спасибо огромное за скрин!
13. v3rter 13.12.21 02:00 Сейчас в теме
Для тех, кто ищет, как изменить цвет ячейки в макете печатной формы, но спрашивает у гугля про Таблицу значений вместо макета, оставлю это здесь:
Результат.Область(1,1,1,1).ЦветФона=Новый цвет(255,0,0); 
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот