|
Как проверить наличие добавленного программно реквизита в управляемой форме? |
☑ |
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) Хз, не помню уже, помню только что на ОФ такое пришлось делал (там кажись конфа на собственных формах была, без платформенных команд)
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший