1С: Предприятие 8. Условное оформление – сравнение с текущей датой при каждом обновлении динамического списка

Аватар пользователя mykib.org

В данной публикации рассмотрим пример раскрашивания строк просроченных документов в журнале документов (динамическом списке) от текущей даты и текущего времени.

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

Мы узнаем, как в управляемой форме:

- использовать обработчик ожидания;

- программно настроить условное оформление динамического списка

Допустим, у нас есть документ «Умный заказ» с реквизитом «КонтрольныйСрок» и типом «Дата» (состав даты «Дата и время»):

 

Документ Умный заказ с реквизитом КонтрольныйСрок и типом Дата (состав даты Дата и время)

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

 

Журнал документов УмныйЗаказ с графой КонтрольныйСрок

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

Создадим управляемую форму:

 

Управляемая форма журнала документов УмныйЗаказ с графой КонтрольныйСрок

Теперь при создании на сервере мы вызовем процедуру раскрашивания строк «ОбновленияОтображенияПросрочкиНаСервере».  И будем вызывать эту процедуру с заданной периодичностью.

То есть, при создании на сервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ОбновленияОтображенияПросрочкиНаСервере();
КонецПроцедуры

При открытии подключим обработчик ожидания:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПериодАвтообновления = 30;//Здесь указываем период автообновления динамического списка
	ЭтотОбъект.Элементы.Список.ПериодАвтоОбновления = ПериодАвтообновления;
	
	ПодключитьОбработчикОжидания("ОбновленияОтображенияПросрочки", ПериодАвтообновления,Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновленияОтображенияПросрочки() Экспорт
	ОбновленияОтображенияПросрочкиНаСервере();
КонецПроцедуры

Таким образом, с периодичностью, указанной в переменной ПериодАвтообновления мы будем вызывать процедуру раскрашивания строк:


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

КонецПроцедуры

В этой процедуре мы программно создали условное оформление нашего динамического списка.

Результат:

 

 

Результат нашей работы

Ключевые фразы:

Комментарии

Аватар пользователя Romanven

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