В данной публикации рассмотрим пример раскрашивания строк просроченных документов в журнале документов (динамическом списке) от текущей даты и текущего времени.
Наша задача – раскрасить розовым цветом строку, если Контрольный срок меньше Текущей даты с учетом того, что текущая дата постоянно меняется. То есть текущую дату надо считывать динамически, а не определять при первом открытии.
Мы узнаем, как в управляемой форме:
- использовать обработчик ожидания;
- программно настроить условное оформление динамического списка
Допустим, у нас есть документ «Умный заказ» с реквизитом «КонтрольныйСрок» и типом «Дата» (состав даты «Дата и время»):
И журнал документов «УмныйЗаказ» с графой «КонтрольныйСрок», соответствующей этому реквизиту:
Наша задача – раскрасить розовым цветом строку, если Контрольный срок меньше Текущей даты с учетом того, что текущая дата постоянно изменяется.
Создадим управляемую форму:
Теперь при создании на сервере мы вызовем процедуру раскрашивания строк «ОбновленияОтображенияПросрочкиНаСервере». И будем вызывать эту процедуру с заданной периодичностью.
То есть, при создании на сервере:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка [1]) ОбновленияОтображенияПросрочкиНаСервере(); КонецПроцедуры
При открытии подключим обработчик ожидания:
&НаКлиенте Процедура ПриОткрытии(Отказ) ПериодАвтообновления = 30;//Здесь указываем период автообновления динамического списка ЭтотОбъект.Элементы.Список.ПериодАвтоОбновления = ПериодАвтообновления; ПодключитьОбработчикОжидания("ОбновленияОтображенияПросрочки", ПериодАвтообновления,Ложь); КонецПроцедуры &НаКлиенте Процедура ОбновленияОтображенияПросрочки() Экспорт ОбновленияОтображенияПросрочкиНаСервере(); КонецПроцедуры
Таким образом, с периодичностью, указанной в переменной ПериодАвтообновления мы будем вызывать процедуру раскрашивания строк:
&НаСервере Процедура ОбновленияОтображенияПросрочкиНаСервере() //Красим если просрочен срок УО = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы; //если условное оформление уже задано, то удалим его и создадим заново Для каждого Стр Из УО Цикл Если Стр.Представление="Отбор_просрочки" Тогда УО.Удалить(Стр); Прервать; КонецЕсли; КонецЦикла; //создание условного оформления ЭлементУО = УО.Добавить(); ЭлементУО.Представление="Отбор_просрочки"; ЭлементУО.Использование = Истина; ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый); ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КонтрольныйСрок"); ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; ЭлементУсловия.ПравоеЗначение = ТекущаяДата(); КонецПроцедуры
В этой процедуре мы программно создали условное оформление нашего динамического списка.
Результат:
Ссылки
[1] https://www.mykib.org/article/den-devyatyy-integriroval-samyy-bolshoy-katalog-razrabotok-dlya-platformy-1s
[2] https://www.mykib.org/tags/1s-8
[3] https://www.mykib.org/comment/4828#comment-4828
Комментарии
Как хорошо, что наткнулся на ваш сайт, очень много узнал [3]