Имя: Пароль:
1C
1С v8
Как обратиться к реквизиту формы в УФ
,
0 DenisSS
 
09.04.18
08:37
Есть реквизит формы, созданный программно. Как обратиться к этому реквизиты, например, в ПослеЗаписиНаСервере? При отладке значение этого реквизита доступно, но такая строка естественно вызывает ошибку:

Сообщить(РеквизитСозданныйПрограммно)
Переменная не определена (РеквизитСозданныйПрограммно)
1 DmitrO
 
09.04.18
08:45
ЭтотОбъект["ИмяРеквизита"]
2 DenisSS
 
09.04.18
08:54
Спасибо работает, но так тоже работает, не ругается: ЭтаФорма.ИмяРеквизита
3 Lexey_
 
09.04.18
08:58
(2) ЭтотОбъект = ЭтаФорма
4 DmitrO
 
09.04.18
10:01
1.ЭтаФорма - оставлено для совместимости.
2.С какого-то релиза (не помню) платформа явно блокирует исключением обращение к программным реквизитам через точку (это уже для совместимости на будущее). Об этом видел официальное заявление в документации.
5 ildary
 
09.04.18
10:15
(4) извините что вмешиваюсь, то есть на сегодня самый правильный способ - это ЭтотОбъект["ИмяРеквизита"], а ЭтаФорма.ИмяРеквизита - не рекомендуется по причине устаревания?
6 Cyberhawk
 
09.04.18
10:17
(5) Правильнее всего для чтения значения программно созданного реквизита создавать структуру-зонд + ЗаполнитьЗначенияСвойств (т.к. реквизит может быть и удален)
7 Cyberhawk
 
09.04.18
10:24
(ну а для получения реквизита формы как объекта встроенного языка - без точки и без "ЭтаФорма", о чем сказано выше)
8 ildary
 
09.04.18
10:25
(6) извините, я правильно понял: структура-зонд - это структура с именами как у формы, которую (структуру) будем заполнять через ЗаполнитьЗначенияСвойств()? Выглядит рабоче, но вот ради одного поля гонять столько данных - не очень рационально.
9 Cyberhawk
 
09.04.18
10:27
(8) Это структура с именем ключа, совпадающим с именем реквизита, о существовании которого заранее неизвестно (он мог быть уже и удален, т.к. создан программно и для таких это возможно).
Насчет "гонять столько данных" - во-первых, сколько "столько"? А во-вторых это, видимо, единственный способ получить значение без оборачивания в попытку.
10 hhhh
 
09.04.18
10:28
(8) зачем гонять? в ЗаполнитьЗначенияСвойств() задаете список реквизитов в 3м параметре. Может вы там один реквизит напишете.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс