В данной публикации рассмотрим пример раскрашивания строк просроченных документов в журнале документов (динамическом списке) от текущей даты и текущего времени.
Наша задача – раскрасить розовым цветом строку, если Контрольный срок меньше Текущей даты с учетом того, что текущая дата постоянно меняется. То есть текущую дату надо считывать динамически, а не определять при первом открытии.
Мы узнаем, как в управляемой форме:
- использовать обработчик ожидания;
- программно настроить условное оформление динамического списка
Допустим, у нас есть документ «Умный заказ» с реквизитом «КонтрольныйСрок» и типом «Дата» (состав даты «Дата и время»):

И журнал документов «УмныйЗаказ» с графой «КонтрольныйСрок», соответствующей этому реквизиту:

Наша задача – раскрасить розовым цветом строку, если Контрольный срок меньше Текущей даты с учетом того, что текущая дата постоянно изменяется.
Создадим управляемую форму:

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

Комментарии
Как хорошо, что наткнулся на ваш сайт, очень много узнал