Помогите новичку разобраться с запросом, пожалуйста...

1. Yulka_Pentagramma 06.11.19 22:44 Сейчас в теме
Как в правую часть добавить условие? Требуется чтобы ВремяСдачи было в промежутке между текущая дата и текущая дата - 10 минут....


	//Красим В ЗЕЛЕНЫЙ если просрочен срок
	УОЗ = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы;
	
	//если условное оформление уже задано, то удалим его и создадим заново
	Для каждого Стр Из УОЗ Цикл
		Если Стр.Представление="Отбор_просрочки" Тогда
			УОЗ.Удалить(Стр);
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	//создание условного оформления
	ЭлементУОЗ = УОЗ.Добавить();
	ЭлементУОЗ.Представление="Отбор_просрочки";
	ЭлементУОЗ.Использование = Истина;
	ЭлементУОЗ.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Бирюзовый);
	ЭлементУсловияЗел = ЭлементУОЗ.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементУсловияЗел.ЛевоеЗначение =  Новый ПолеКомпоновкиДанных("ВремяСдачи");
	ЭлементУсловияЗел.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
	ЭлементУсловияЗел.ПравоеЗначение =  ТекущаяДата()-10*60;
Показать
Найденные решения
15. erazh 06.11.19 23:46 Сейчас в теме
(13) Первый раз вижу такой подход к программированию к УО. Хотя для новичка это нормально. Обычно УО устанавливается при открытии формы и в процессе не изменяется.

Разбираться в таком подходе ТС нет желания. Сори.

Я бы пошел по-другому: В текст запроса дин. списка ввел бы доп.колонку, которые не обязательно выводить на форму, например,
ВЫБРАТЬ
  ...
  ВремяСдачи - &ТекущаяДата КАК РазницаВремени,
  ...


И использовал "РазницаВремени" в УО. И установку параметра дин. списка "ТекущаяДата" проводил в обработчике ожидания.
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. AlexandrSmith 69 06.11.19 22:48 Сейчас в теме
(1)
    ЭлементУсловияЗел.ЛевоеЗначение =  Новый ПолеКомпоновкиДанных("ВремяСдачи");
    ЭлементУсловияЗел.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    ЭлементУсловияЗел.ПравоеЗначение =  ТекущаяДата()-10*60;


Что не получается, на что ругается? Объясните немного подробнее. Тут важный момент, хотелось бы конкретную ошибку.
3. Yulka_Pentagramma 06.11.19 22:52 Сейчас в теме
у меня всё даты, что больше текущего времени закрашиваются в зеленый. А мне надо добавить условие, чтобы за 10 минут до окончания закрашивалось желтым
(2)
4. Yulka_Pentagramma 06.11.19 22:57 Сейчас в теме
в общем и целом, хотелось бы в Правое значение записать условие: Больше ТекущаяДата()-10*60 И Меньше ТекущаяДата(). Как это сделать не знаю...
(2)
5. AlexandrSmith 69 06.11.19 23:01 Сейчас в теме
(4) Попробуйте

https://forum.mista.ru/topic.php?id=559018
УстановленныйОтбор = ЭлементОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УстановленныйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
УстановленныйОтбор.ЛевоеЗначение = ПолеОтбораКомпоновки;
УстановленныйОтбор.ПравоеЗначение = ЕдиничныйОтбор.ЗначениеС;
УстановленныйОтбор = ЭлементОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УстановленныйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
УстановленныйОтбор.ЛевоеЗначение = ПолеОтбораКомпоновки;
УстановленныйОтбор.ПравоеЗначение = ЕдиничныйОтбор.ЗначениеПо;
6. Yulka_Pentagramma 06.11.19 23:05 Сейчас в теме
(5)
КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление



СПАСИБО большое!!!!

Сейчас буду пробовать
7. AlexandrSmith 69 06.11.19 23:06 Сейчас в теме
(6) Буду рад, если мой ответ будет лучшим.
11. Yulka_Pentagramma 06.11.19 23:17 Сейчас в теме
(5)
Выругалась на несоответствие типов :(
на вот эту строку
ЭлементУсловия10.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
14. Yulka_Pentagramma 06.11.19 23:37 Сейчас в теме
(5)
УстановленныйОтбор = ЭлементОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УстановленныйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
УстановленныйОтбор.ЛевоеЗначение = ПолеОтбораКомпоновки;
УстановленныйОтбор.ПравоеЗначение = ЕдиничныйОтбор.ЗначениеС;
УстановленныйОтбор = ЭлементОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УстановленныйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
УстановленныйОтбор.ЛевоеЗначение = ПолеОтбораКомпоновки;
УстановленныйОтбор.ПравоеЗначение = ЕдиничныйОтбор.ЗначениеПо;


Так тоже не вышло... :( совсем не раскрашивает список...
8. erazh 06.11.19 23:06 Сейчас в теме
(4) Если нужно, чтобы постоянно было в диапазоне от текущего времени и до текущее время минус 10 минут, то в правой части надо заменить "ТекущаяДата()" на параметр Дин.списка. А сам этот параметр обновлять в обработчике ожидания, который вызывается, например, через полсекунды. Выражение "ТекущаяДата()-10*60" - просто фиксирует момент, но не делает его динамическим.

П.С. "10*60" - не есть 10 мин.
9. Yulka_Pentagramma 06.11.19 23:10 Сейчас в теме
(8)

не понятно... я на динамическом списке подключила обработчик ожидания, каждые 30 секунд он проверяет условия...

НО. Всё что дальше чем текущее время или текущее время -10 минут закрашивается в один цвет. а мне надо в разные...
10. erazh 06.11.19 23:17 Сейчас в теме
(9)Без кода - плохо соображается.
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.ЗначениеПо = ТекущаяДата();
	
	

КонецПроцедуры
Показать


(10)
13. Yulka_Pentagramma 06.11.19 23:22 Сейчас в теме
(12)

скопипастила, конечно...
15. erazh 06.11.19 23:46 Сейчас в теме
(13) Первый раз вижу такой подход к программированию к УО. Хотя для новичка это нормально. Обычно УО устанавливается при открытии формы и в процессе не изменяется.

Разбираться в таком подходе ТС нет желания. Сори.

Я бы пошел по-другому: В текст запроса дин. списка ввел бы доп.колонку, которые не обязательно выводить на форму, например,
ВЫБРАТЬ
  ...
  ВремяСдачи - &ТекущаяДата КАК РазницаВремени,
  ...


И использовал "РазницаВремени" в УО. И установку параметра дин. списка "ТекущаяДата" проводил в обработчике ожидания.
16. Yulka_Pentagramma 06.11.19 23:49 Сейчас в теме
И на том спасибо. Попробую...

(15)
апроса дин. списка ввел бы доп.колонку, которые не обязательно выводить на форму, например,
18. Yulka_Pentagramma 07.11.19 12:03 Сейчас в теме
(15)

СПАСИБО, добрый человек!!!!

Сделала)

З.Ы.: Не знала что так можно было))))
17. PiotrLoginov 07.11.19 02:01 Сейчас в теме
ТС, так что, ответ AlexandrSmith не показался Вам лучшим?
19. Yulka_Pentagramma 07.11.19 12:37 Сейчас в теме
(17)
может у меня руки не оттуда... не получилось...
20. PiotrLoginov 08.11.19 07:43 Сейчас в теме
Мда.. не понимаю, как должна работать система вознаграждений. По факту зачастую как бы ни помогали форумчане, вознаграждение не находит получателя из-за некомпетентности ТС.

Никого не хочу обидеть. Просто я за справедливость.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот