|
Можно ли выделить цветом значение отдельной ячейки в управляемой форме? | ☑ | ||
---|---|---|---|---|
0
Soul771
03.11.16
✎
00:53
|
Добрый вечер.
Подскажите, пожалуйста, можно ли выделить цветом отдельное конкретное значение элемента управляемой формы? Мож криво написала... Есть документ с табличной частью. Пишу процедуру для обработчика события "ПриИзменении", конкретно хочу, чтобы при правке какого-то значения в столбце количество в ТЧ документа, исправленное значение выделялось другим цветом (текста или фона, чего-нибудь). (Нужно это для того, чтобы админ или директор мог внести правки в документ и проглядывать, чего он поправил) Пишу так: &НаКлиенте Процедура ЗапасыКоличествоПриИзменении(Элемент) Если ПроверитьПользователя()="админ" тогда Элемент.ЦветФона=WebЦвета.Аквамарин; КонецЕсли; //бла-бла, дальше пересчитывается цена, сумма... В итоге меняется цвет фона всей колонки Количество, а не только ячейки, в которую внесли исправления. Пробовала так: Элементы.ЗапасыКоличество.ЦветФона=WebЦвета.Аквамарин; Тоже закрашивает всю колонку.. |
1 |
||
1
shpioleg
03.11.16
✎
01:05
|
(0) А Условное оформление для формы чем не подходит?
Условия пропиши и должно раскрашиваться. |
2 |
||
2
Soul771
03.11.16
✎
01:25
|
(1) - благодарю!
получилось раскрасить ячейку, открыв УсловноеОформление в СвойствахФормы и натыкав жесткое условие на поле Количество (Количество=0) А как прописать в обработчике события "ПриИзменении", чтобы отловить сам факт изменения количества, а не его конкретное значение, че-то не соображу.. Читаю СП - шифровка)) |
|||
3
Soul771
03.11.16
✎
01:57
|
Пробую вот так:
&НаКлиенте Процедура ЗапасыКоличествоПриИзменении(Элемент) Если ПроверитьПользователя()="админ" тогда УслОформл(); КонецЕсли; КонецПроцедуры &НаСервере Процедура УслОформл() УсловноеОформление.Элементы.Очистить(); ЭлементУО=УсловноеОформление.Элементы.Добавить(); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста",WebЦвета.Аквамарин); //ЭлементУсловия=ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементУсловия.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Количество"); //Элементусловия.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно; //ЭлементУсловия.ПравоеЗначение=1; ОформляемоеПоле=ЭлементУО.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле=Новый ПолеКомпоновкиДанных("Элементы.ЗапасыКоличество."); КонецПроцедуры ошибок не выдает, но цвет фона не меняет, хоть с заккоментированным условием (мне бы его обойти как-то, дабы не нужно), хоть с раскомментированным... Подскажите, пожалуйста, на что обратить внимание.... ЗапасыКоличество - это элемент формы, имеет путь Объект.Запасы.Количество |
|||
4
Soul771
03.11.16
✎
03:24
|
Сделала так:
&НаКлиенте Процедура ЗапасыКоличествоПриИзменении(Элемент) Если ПроверитьПользователя()="админ" тогда УслОформл(); КонецЕсли; КонецПроцедуры; &НаСервере Процедура УслОформл() УсловноеОформление.Элементы.Очистить(); ЭлементУО=УсловноеОформление.Элементы.Добавить(); ОтборЭлемента = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Запасы.Количество"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = 1; ОтборЭлемента.Использование = Истина; ОформляемоеПоле=ЭлементУО.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле=Новый ПолеКомпоновкиДанных(Элементы.ЗапасыКоличество.Имя); ЭлементУО.Использование = Истина; ОформляемоеПоле.Использование = Истина; ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Аквамарин); КонецПроцедуры Осталось избавиться от условия, что количество=1....и вписать, что если количество правилось юзером, то красить ячейку.... |
|||
5
Soul771
03.11.16
✎
03:36
|
И сдается мне, что сделать это нельзя.... ибо как передать в левое значение отбора то, что сравнивать надо именно текущую ячейку, а не все значения из колонки количество....на сервере находимся..
??? |
6 |
||
6
Лодырь
03.11.16
✎
04:44
|
(5) Ну подумайте как еще можно идентифицировать строку таблицы запасы. Делов то. Например номер строки какойнибудь. Или сочетание полей.
|
11 |
||
7
shpioleg
03.11.16
✎
08:47
|
Так тебе нужно раскрашивать ячейку не от конкретного значения/условия, а от события исправлял ли когда-нибудь ячейку пользователь? Ну, тогда заведи новый реквизит/колонку для строки (булево или старое значение) и по его данным раскрашивай свое Количество. А так, даже выделишь ты ячейку, а при сохранении все потеряется.
И желательно описывай для чего это тебе. |
11 |
||
8
d546
03.11.16
✎
08:54
|
можно наверное обойтись и без обработки изменения.
если изначально заполняется таблица (надеюсь, что в таблицу значений и выводится на форму), то можно при начальном заполнении сделать две колонки (количество) одну оставить для изменения, в вторую для сравнения в условном форматировании. |
9 11 |
||
9
d546
03.11.16
✎
08:56
|
(8) + и если редактируемое количество будет не равно изначальному в спрятанной колонке, то форма сама раскрасит все как надо.
|
10 11 |
||
10
FIXXXL
03.11.16
✎
09:11
|
(9) если пользователь не захочет видет именно факт изменения, даже на такое же значение :)
бывало и такое, приходилось заводить флаг изменений для каждой колонки |
11 |
||
11
Soul771
03.11.16
✎
17:06
|
(6),(7),(8),(9),(10) - спасибо большое всем!
сделала через доп. реквизит, сразу мысль была вместо разукраски выводить рядом значок вроде восклицательного знака, если была правка, но хотелось сделать оптимально, без новых реквизитов) после ваших сообщений анализирую по этому доп реквизиту, были ли изменения, сам реквизит не вывожу, закрашиваю ячейку) Спасибо!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |