Как в правую часть добавить условие? Требуется чтобы ВремяСдачи было в промежутке между текущая дата и текущая дата - 10 минут....
//Красим В ЗЕЛЕНЫЙ если просрочен срок
УОЗ = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы;
//если условное оформление уже задано, то удалим его и создадим заново
Для каждого Стр Из УОЗ Цикл
Если Стр.Представление="Отбор_просрочки" Тогда
УОЗ.Удалить(Стр);
Прервать;
КонецЕсли;
КонецЦикла;
//создание условного оформления
ЭлементУОЗ = УОЗ.Добавить();
ЭлементУОЗ.Представление="Отбор_просрочки";
ЭлементУОЗ.Использование = Истина;
ЭлементУОЗ.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Бирюзовый);
ЭлементУсловияЗел = ЭлементУОЗ.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловияЗел.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВремяСдачи");
ЭлементУсловияЗел.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементУсловияЗел.ПравоеЗначение = ТекущаяДата()-10*60;
(13) Первый раз вижу такой подход к программированию к УО. Хотя для новичка это нормально. Обычно УО устанавливается при открытии формы и в процессе не изменяется.
Разбираться в таком подходе ТС нет желания. Сори.
Я бы пошел по-другому: В текст запроса дин. списка ввел бы доп.колонку, которые не обязательно выводить на форму, например,
ВЫБРАТЬ
...
ВремяСдачи - &ТекущаяДата КАК РазницаВремени,
...
И использовал "РазницаВремени" в УО. И установку параметра дин. списка "ТекущаяДата" проводил в обработчике ожидания.
у меня всё даты, что больше текущего времени закрашиваются в зеленый. А мне надо добавить условие, чтобы за 10 минут до окончания закрашивалось желтым
(2)
(4) Если нужно, чтобы постоянно было в диапазоне от текущего времени и до текущее время минус 10 минут, то в правой части надо заменить "ТекущаяДата()" на параметр Дин.списка. А сам этот параметр обновлять в обработчике ожидания, который вызывается, например, через полсекунды. Выражение "ТекущаяДата()-10*60" - просто фиксирует момент, но не делает его динамическим.
12.
Yulka_Pentagramma
06.11.19 23:19 Сейчас в теме
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбновленияОтображенияПросрочкиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПериодАвтообновления = 30;//Здесь указываем период автообновления динамического списка
ЭтотОбъект.Элементы.Список.ПериодАвтоОбновления = ПериодАвтообновления;
ПодключитьОбработчикОжидания("ОбновленияОтображенияПросрочки", ПериодАвтообновления, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОбновленияОтображенияПросрочки() Экспорт
ОбновленияОтображенияПросрочкиНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОбновленияОтображенияПросрочкиНаСервере()
//Красим в КОРАЛЛОВЫЙ если просрочен срок
УО = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы;
//если условное оформление уже задано, то удалим его и создадим заново
Для каждого Стр Из УО Цикл
Если Стр.Представление="Отбор_просрочкиКор" Тогда
УО.Удалить(Стр);
Прервать;
КонецЕсли;
КонецЦикла;
//создание условного оформления
ЭлементУО = УО.Добавить();
ЭлементУО.Представление="Отбор_просрочкиКор";
ЭлементУО.Использование = Истина;
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Коралловый);
ЭлементУсловияЗел = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловияЗел.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВремяСдачи");
ЭлементУсловияЗел.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементУсловияЗел.ПравоеЗначение = ТекущаяДата();
//Красим В ЗЕЛЕНЫЙ если срок не вышел
УОЗ = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы;
//если условное оформление уже задано, то удалим его и создадим заново
Для каждого Стр Из УОЗ Цикл
Если Стр.Представление="Отбор_просрочки" Тогда
УОЗ.Удалить(Стр);
Прервать;
КонецЕсли;
КонецЦикла;
//создание условного оформления
ЭлементУОЗ = УОЗ.Добавить();
ЭлементУОЗ.Представление="Отбор_просрочки";
ЭлементУОЗ.Использование = Истина;
ЭлементУОЗ.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Бирюзовый);
ЭлементУсловияЗел = ЭлементУОЗ.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловияЗел.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВремяСдачи");
ЭлементУсловияЗел.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементУсловияЗел.ПравоеЗначение = ТекущаяДата()-10*60;
//Красим в Желтый если осталось 10 минут
УО10 = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы;
//если условное оформление уже задано, то удалим его и создадим заново
Для каждого Стр Из УО10 Цикл
Если Стр.Представление="Отбор_просрочки10" Тогда
УО10.Удалить(Стр);
Прервать;
КонецЕсли;
КонецЦикла;
//создание условного оформления
ЭлементУО10 = УО10.Добавить();
ЭлементУО10.Представление="Отбор_просрочки10";
ЭлементУО10.Использование = Истина;
ЭлементУО10.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Желтый);
ЭлементУсловия10 = ЭлементУО10.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия10.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВремяСдачи");
ЭлементУсловия10.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
ЭлементУсловия10.ЗначениеС = ТекущаяДата()-10*60;
ЭлементУсловия10.ЗначениеПо = ТекущаяДата();
КонецПроцедуры
(13) Первый раз вижу такой подход к программированию к УО. Хотя для новичка это нормально. Обычно УО устанавливается при открытии формы и в процессе не изменяется.
Разбираться в таком подходе ТС нет желания. Сори.
Я бы пошел по-другому: В текст запроса дин. списка ввел бы доп.колонку, которые не обязательно выводить на форму, например,
ВЫБРАТЬ
...
ВремяСдачи - &ТекущаяДата КАК РазницаВремени,
...
И использовал "РазницаВремени" в УО. И установку параметра дин. списка "ТекущаяДата" проводил в обработчике ожидания.
Мда.. не понимаю, как должна работать система вознаграждений. По факту зачастую как бы ни помогали форумчане, вознаграждение не находит получателя из-за некомпетентности ТС.
Никого не хочу обидеть. Просто я за справедливость.