Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Можно ли выделить цветом значение отдельной ячейки в управляемой форме?

Можно ли выделить цветом значение отдельной ячейки в управляемой форме?
Я
   Soul771
 
03.11.16 - 00:53
Добрый вечер.
Подскажите, пожалуйста, можно ли выделить цветом отдельное конкретное значение элемента управляемой формы?
Мож криво написала... Есть документ с табличной частью. Пишу процедуру для обработчика события "ПриИзменении", конкретно хочу, чтобы при правке какого-то значения в столбце количество в ТЧ документа, исправленное значение выделялось другим цветом (текста или фона, чего-нибудь).  (Нужно это для того, чтобы админ или директор мог внести правки в документ и проглядывать, чего он поправил)
Пишу так:
&НаКлиенте
Процедура ЗапасыКоличествоПриИзменении(Элемент)
    
    Если ПроверитьПользователя()="админ" тогда
        Элемент.ЦветФона=WebЦвета.Аквамарин;    
        КонецЕсли;


//бла-бла, дальше пересчитывается цена, сумма... 



В итоге меняется цвет фона всей колонки Количество, а не только ячейки, в которую внесли исправления.

Пробовала так:

Элементы.ЗапасыКоличество.ЦветФона=WebЦвета.Аквамарин;    

Тоже закрашивает всю колонку..
 
 
   shpioleg
 
1 - 03.11.16 - 01:05
(0) А Условное оформление для формы чем не подходит?
Условия пропиши и должно раскрашиваться.
   Soul771
 
2 - 03.11.16 - 01:25
(1) - благодарю!
получилось раскрасить ячейку, открыв УсловноеОформление в СвойствахФормы и натыкав жесткое условие на поле Количество

(Количество=0)

А как прописать в обработчике события "ПриИзменении", чтобы отловить сам факт изменения количества, а не его конкретное значение, че-то не соображу.. Читаю СП - шифровка))
   Soul771
 
3 - 03.11.16 - 01:57
Пробую вот так:

&НаКлиенте
Процедура ЗапасыКоличествоПриИзменении(Элемент)
    
    Если ПроверитьПользователя()="админ" тогда
                
         УслОформл();
        
    КонецЕсли;    
КонецПроцедуры

&НаСервере
Процедура УслОформл()
   УсловноеОформление.Элементы.Очистить();
   ЭлементУО=УсловноеОформление.Элементы.Добавить();
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста",WebЦвета.Аквамарин);
        //ЭлементУсловия=ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

//ЭлементУсловия.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Количество");
        //Элементусловия.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;

//ЭлементУсловия.ПравоеЗначение=1;
        
        ОформляемоеПоле=ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле=Новый ПолеКомпоновкиДанных("Элементы.ЗапасыКоличество."); 

КонецПроцедуры


ошибок не выдает, но цвет фона не меняет, хоть с заккоментированным условием (мне бы его обойти как-то, дабы не нужно), хоть с раскомментированным...


Подскажите, пожалуйста, на что обратить внимание....
ЗапасыКоличество - это элемент формы, имеет путь Объект.Запасы.Количество
   Soul771
 
4 - 03.11.16 - 03:24
Сделала так:
&НаКлиенте
Процедура ЗапасыКоличествоПриИзменении(Элемент)
    
    Если ПроверитьПользователя()="админ" тогда
                
         УслОформл();
        
        КонецЕсли;
КонецПроцедуры;


&НаСервере
Процедура УслОформл()
         УсловноеОформление.Элементы.Очистить();
        
        ЭлементУО=УсловноеОформление.Элементы.Добавить();
                
        ОтборЭлемента = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Запасы.Количество");
        
        ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ОтборЭлемента.ПравоеЗначение = 1;
        ОтборЭлемента.Использование = Истина;
        
        ОформляемоеПоле=ЭлементУО.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле=Новый ПолеКомпоновкиДанных(Элементы.ЗапасыКоличество.Имя); 
        ЭлементУО.Использование = Истина;
        ОформляемоеПоле.Использование = Истина;
        ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Аквамарин);



КонецПроцедуры


Осталось избавиться от условия, что количество=1....и вписать, что если количество правилось юзером, то красить ячейку....
   Soul771
 
5 - 03.11.16 - 03:36
И сдается мне, что сделать это нельзя.... ибо как передать в левое значение отбора то, что сравнивать надо именно текущую ячейку, а не все значения из колонки количество....на сервере находимся..

???
   Лодырь
 
6 - 03.11.16 - 04:44
(5) Ну подумайте как еще можно идентифицировать строку таблицы запасы. Делов то. Например номер строки какойнибудь. Или сочетание полей.
   shpioleg
 
7 - 03.11.16 - 08:47
Так тебе нужно раскрашивать ячейку не от конкретного значения/условия, а от события исправлял ли когда-нибудь ячейку пользователь? Ну, тогда заведи новый реквизит/колонку для строки (булево или старое значение) и по его данным раскрашивай свое Количество. А так, даже выделишь ты ячейку, а при сохранении все потеряется.
И желательно описывай для чего это тебе.
   d546
 
8 - 03.11.16 - 08:54
можно наверное обойтись и без обработки изменения.

если изначально заполняется таблица (надеюсь, что в таблицу значений и выводится на форму), то можно при начальном заполнении сделать две колонки (количество) одну оставить для изменения, в вторую для сравнения в условном форматировании.
   d546
 
9 - 03.11.16 - 08:56
(8) + и если редактируемое количество будет не равно изначальному в спрятанной колонке, то форма сама раскрасит все как надо.
   FIXXXL
 
10 - 03.11.16 - 09:11
(9) если пользователь не захочет видет именно факт изменения, даже на такое же значение :)
бывало и такое, приходилось заводить флаг изменений для каждой колонки
 
 Рекламное место пустует
   Soul771
 
11 - 03.11.16 - 17:06
(6),(7),(8),(9),(10) - спасибо большое всем!

сделала через доп. реквизит, сразу мысль была вместо разукраски выводить рядом значок вроде восклицательного знака, если была правка, но хотелось сделать оптимально, без новых реквизитов) после ваших сообщений анализирую по этому доп реквизиту, были ли изменения, сам реквизит не вывожу, закрашиваю ячейку) Спасибо!!!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует