Имя: Пароль:
1C
1С v8
ОтборСтрок на УФ если условие больше или меньше
,
0 Dmitry_333
 
27.08.20
11:12
Всем доброго дня.
Подскажите, пожалуйста, как быть если нужно прописать вид сравнения больше или меньше? Когда отбор по совпадению, все понятно, например    
Отбор = Новый Структура("Заказ", 30);
Элементы.ТабИтоговая.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
Но как сделать отбор строк по больше или меньше?
1 Ёпрст
 
27.08.20
11:15
(0) через компоновщик жешь.. и там условие сравнения какое нажо жешь
2 FIXXXL
 
27.08.20
11:17
(0)
ТабИтоговая - это ТЗ?
если есть однозначный "ключ" строки, можно в цикле или запросом перебрать ТабИтоговая, подходящие "ключи" сложить в массив и его уже использовать как Отбор
3 Dmitry_333
 
27.08.20
11:29
(1) Пробовал. Почему-то очищает всю таб часть.

    МассивИменКолонокДляПодсветки = Новый Массив;
    Для каждого Стр из Элементы.ТабИтоговая.ПодчиненныеЭлементы Цикл
        МассивИменКолонокДляПодсветки.Добавить(Стр.Имя);
    КонецЦикла;
    
    ЭлементОформления = УсловноеОформление.Элементы.Добавить();
    ЭлементОформления.Использование = Истина;
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", ЛОЖЬ);
    
    ЭлементУсловия                = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементУсловия.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ТабИтоговая.Заказ");
    ЭлементУсловия.ПравоеЗначение = 30;
    ЭлементУсловия.ВидСравнения   = ВидСравненияКомпоновкиДанных.Меньше;  
    ЭлементУсловия.Использование  = Истина;
    
    Для каждого ТекЭлемент из МассивИменКолонокДляПодсветки Цикл
        ОформляемоеПоле      = ЭлементОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ТекЭлемент);
    КонецЦикла;
4 acht
 
27.08.20
11:41
(0) Добавь булеву колонку типа "УдовлетворяетОтбору", настрой по ней свой отбор, значения пересчитывай по необходимости - циклом или при редактировании.
5 Ёпрст
 
27.08.20
11:46
(3) эээ.. а каким боком условное оформление к отбору строк ?
Тебе строки нужно отобрать (т.е отбор наложить) или всё же через условное форомление что-то покрасить/скрыть ?
6 Dmitry_333
 
27.08.20
11:47
(4) Спасибо. Это хороший вариант.
7 Dmitry_333
 
27.08.20
11:48
(5) Если идти через условное оформление, то соответственно скрыть строки не удовлетворяющие условию.
8 Dmitry_333
 
27.08.20
11:55
Должно же быть для УФ "типовое" решение с методом ОтборСтрок. Для ОФ же все оч. лаконично:

ЭлементыФормы.тпТовары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.БольшеИлиРавно;
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Значение = 30;
9 acht
 
27.08.20
11:57
(3) Попробуй, кстати, вместо "Видимость" поставить "Отображать"
10 Ёпрст
 
27.08.20
11:59
(7) у тебя таблица значений на форме или динамический список ?
11 Ёпрст
 
27.08.20
12:00
если тз, то через построитель можно слепить твой отбор
12 Dmitry_333
 
27.08.20
12:01
(10) Таб значений
13 Dmitry_333
 
27.08.20
12:02
(9) Пробовал, тоже самое.
14 youalex
 
27.08.20
13:17
(8) Для ОФ работало же вроде только для ТЧ?
по теме - как вариант, можно сделать колонку Булево (невидимую) , заполнять ее по логике условия, и делать отбор по ней
15 Dmitry_333
 
27.08.20
13:18
(14) Да, так и сделал в результате.
16 youalex
 
27.08.20
13:43
(15) Но вообще странно, у меня на простейшем примере твой код работает. может у тебя еще есть группы колонок? Ну то есть не все элементы/поля прямо подчинены таблице формы?
17 Dmitry_333
 
27.08.20
17:52
(16) Нет, групп нет.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.