Имя: Пароль:
1C
1C 7.7
v7: Как получить значение формы
0 gugolovski
 
22.10.19
04:57
В справочнике есть три реквизита: Телефон1, Телефон2, Телефон3.


Как получить в открытой форме значение реквизита по имени?
Например,

Процедура ЗначениеДай()
имяРеквизита = Форма.АктивныйЭлемент();
Сообщить(Форма.ПолучитьАтрибут(имяРеквизита )); //выдает: "НеизвестныйОбъект"
КонецПроцедуры
1 GreyK
 
22.10.19
05:06
Не надо делать ссылку на форму, просто ПолучитьАтрибут(имяРеквизита ).
2 gugolovski
 
22.10.19
05:08
(1) Спасибо. Целый час туплю))
3 SleepyHead
 
гуру
22.10.19
05:14
(2) Про синтаксис-помощник что-нибудь знаете?
4 gugolovski
 
22.10.19
05:31
(3) пытаюсь его использовать. Например там про метод ПолучитьАтрибут() написано:
Синтаксис:
Форма.ПолучитьАтрибут(ИмяРеквизита)

Потому и пытался воткнуть слово "форма"
5 SleepyHead
 
гуру
22.10.19
05:37
(4) Нужно учитывать контекст модуля, в котором используешь методы формы. В модуле формы достаточно указать имя атрибута формы или метода формы.
6 gugolovski
 
22.10.19
05:41
(5) А можно сделать обратную операцию, и по имени реквизита, установить значение формы?
7 SleepyHead
 
гуру
22.10.19
05:48
(7) Давно я с 77 не работал.. Как-то можно, через шаблон и немного магии ))

http://1c-pro.ru/threads/ustanovit-znachenie-ehlementa-formy-cherez-peredachu-konteksta.13741/
8 SleepyHead
 
гуру
22.10.19
06:25
Еше прочитал, через недокументированную возможность может получиться (а может и нет).

Функция ВзятьКонтекст(Конт)
   Возврат Конт
КонецФункции


// далее где-то в глубине модуля формы
Конт = ВзятьКонтекст(Контекст);
Конт.УстановитьАтрибут(Имя, Значение);
9 gugolovski
 
22.10.19
06:45
(8) магия)) - это работает
10 SleepyHead
 
гуру
22.10.19
07:09
(9) Ну здесь как раз никакой магии нет. В этом контексте срабатывает метод УстановитьАтрибут или справочника. или документа, ты просто контекст указываешь явно.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший