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