Вариант для управляемых форм. На форме объекта есть табличное поле «Товары». Нам нужно подсветить в нем новинки — то есть номенклатуру, созданную в последнюю неделю. Дата создания в виде доп. реквизита хранится в карточке номенклатуры.
Для решения задачи будем использовать 2 вспомогательных таблицы:
- «УВ_Новинки» — сюда будем записывать подходящую номенклатуру.
- «УВ_СписокПодсвеченных» — товары, для которых условное оформление уже установлено.
&НаСервере Процедура УВ_ПодсветитьНовинки() // Обновим список новинок Если Объект.Товары.Количество() = УВ_Новинки.Количество() Тогда Возврат; КонецЕсли; Для Каждого ТекСтр Из Объект.Товары Цикл Если УВ_Новинки.НайтиПоЗначению(ТекСтр.Номенклатура) <> НеОпределено Тогда Продолжить; КонецЕсли; ДатаСоздания = ТекСтр.Номенклатура.УВ_ДатаСоздания; Если ЗначениеЗаполнено(ДатаСоздания) И ДатаСоздания > УВ_НеделяНазад Тогда УВ_Новинки.Добавить(ТекСтр.Номенклатура); КонецЕсли; КонецЦикла; // Обновим список подсвеченных Для Каждого Оформление Из УсловноеОформление.Элементы Цикл ЭлементОтбора = Оформление.Отбор.Элементы[0]; Если ТипЗнч(ЭлементОтбора) <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда Продолжить; КонецЕсли; Если ТипЗнч(ЭлементОтбора.ПравоеЗначение) <> Тип("СправочникСсылка.Номенклатура") Тогда Продолжить; КонецЕсли; Если УВ_СписокПодсвеченных.НайтиПоЗначению(ЭлементОтбора.ПравоеЗначение) <> НеОпределено Тогда Продолжить; КонецЕсли; Если Оформление.Представление = "УВ_Новинки" Тогда УВ_СписокПодсвеченных.Добавить(ЭлементОтбора.ПравоеЗначение); КонецЕсли; КонецЦикла; // Обновим условное оформление Для Каждого Новинка Из УВ_Новинки Цикл Если УВ_СписокПодсвеченных.НайтиПоЗначению(Новинка.Значение) <> НеОпределено Тогда Продолжить; КонецЕсли; ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары"); ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Новинка.Значение; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый); ЭлементУсловногоОформления.Представление = "УВ_Новинки"; УВ_СписокПодсвеченных.Добавить(Новинка.Значение); КонецЦикла; КонецПроцедуры