Имя: Пароль:
1C
1С v8
Изменение свойств элементов формы документа
0 Cоляпсус
 
23.03.18
13:23
Здравствуйте, возник такой вопрос:
Есть документ, на форме табличная часть. В табличной части есть элемент который должен при условии А быть обязательным к заполнению и подчёркиваться красным пунктиром, при условии Б не должен быть обязательным к заполнению и подчёркиваться красным пунктиром. В реализации момента понятно, сделал ОбработчикПроверкиЗаполнения, он отрабатывает как надо, но не нравится, что элемент подчёркивается, хотя уже не обязателен к заполенению. Можно снять обязательность и при открытии поставить проверку, но тогда будет обратная ситуация, не будет подчёркнуто при условии А, но будет требовать заполнения.
Слышал про "динамическое изменение свойств элемента формы", но гугль однозначного ответа не дал. Подскажите кто-нибудь, как можно реализовать.
Заранее благодарен.
1 Cоляпсус
 
23.03.18
13:52
Никто не сталкивался?
2 Kondarat
 
23.03.18
13:55
(1) Снимаешь у реквизита проверку заполнения. И в зависимости от своих условий у элемента изменяешь свойство ОтметкаНезаполненного. В финале обрабатываешь по тем же условиям в ОбработкеПроверкаЗаполнения. Например
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Объект.Организация) Тогда
        Элементы.Организация.ОтметкаНезаполненного = Ложь;
    Иначе
        Элементы.Организация.ОтметкаНезаполненного = Истина;
    КонецЕсли;    
    
КонецПроцедуры
3 Cоляпсус
 
23.03.18
15:13
Нет так не работает. В отладке у данного (моего) элемента и так стоит ОтметкаНезаполненного Ложь, а красный пунктир есть.
Может тут надо как-то к свойству обратится и снять программно галку ВыдаватьОшибку?
4 Cоляпсус
 
23.03.18
15:14
Или может как-то обратится к ПроверкаЗапоплнения.НеПроверять?
5 Cоляпсус
 
23.03.18
15:24
Как-то можно обратится к реквизиту табличной части и у него программно снять свойство "Выдавать ошибку"?
Или как работает динамическое изменение свойств элемента формы?
6 Cоляпсус
 
23.03.18
15:41
Что-то не выходит каменный цветок. Есть Данила мастер здесь?)
7 Kondarat
 
23.03.18
15:45
(6) Свойство "ПроверкаЗаполнения" у реквизита только для чтения, изменить его нельзя. Приведенный мною код работает для реквизита (Элемента) Объекта, а вот для колонки ТЧ ьакого эффекта получить не удалось.
8 Kondarat
 
23.03.18
15:46
+ 7 ьакого - такого
9 Kondarat
 
23.03.18
16:30
+(8) Для колонки табличной части: не важно, что установлено в свойстве ПроверкаЗаполнения. У элемента (колонки) устанавливаем АвтоОтметкаНезаполненного = Нет. Далее вот такой код устанавливает (снимает) это свойство (полоски красные, то появляются, то исчезают)
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Объект.Организация) Тогда
        Элементы.ТоварыЦена.АвтоОтметкаНезаполненного = Истина;
    Иначе
        Элементы.ТоварыЦена.АвтоОтметкаНезаполненного = Ложь;
    КонецЕсли;

КонецПроцедуры
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.