Имя: Пароль:
1C
 
Как проверить наличие добавленного программно реквизита в управляемой форме?
0 LLIaMaH
 
03.08.18
06:07
Иногда При открытии передаю в форму параметр, в ПриСоздании создаю для него реквизит формы, чтобы хранить этот параметр. В дальнейшем при работе нужно проверять наличие реквизита, ничего кроме явного обращения к нему я не нашел - ЭтаФОрма.МойПараметр, это приводит к ошибке когда в форме этого реквизита нет, приходиться оборачивать в ПопыткаИсключения, может есть способ проверить наличие программно добавленного реквизита?

Может есть како-то другой способ хранить параметр в форме?
1 LLIaMaH
 
03.08.18
06:09
Хотя реквизит можно создавать всегда, но заполнять не всегда, но вопрос в принципе всернао интересен теоретически.
2 hhhh
 
03.08.18
06:21
(1) ну как бы стандартный прием

струк = Новый Структура("ИмяПараметра", Неопределено);
ЗаполнитьЗначенияСвойств(струк, ЭтаФорма);
3 тарам пам пам
 
03.08.18
09:59
эмм, а чем метод Форма.ПолучитьРеквизиты() не устроил?

(2) Немножко не то, может подтянуться не только реквизит формы, но и экспортная переменная модуля формы. Также не определить, что реквизит есть, но его значение = Неопределено.
4 тарам пам пам
 
03.08.18
10:07
(3)+ хотя проблему с Неопределено можно обойти через


ИД = Новый УникальныйИдентификатор;
Струк = Новый Структура(ИмяПараметра, ИД);
ЗаполнитьЗначенияСвойств(струк, ЭтаФорма);
Если Струк[ИмяПараметра] = ИД Тогда
    // реквизит есть
Иначе
    // реквизита нет
КонецЕсли;
5 Cyberhawk
 
03.08.18
10:13
(4) Только ветки условия у тебя перепутаны - если в структуре остался ИД, то значит реквизита нет
6 Вафель
 
03.08.18
10:45
А если реквизит есть и значение его неопределено?
7 Cyberhawk
 
03.08.18
10:53
Ну так для этого в структуру-зонд и помещают УИД в качестве значения ключа
8 Вафель
 
03.08.18
10:54
кстати чем плоха попытка?
9 тарам пам пам
 
03.08.18
11:08
(8) вызывает ненависть при отладке и установке флага "Останавливаться при ошибке".
10 Cyberhawk
 
03.08.18
11:16
(8) Тем, что ее можно использовать
11 Cyberhawk
 
03.08.18
11:16
*не использовать
12 Вафель
 
03.08.18
11:17
лучше уж попытка, чем всякие извратские способы
13 Cyberhawk
 
03.08.18
11:19
Может ты и какие-нибудь команды навигации по спискам делаешь через WSH.SendKey вместо пары сотен программного кода? ))
14 Вафель
 
03.08.18
11:21
(13) а зачем нужно делать ручную навигацию по спискам?
15 тарам пам пам
 
03.08.18
11:57
(14) например для тач скринов вывести кнопки нормального размера
16 Вафель
 
03.08.18
12:03
(15) уже есть мобильный клиент, там нативная навигация по спискам
17 тарам пам пам
 
03.08.18
13:24
(16) тач может быть и в обычном ноутбуке под обычной виндой
18 Cyberhawk
 
04.08.18
23:46
(14) Хз, не помню уже, помню только что на ОФ такое пришлось делал (там кажись конфа на собственных формах была, без платформенных команд)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан