Имя: Пароль:
1C
1С v8
Можно ли по элементу "ПолеВвода" элемента "ТаблицаФормы" определить имя реквизит
,
0 pavlushov
 
02.11.21
16:36
Добавил реквизит формы таблицу значений «ВидыДокументов» с колонками: «ВидДокумента» (справочник), «Вкладывать» (булево), «Просмотр» (булево). На форме соответственно элемент ТаблицаФормы, где колонки называются иначе: «ВидыДокументовВкладывать», «ВидыДокументовПросмотр».
Делаю команду, которая должна понять на какой колонке я стою, по колонке определить имя реквизита и проставить флажки. Т.е. команда «Отметить все», которая должна отметить все в текущей колонке. Я понимаю, что можно назвать поля так-же как и названы колонки таблицы значений, что можно задать соответствие между названиями, но можно ли сделать это как то иначе, более корректно?
Элементы.ВидыДокументов.ТекущийЭлемент.Имя – здесь я получаю например «ВидыДокументовВкладывать»
    Для Каждого СтрокаТЗ Из ВидыДокументов Цикл
        СтрокаТЗ.[ИмяКолонки] = Истина; - а сюда мне надо передать «Вкладывать»
    КонецЦикла;
Можно ли все таки как то по текущему элементу определить имя реквизита, желательно на клиенте. Я понимаю что на сервере можно у текущего элемента прочитать ПутьКДанным, но это тоже так себе решение, так как он будет в виде: ВидыДокументов.Вкладывать
1 vicof
 
02.11.21
16:38
СтрЗаменить наше всё
2 DrShad
 
02.11.21
16:40
в принципе я не против
3 acht
 
02.11.21
16:41
(0) >  так себе решение,
А зря. Это самый корректный способ.

С таким подходом тебе подсказывать бесполезно, тебя не устроит ни одно из решений.
4 TormozIT
 
гуру
02.11.21
23:35
(0) Нельзя универсально это сделать на клиенте. Я тоже недоволен такой "оптимизацией" в платформе. Сделано это ради уменьшения размера клиентской части формы. Так борятся за каждый килобайт.
В итоге для условно универсальных клиентских механизмов приходится самостоятельно городить соответствие имени элемента формы и пути к данным. Помещаем в это соответствие в реквизит формы и далее уже пользуемся на клиенте.
Когда то я даже просил производителя одуматься и сделать эти пути доступными на клиенте хотя бы через отдельный серверный вызов системного метода. Но нет. Каждая конфигурация и иногда даже форма обречена городить свой огород для подобных универсальных механизмов.
5 серый КТУЛХУ
 
03.11.21
00:13
(4): "В итоге для условно универсальных клиентских механизмов приходится самостоятельно городить соответствие имени элемента формы и пути к данным. Помещаем в это соответствие в реквизит формы и далее уже пользуемся на клиенте."
нередко бывает нужно. не поделишься методикой (и м.б. кодом)?..
6 pavlushov
 
03.11.21
09:57
(4) Думаю можно при создании формы заполнить это соответствие и далее пользоваться. Что то типа:
    Для Каждого Эл Из Элементы Цикл
        СоответствиеЭлементов.Вставить(Эл, Эл.ПутьКДанным);
    КонецЦикла;
ну только конечно надо по типу элемента фильтровать чтобы не пытаться получить ПутьКДанным у ГруппыФормы.
7 acht
 
03.11.21
10:42
(6) > СоответствиеЭлементов.Вставить(Эл, Эл.ПутьКДанным);
Здравствуй, утечка памяти!
8 pavlushov
 
03.11.21
11:34
(7) плохо так делать да?
9 acht
 
03.11.21
11:39
Да. Надо хранить строки - имена элементов.
10 pavlushov
 
03.11.21
12:51
(9) Вы имеете в виду: СоответствиеЭлементов.Вставить(Эл.Имя, Эл.ПутьКДанным);