Имя: Пароль:
1C
1С v8
Раскрасить поле формы
0 nAPACEHAK
 
06.02.18
14:53
Доброго всем

Подскажите, плз, как раскрасить поле формы при создании/изменении дока?

например, на доке есть поле Контрагент
Выбираем контрагента и в зависимости от условия, поле формы меняло цвет.

Если при открытии то работает. а при изменении/создании нового как?

спс

Процедура ВыделитьКонтрагента(Контрагент)
    Если ЛояльныйКлиент(Контрагент) Тогда
        ЭлементыФормы.Контрагент.ЦветФона = WebЦвета.БледноЗеленый;
    Иначе
        ЭлементыФормы.Контрагент.ЦветФона = Новый Цвет;    
    КонецЕсли;
    
КонецПроцедуры
1 drcrasher
 
06.02.18
14:57
событие приИзменении()
2 Tolia_2016
 
06.02.18
15:01
Стиль:ВырвиГлаз.
3 Tolia_2016
 
06.02.18
15:02
Лояльные, бледно-зеленые контры.
4 nAPACEHAK
 
06.02.18
15:20
(1) стоит в ПриИзменении () и в ПриОткрытии ()

ПриОткрытии работает ПриИзменении - цвет не меняется, хотя в эту процедуру заходит и попадает на ЭлементыФормы.Контрагент.ЦветФона = WebЦвета.БледноЗеленый;

(3) мне скажут рыжим - будет рыжим ))))
5 nAPACEHAK
 
06.02.18
15:22
После изменения, по точке останова на последней строке ПриИзменении () в отладчике элементыформы.Контрагент.ЦветФона Значение зелёного, но на форме у него обычный цвет
6 drcrasher
 
06.02.18
15:27
(5) ну можно ещё попробовать обновить форму
7 _Дайвер_
 
06.02.18
15:30
(6) +++
8 nAPACEHAK
 
06.02.18
15:33
(6) ну примерно до сюда я додумался, не могу сообразить как. подскажите?
9 Mankubus
 
06.02.18
15:34
(8) обновить()
10 _Дайвер_
 
06.02.18
15:34
(8) ЭтаФорма.Прочитать();
11 nAPACEHAK
 
06.02.18
15:40
(9) ЭтаФорма.Обновить () - ничего не изменилось
(10) ЭтаФорма.Прочитать () - ??? забыл сказать. Обычные формы
12 nAPACEHAK
 
06.02.18
16:11
(10) может я чего то не догоняю....
Создаем новый док, заполняем контрагента (не красится), след.шагом ЭтаФорма.Прочитать ()
Она ж вроде опять вместо введенного контрагента пустую ссылку вставит (для несохраненного дока)
13 drcrasher
 
06.02.18
16:36
прочитать() не надо, это повторная загрузка из базы
14 drcrasher
 
06.02.18
16:42
так, мне было скучно.

в (0) код странный, так что добавь примерно следующее:

Процедура Реквизит1ПриИзменении(Элемент)
    Если Реквизит1 = 1 Тогда
        ЭлементыФормы.Реквизит1.ЦветФонаПоля = WebЦвета.Красный;
    Иначе
        ЭлементыФормы.Реквизит1.ЦветФонаПоля = Новый Цвет;
    КонецЕсли;
    
    Обновить();
КонецПроцедуры
15 drcrasher
 
06.02.18
16:48
а вообще, я бы сделал чуть иначе: хороший контрагент - рядом рисуем галочку зелёную, проблемный контрагент - красный крестик, не выбран - ничего не рисуем.
и понятна, и секса с кодом меньше
16 nAPACEHAK
 
06.02.18
16:57
(15) Спасибо за наводку!
17 nAPACEHAK
 
06.02.18
17:05
(14) Если Вы про условие - то там ф-я булево возвращает

Процедура ВыделитьКонтрагента(Контрагент)
    Если ЛояльныйКлиент(Контрагент) Тогда
        ЭлементыФормы.Контрагент.ЦветФона = WebЦвета.БледноЗеленый;
    Иначе
        ЭлементыФормы.Контрагент.ЦветФона = Новый Цвет;    
    КонецЕсли;
    Обновить ();
КонецПроцедуры

Процедура КонтрагентПриИзменении(Элемент) Экспорт
    ВыделитьКонтрагента(Контрагент);
КонецПроцедуры

На последней строке точка останова. в отладчике
ЭлементыФормы.Контрагент.ЦветФона = зеленый
на форме .... обычный цвет фона
18 nAPACEHAK
 
06.02.18
17:10
Процедура ВыделитьКонтрагента(Контрагент)
    Если ЛояльныйКлиент(Контрагент) Тогда
        ЭлементыФормы.Контрагент.ЦветФона = WebЦвета.БледноЗеленый;
        ЭлементыФормы.тКонтрагент.ЦветТекста = WebЦвета.БледноЗеленый;
    Иначе
        ЭлементыФормы.Контрагент.ЦветФона = Новый Цвет;    
        ЭлементыФормы.тКонтрагент.ЦветТекста = Новый Цвет;
    КонецЕсли;
    Обновить ();
КонецПроцедуры

надпись красится а поле нет
может поле как обновить надо?
19 nAPACEHAK
 
06.02.18
17:10
тКонтрагент - надпись
20 drcrasher
 
06.02.18
17:17
я не буду переписывать твой код, просто обрати внимание на **ЦветФонаПоля**
22 Fragster
 
гуру
06.02.18
17:21
А что, условное оформление не модно?
23 drcrasher
 
06.02.18
17:31
(22) толстый клиент
24 nAPACEHAK
 
06.02.18
17:33
(20) бинго!
только вот теперь наоборот ))))
Одна и таже проц. вызывается в конце ПриОткрытии () и ПриИзменении ()
Результат разный
http://prntscr.com/iax368
изменение
http://prntscr.com/iax3o9
открытие
25 drcrasher
 
06.02.18
17:35
ну меняй и цвет фона и цвет поля. а лучше иконку рядом вешай
26 nAPACEHAK
 
06.02.18
17:38
(25) Спасибо. всё получилось

ИМХО с иконкой поприятнее было бы, но кого кроме меня и Вас это интересует ))))
Основная теорема систематики: Новые системы плодят новые проблемы.