Имя: Пароль:
1C
1С v8
8.3 получить значение реквизита формы в событии при измении
0 Alex87r
 
10.04.19
13:45
Всем хаюшки!

у меня на форме документа есть реквизит. Это реквизит формы, не объекта.
Повесил обработчик при измении. Теперь не пойму, как получить значение реквизита.
Отладкой нашел только так, но мне кажется это не совсем правильно)
Элемент.Имя - это название реквизита на форме. Я его программно добавил.
Значение = Элементы[Элемент.Имя].ТекстРедактирования
1 1Сергей
 
10.04.19
13:48
Посмотри на форме в свойствах элемента ПутьКДанным
2 Darych
 
10.04.19
13:53
(1) Я его программно добавил.)))
3 Alex87r
 
10.04.19
13:54
Я нашел))
ЭтаФорма[Элемент.Имя]
4 Darych
 
10.04.19
13:55
а просто Имя?
5 DrWatson
 
10.04.19
13:56
В редакторе формы сверху слева - элементы, сверху справа - реквизиты. Элементы доступны через Элементы.Имя. Реквизиты доступны через ЭтотОбъект.Имя, ЭтаФорма.Имя или просто Имя.
6 DrWatson
 
10.04.19
13:56
ЭтаФорма, кстати, считается устаревшим вариантом.
7 1Сергей
 
10.04.19
13:57
(6) нет. Это считается что у автора обычные формы
8 Alex87r
 
10.04.19
14:13
(7) управляемые. Мои методы устарели))
(6) А как лучше обратиться?
9 Darych
 
10.04.19
14:14
(8) Имя?
10 DrWatson
 
10.04.19
14:18
(8) Да, просто по имени реквизита
11 Cyberhawk
 
10.04.19
14:18
Универсального способа получить путь к данным элемента формы нет.
Проще говоря, ты в обработчике события сам должен знать, откуда брать значение, отображаемое этим элементом.
12 Cyberhawk
 
10.04.19
14:19
(без похода на сервер)
13 Darych
 
10.04.19
14:26
(12) у него контекст формы есть... а скорее всего вообще все это на клиенте
+ он рекв программно создал)
14 Alex87r
 
10.04.19
14:33
Да, у меня все на клиенте.
Я программно создаю элементы на форме, поэтому не могу обратиться напрямую к ним. Я не знаю, какой именно пользователь изменяет реквизит. У меня на все элементы формы повешан обработчик "при изменении".
Элемент.Имя - это название реквизита и элемента формы.
Если я просто напишу Элемент.Имя я не обращусь к реквизиту формы.
Если напишу ЭтотОбъект[Элемент.Имя] или ЭтаФорма[Элемент.Имя], то получаю значение реквизита формы.
15 Darych
 
10.04.19
14:34
просто имя
16 Alex87r
 
10.04.19
14:37
(15) Т.е. просто имя?

Вот моя процедура, куда здесь просто имя вставить?))

&НаКлиенте
Процедура ПриИзмененииПараметра(Элемент) Экспорт
        
    МасИзменить =  ТаблицаПараметров.НайтиСтроки(Новый Структура ("Идентификатор", Элемент.Имя));
    Если МасИзменить.Количество() Тогда
        МасИзменить[0].ДанныеИзменены = Истина;    
        МасИзменить[0].Значение = ЭтотОбъект[Элемент.Имя];
    КонецЕсли;
    
КонецПроцедуры
17 Cyberhawk
 
10.04.19
14:38
(13) Хорошо что есть, но без похода на сервер (т.е. с клиента) ты путь к данным элемента формы не узнаешь
18 Cyberhawk
 
10.04.19
14:39
(14) "программно создаю элементы на форме, поэтому не могу обратиться напрямую к ним" // Что мешает? ЭтотОбъект[ИмяРеквизитаХотьПрограммногоХотьНепрограммного]
19 Cyberhawk
 
10.04.19
14:40
ПолучитьРеквизиты метод формы
20 Alex87r
 
10.04.19
14:43
(18) Ну да, я так и обратился. Спасибо)
Просто мне писали напиши имя, я написал, что не могу имя написать))
21 Darych
 
10.04.19
14:45
вот до этого ни слова не было про
22 Darych
 
10.04.19
14:45
МасИзменить =  ТаблицаПараметров.НайтиСтроки(Новый Структура ("Идентификатор", Элемент.Имя));
23 Alex87r
 
10.04.19
14:53
(22) А что здесь?