| 
    
        
     
     | 
    
    
  | 
Можно ли по элементу "ПолеВвода" элемента "ТаблицаФормы" определить имя реквизит | ☑ | ||
|---|---|---|---|---|
| 
    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) Вы имеете в виду: СоответствиеЭлементов.Вставить(Эл.Имя, Эл.ПутьКДанным);     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |