|
Как изменить доступность реквизита в Управляемой Форме | ☑ | ||
---|---|---|---|---|
0
Saari
21.07.20
✎
09:32
|
Есть форма документа, в которой среди прочих есть два реквизита: ФИО (ссылка на справочник) и реквизит чекбокс (галка).
Нужно сделать так, что если в реквизите ФИО указано значение из справочника, то чекбокс доступен. Если реквизит ФИО пустой (пустая ссылка), то чекбокс недоступен. Сделал так: В процедуре ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) реквизита ФИО написал: Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда Элементы.РеквизитЧекБокс.Доступность = Истина; Иначе Элементы.РеквизитЧекБокс.Доступность = Ложь; КонецЕсли; ЭтаФорма.ОбновитьОтображениеДанных(); Не работает, доступность реквизита чекбокс не изменяется. Подскажите, пожалуйста. |
|||
1
acht
21.07.20
✎
09:34
|
перенеси в ПриИзменении
|
|||
2
Saari
21.07.20
✎
09:37
|
(1) Пробовал. Но там не получается проверить заполненность элемента формы.
Подскажете как? |
|||
3
acht
21.07.20
✎
09:46
|
(2) > не получается проверить заполненность элемента формы
Значение реквизита уже установлено в результат изменения. |
|||
4
Saari
21.07.20
✎
09:51
|
(3) При открытии документа реквизит ФИО пустой. Я выбираю значение на форме. Попадаю в процедуру "ПриИзменении()". И в ней значение ЗначениеЗаполнено(ФИО) ложь. Т.е. реквизит документа не заполнен, а заполнен реквизит формы.
Как проверить на заполненность реквизита формы? |
|||
5
acht
21.07.20
✎
09:53
|
(4) Показывай код, скриншоты, всетакое
|
|||
6
acht
21.07.20
✎
09:54
|
Если у тебя два реквизита с одним именем - формы и документа, то ты ССЗБ
|
|||
7
Saari
21.07.20
✎
10:01
|
(5) В процедуре "ПриИзменении()"
Если ЗначениеЗаполнено(ФИО) Тогда Элементы.РеквизитЧекБокс.Доступность = Истина; Иначе Элементы.РеквизитЧекБокс.Доступность = Ложь; КонецЕсли; В этом случае ЗначениеЗаполнено(ФИО) всегда Ложь Если так: Если ЗначениеЗаполнено(Элементы.ФИО) Тогда Элементы.РеквизитЧекБокс.Доступность = Истина; Иначе Элементы.РеквизитЧекБокс.Доступность = Ложь; КонецЕсли; то выдает ошибку: Проверка мутабельных значений на заполненность не поддерживается |
|||
8
Saari
21.07.20
✎
10:02
|
(6) имя одно (у реквизита формы и документа), но обращение к ним индивидуальное.
|
|||
9
acht
21.07.20
✎
10:28
|
Что такое "ФИО" - отдельный ревизит формы или реквизит шапки документа? Если второе, то к нему надо обращатся через основной рекивизит формы, который у тебя скорей всего называется "Объект".
|
|||
10
Saari
21.07.20
✎
10:39
|
(9) УРА! Заработало!
В процедуре ПриИзменении() написал так: Если ЗначениеЗаполнено(Объект.ФИО) Тогда Элементы.РеквизитЧекБокс.Доступность = Истина; Иначе Элементы.РеквизитЧекБокс.Доступность = Ложь; КонецЕсли; acht, СПАСИБО огромное! |
|||
11
D_E_S_131
21.07.20
✎
10:49
|
(10) По правильному:
&НаКлиенте Процедура ПриОткрытии() НастроитьДоступКГалке(); КонецПроцедуры &НаКлиенте Процедура ФИОПриИзменении() НастроитьДоступКГалке(); КонецПроцедуры &НаКлиенте Процедура НастроитьДоступКГалке() // твой код КонецПроцедуры |
|||
12
Saari
21.07.20
✎
10:54
|
(11) Спасибо!
|
|||
13
acht
21.07.20
✎
10:55
|
(11) Если совсем, по правильному, то:
&НаСервере Процедура ПриСозданииНаСервере() УстановитьДоступностьРеквизитов(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ФИОПриИзменении() УстановитьДоступностьРеквизитов(ЭтотОбъект); КонецПроцедуры &НаКлиентеНеСервереБезКонтекста Процедура УстановитьДоступностьРеквизитов(Форма) Форма.Элементы.РеквизитЧекБокс.Доступность = ЗначениеЗаполнено(Форма.ЗначениеЗаполнено(Объект.ФИО) ) КонецПроцедуры Минус один вызов сервера при открытии. |
|||
14
acht
21.07.20
✎
10:58
|
^Форма.Элементы.РеквизитЧекБокс.Доступность = ЗначениеЗаполнено(Форма.Объект.ФИО);
ессно |
|||
15
SadrArt
21.07.20
✎
11:22
|
(0) О_О с таким стажем, и такой вопрос??!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |