|
Условное оформление таблицы на форме | ☑ | ||
---|---|---|---|---|
0
termos
30.09.15
✎
12:49
|
Здравствуйте!
Скажите, пожалуйста, почему следующий код неправильно отрабатывает, когда добавляешь сравнение с перечислением? (без него работает) Процедура УстановитьОформлениеТабличнойЧастиТовары(Форма) УсловноеОформление = Форма.УсловноеОформление; ЭлементыФормы = Форма.Элементы; ТаблицаФормы = ЭлементыФормы.ГруппаТовары.ПодчиненныеЭлементы["Товары"]; ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ПутьКТЧ = ТаблицаФормы.ПутьКДанным; ОбщегоНазначенияУТ.ЗаполнитьРекурсивноПоляУсловногоОформления(ЭлементУсловногоОформления.Поля, ТаблицаФормы.ПодчиненныеЭлементы); ГруппаОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура.ТипНоменклатуры"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный); КонецПроцедуры Без куска кода (элемента отбора) всё работает: ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура.ТипНоменклатуры"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар; А как только добавляешь - перестает. В типовых решениях в конфигурации посмотрел сравнения с перечислениями имеются и отрабатывают корректно, а в данном случае не отрабатывает. У кого какие мысли? Подскажите, куда смотреть, пожалуйста. |
|||
1
jurassic
30.09.15
✎
12:50
|
правое значение ни разу не список
|
|||
2
termos
30.09.15
✎
12:53
|
Да, извиняюсь! Я по разному пробовал. И в списке и просто.. Вот осталось ВСписке перед копированием сюда! Сорри.
Факт в том что не работает и не ругается даже если ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; |
|||
3
termos
30.09.15
✎
12:54
|
Если не добавлять сравнение с перечислением, то условное оформление работает и все отмененные строки отмечаются красным цветом, а если добавлять сравнение с перечислением для проверки, что это товар, то ничего не происходит и не отмечается.
|
|||
4
jurassic
30.09.15
✎
12:55
|
а код написал для "неотменённые товары красным"
|
|||
5
termos
30.09.15
✎
12:57
|
(4) Тороплюсь в ответах. Всё верно - задача отметить все неотмененные строки, которые имеют тип номенклатуры "товар".
Данный код не работает: Процедура УстановитьОформлениеТабличнойЧастиТовары(Форма) УсловноеОформление = Форма.УсловноеОформление; ЭлементыФормы = Форма.Элементы; ТаблицаФормы = ЭлементыФормы.ГруппаТовары.ПодчиненныеЭлементы["Товары"]; ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ПутьКТЧ = ТаблицаФормы.ПутьКДанным; ОбщегоНазначенияУТ.ЗаполнитьРекурсивноПоляУсловногоОформления(ЭлементУсловногоОформления.Поля, ТаблицаФормы.ПодчиненныеЭлементы); ГруппаОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура.ТипНоменклатуры"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный); КонецПроцедуры |
|||
6
jurassic
30.09.15
✎
13:00
|
(5) руками пробовал?
|
|||
7
Nuobu
30.09.15
✎
13:01
|
(5) ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
А ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НЕРавно; Работает? |
|||
8
termos
30.09.15
✎
13:10
|
(7) попробовал сейчас. Срабатывает первое условие, но не срабатывает второе, то есть окрашиваются все неотмененные строки и в том числе услуги.
|
|||
9
termos
30.09.15
✎
13:10
|
и товары.
|
|||
10
termos
30.09.15
✎
13:13
|
Вот коллекция элементов отбора - посмотрел при отладке.
https://gyazo.com/f66122f49cc39160f9bb6dabe522be98 Выглядит всё правильно. |
|||
11
termos
30.09.15
✎
13:14
|
(10) И в данном случае отрабатывает только первое условие
|
|||
12
jurassic
30.09.15
✎
13:17
|
отрабатывают оба, сравнение с типом у тебя истина
|
|||
13
Nuobu
30.09.15
✎
13:19
|
(8) Тебя это ни на что не наталкивает??))
|
|||
14
termos
30.09.15
✎
13:27
|
У меня в документе 2 строки.
В первой строке тип номенклатуры товар, а во второй тип номенклатуры услуга и обе строки не отменены. При отборе, допустим, "Отменено = Ложь" и "ТипНоменклатуры Не Равно Товар" должна окраситься только одна строчка - вторая. Или я не прав? |
|||
15
termos
30.09.15
✎
13:29
|
(12) как же истина, если в документе разные типы номенклатуры имеются? почему окрашиваются обе?
|
|||
16
jurassic
30.09.15
✎
13:30
|
(15) >как же истина
так работает конкатенация |
|||
17
termos
30.09.15
✎
13:30
|
(12) (13) А если делаешь сравнение "Равно Товар", то не окрашивается ни одна строка :)
|
|||
18
jurassic
30.09.15
✎
13:30
|
(16) *конъюнкция, конечно
|
|||
19
jurassic
30.09.15
✎
13:30
|
(17) а вот тут уже ложь
|
|||
20
termos
30.09.15
✎
13:32
|
(19) Так какой выход из ситуации? Не могу понять что-то.
|
|||
21
jurassic
30.09.15
✎
13:34
|
взять в руки мышь и пытать форму интерактивно, пока не дойдёт
|
|||
22
termos
30.09.15
✎
13:39
|
(21) спасибо за совет! но как пытать её интерактивно, если интерактивного доступа к условному оформлению таблицы нет?
|
|||
23
Nuobu
30.09.15
✎
13:42
|
(22) Юзай простой отбор.
|
|||
24
jurassic
30.09.15
✎
13:43
|
(22) это как?
|
|||
25
termos
30.09.15
✎
13:43
|
(21) Всё я понял о чем речь :) Спасибо!
ИСТИНА, ЛОЖЬ в логической операции И. |
|||
26
jurassic
30.09.15
✎
13:43
|
аллах акбар
|
|||
27
termos
30.09.15
✎
13:44
|
(26) )))) Спасибо. Хорошего Вам дня!
|
|||
28
termos
30.09.15
✎
14:15
|
(26) Что-то всё равно не могу понять что не так - условия отбора в коде прописываю следующие - "Отменено = Ложь" И "ТипНоменклатуры Равно Товар". Группа элементов отбора И.
Строки ТЧ документа (отмененных строк не имеется): 1) Номенклатура - Товар: Отменено = Ложь (результат - ИСТИНА), ТипНоменклатуры = Товар (результат - ИСТИНА) ИТОГО ПО СТРОКЕ: Истина И Истина = Истина! Эта строчка подходит по отбору. Должна быть окрашена. 2) Номенклатура - Услуга: Отменено = Ложь (результат - ИСТИНА), ТипНоменклатуры = Товар (результат - ЛОЖЬ) ИТОГО ПО СТРОКЕ: Истина И Ложь = Ложь! Эта строчка не подходит по отбору. Не должна быть окрашена. А у меня же при данном условии не окрашивается ни одна строка. Что я делаю не так? Ведь условие то верное стоит. |
|||
29
jurassic
30.09.15
✎
14:20
|
>ТипНоменклатуры = Товар (результат - ИСТИНА)
вот откуда этот вывод? |
|||
30
termos
30.09.15
✎
14:22
|
(29) Тип номенклатуры установлен в карточке товара у данной номенклатуры и он равен "Товар".
|
|||
31
termos
30.09.15
✎
14:25
|
(29) По сути этим условием мы и проверяем тип номенклатуры Объект.Товары.Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
|
|||
32
jurassic
30.09.15
✎
14:32
|
а поморгай Отключеной. или вовсе убери
|
|||
33
jurassic
30.09.15
✎
14:32
|
(32) Отмененой
|
|||
34
termos
30.09.15
✎
14:41
|
(33) Убрал условие на проверку отменена ли позиция... Ситуация не изменилась.
Возможно ли, что неправильно отрабатывает потому что путь такой длинный? Объект.Товары.Номенклатура.ТипНоменклатуры |
|||
35
jurassic
30.09.15
✎
14:43
|
на форме есть этот тип?
|
|||
36
jurassic
30.09.15
✎
14:44
|
(35) а пофиг, у меня такое не видит, даже если есть
|
|||
37
termos
30.09.15
✎
14:47
|
(36) Так как быть в итоге?
|
|||
38
jurassic
30.09.15
✎
14:49
|
ну, например, заделать колонку и заполнять её
|
|||
39
jurassic
30.09.15
✎
14:49
|
или "номенклатура в списке товаров"
|
|||
40
termos
30.09.15
✎
15:03
|
(38) Сейчас попробую решение с колонкой и отпишусь.
|
|||
41
termos
30.09.15
✎
15:18
|
(39) В общем, действительно проблема в длинном пути в отборах условного оформления. Создал новый реквизит табличной части программно, заполняя его типом номенклатуры и в последующем сравнивал уже с этим новым реквизитом, а не с длинным путем "Объект.Товары.Номенклатура.ТипНоменклатуры".
Всё заработало! jurassic, благодарю за внимание и идеи! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |