Имя: Пароль:
 
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) Хз, не помню уже, помню только что на ОФ такое пришлось делал (там кажись конфа на собственных формах была, без платформенных команд)