|
УсловноеОформление в УФ | ☑ | ||
---|---|---|---|---|
0
pessok
04.12.12
✎
15:58
|
Коллеги, привет. Продолжаю изучать УФ, и появляются все новые вопросы. Теперь задача следующая. На форме лежит таблица, созданная динамически. К ней привинчены обработчики ожидания. По одному из обработчик в реквизит формы (ТЗ) пишется информация о том, на какой строчке и в какой колонке мы стояли, когда выбрался обработчик. Собственно, это раскраска таблицы пользователем. После того, как все это записалось (а пишется оно нормально), хочу считать данные и заполнить условное оформление, но лыжи не едут...
Вот код, ткните носом в ошибку, плз. &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); Для Каждого СтрокаЦветов Из ДанныеПоЦветам Цикл ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения"+СтрокаЦветов.КолонкаТаблицы); ЭлементОтбораСтрока = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораСтрока.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения.НомерСтроки"); ЭлементОтбораСтрока.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбораСтрока.ПравоеЗначение = СтрокаЦветов.СтрокаТаблицы + 1; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", СтрокаЦветов.Цвет); КонецЦикла; КонецПроцедуры |
|||
1
samozvanec
04.12.12
✎
16:01
|
ты хочешь конкретной строке условное оформление задать?
|
|||
2
pessok
04.12.12
✎
16:04
|
(1) именно
|
|||
3
pessok
04.12.12
✎
16:06
|
(1) я бы даже сказал, что я хочу делать как в обычных формах а ля
Для Каждого Оф Из ОформленияСтрок Цикл Если Истина Тогда Оф.Ячейка.ЦветФона = Красный Иначе Оф.Ячейка.ЦветФона = Зеленый КонецЦикла и т.п. |
|||
4
acsent
04.12.12
✎
16:09
|
у тз нет номера строки, если только руками не создать
|
|||
5
samozvanec
04.12.12
✎
16:10
|
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения"+СтрокаЦветов.КолонкаТаблицы); вот это вроде лишнее, если всю строку хочешь выделять. на чем хоть валится? |
|||
6
pessok
04.12.12
✎
16:10
|
(4) я в курсе
(5) нигде не валится, ошибок не выдает. в УсловноеОформление элемент на месте. На форме ничего не видно |
|||
7
samozvanec
04.12.12
✎
16:11
|
Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения.НомерСтроки");
ТаблицаЗаполнения тут зачем? |
|||
8
samozvanec
04.12.12
✎
16:11
|
использование?
|
|||
9
samozvanec
04.12.12
✎
16:13
|
вобще у тебя так на каждую строку оформление создастся. добавь поле какое-нибудь, заполняй истиной-ложью, по нему оформляй
|
|||
10
pessok
04.12.12
✎
16:50
|
сорри, отвлекали.
(7) ну так номер строки по строке реквизита я хочу искать. (8) использование на месте (9) мне и надо на каждую строку, там не только истина/ложь, там справочник :) |
|||
11
pessok
04.12.12
✎
16:54
|
+(10) собственно по этому и создана таблица дополнительная
|
|||
12
samozvanec
04.12.12
✎
16:56
|
в условном оформлении элемент появился, корректно заполнен?
|
|||
13
pessok
04.12.12
✎
17:00
|
||||
14
samozvanec
04.12.12
✎
17:02
|
(13) зачем поле задаешь? тебе всю строку покрасить или только это поле?
вобще выглядит нормально. возможно что-то с отбором. использование Истина у отбора? |
|||
15
samozvanec
04.12.12
✎
17:05
|
вобще вот такой кусок должен работать
УО = СписокДокументов.УсловноеОформление.Элементы; ЭлементУО = УО.Добавить(); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Зеленый); ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементУсловия.ПравоеЗначение = НачалоДня(ТекущаяДата()); |
|||
16
samozvanec
04.12.12
✎
17:06
|
+ ты в каком событии все это делаешь? может обновить надо форму?
|
|||
17
pessok
04.12.12
✎
17:06
|
(14) красить только поле. притом в каждой строке раскраска каждого поля по своему условию, собственно условие и заложено в таблице ДанныеПоЦветам
Отбор http://rghost.ru/42000829.view |
|||
18
samozvanec
04.12.12
✎
17:07
|
(17) в отборе у тебя левое значение - ПолеКомпоновкиДанных, правое - число
|
|||
19
pessok
04.12.12
✎
17:08
|
(18)
а такой код ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементУсловия.ПравоеЗначение = НачалоДня(ТекущаяДата()); разве не такое же сравнение вернет?.. |
|||
20
samozvanec
04.12.12
✎
17:09
|
(18) о чем это я...
|
|||
21
samozvanec
04.12.12
✎
17:10
|
(19) вернет вернет, (16) смотри
|
|||
22
pessok
04.12.12
✎
17:14
|
(21) это делается в динамически создаваемой команде. потом вызывается
Элементы.ТаблицаЗаполнения.Обновить(); |
|||
23
samozvanec
04.12.12
✎
17:42
|
ЭлементОтбораСтрока.ПравоеЗначение = СтрокаЦветов.СтрокаТаблицы + 1;
а вот тут уверен? |
|||
24
samozvanec
04.12.12
✎
17:44
|
если УО заполнено верно - косяк в отборе. попробуй задать отбор другой, который обязательно сработает. типа номер строки больше 1
|
|||
25
pessok
04.12.12
✎
17:47
|
(24) пробовал я уже такой отбор :( не уверен, что УО правильно заполнено
|
|||
26
samozvanec
04.12.12
✎
17:49
|
(25) судя по коду - все верно. сделай руками УО в режиме предприятия и посмотри, чем он от твоего отличаться будет
|
|||
27
pessok
04.12.12
✎
17:50
|
(26) у меня таблица демонически создается. пробовал для другой таблицы, вроде бы один в один
|
|||
28
samozvanec
04.12.12
✎
17:56
|
вернемся к (6). у тебя элемент есть в УО. попробуй снять использование, сохранить, установить, сохранить... нутыпонел, чето поделай с ним интерактивно, чтоб заработал, смотри, что
|
|||
29
pessok
04.12.12
✎
17:58
|
(28) ладно, мерси, завтра буду ковыряться :) щас уже хваааатит)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |