Имя: Пароль:
1C
1С v8
УФ, динамическое добавление реквизитов, проблема
0 v8Newbie
 
26.07.12
18:25
Приветствую!

Добавляю реквизиты на форму вот таким кодом(модуль формы, процедура #НаСервере):

//Сделал выборку по справочнику, иду в цикле

Пока Выборка.Следующий() цикл
       
       Реквизит = Новый РеквизитФормы("р_"+Выборка.Ссылка.Наименование, ДопустимыеТипы);    
       ДобавляемыеРеквизиты = Новый Массив;
       ДобавляемыеРеквизиты.Добавить(Реквизит);
       ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);    
       
       
       РеквизитФормы = ЭтаФорма["р_"+Выборка.Ссылка.Наименование];
       РеквизитФормы = Выборка.Ссылка;
               
       Элемент = Элементы.Добавить("э_"+Выборка.Ссылка.Наименование,Тип("ПолеФормы"),Элементы.ВерхнийРядВыкладки);
       Элемент.Вид = ВидПоляФормы.ПолеВвода;
       Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
       Элемент.ПутьКДанным =  "р_"+Выборка.Ссылка.Наименование;
       Элемент.ТолькоПросмотр = Ложь;
КонецЦикла;

Все нормально, поля появляются с указанными типами, но пустые(а соответствующие реквизиты в "Элемент.ПутьКДанным" заполнены значениями). В чем проблема?
1 Агент Инфостарта
 
26.07.12
18:31
Выборка.Ссылка.Наименование
Наверное, в некорректном названии имени реквизита. В нём должны содержаться только буквенно-цифровые символы и знак подчёркивания _.
2 SUA
 
26.07.12
18:31
ну пустые и это правильно, кто же их заполнять чем попало будет?
строки этаформа[ДобавляемыеРеквизиты]=значение не вижу
3 SUA
 
26.07.12
18:32
даже если название верно
4 v8Newbie
 
26.07.12
18:33
(2) "РеквизитФормы = ЭтаФорма["р_"+Выборка.Ссылка.Наименование];
       РеквизитФормы = Выборка.Ссылка;"
а этого не хватит?
5 Агент Инфостарта
 
26.07.12
18:34
ЭтаФорма["р_"+Выборка.Ссылка.Наименование] = Выборка.Ссылка;
6 Агент Инфостарта
 
26.07.12
18:35
(4) Пост выше. Так логичней.
7 SUA
 
26.07.12
18:35
а... пропустил
точно
тогда в отладчик и смотреть что такое там реквизитформы
8 v8Newbie
 
26.07.12
18:38
(7) Реквизит там, гад такой...:) и даже нужного типа. И даже заполняется!(я уже 4 часа в отладчике кручу,  я первый раз такой код пишу в УФ). Но выводится пустое поле.
9 v8Newbie
 
26.07.12
18:49
(7) ЭтаФорма["р_"+Выборка.Ссылка.Наименование] = Выборка.Ссылка;
Так работает!!:) Мой вариант - не работает. Как-то странно, но ладно. Спасибо, помог.
10 v8Newbie
 
27.07.12
22:01
Продолжаем разговор.Теперь динамически генерю группу,и создаю в ней дочерний элемент - поле. Выдает ошибку. Код:

ЭлементГруппа = Элементы.Добавить("гр_"+Выборка.Ссылка.Наименование, тип("ГруппаФормы"),Элементы.ВерхнийРядВыкладки);
       Элемент = Элементы.Добавить("э_"+Выборка.Ссылка.Наименование,Тип("ПолеФормы"),ЭлементГруппа);

Выдает "Недопустимое значение параметров", причем сама группа создалась в подчиненных элемента корневой группы. Крутил по- разному, и через все элементы поиском, и через массив - одна ошибка. Что не так?
11 v8Newbie
 
27.07.12
22:36
Народ, хелп, плиз
12 v8Newbie
 
28.07.12
13:16
upd
13 Rovan
 
гуру
28.07.12
13:23
(10) ошибка во 2й строке ?
14 Агент Инфостарта
 
28.07.12
14:02
(10) Почитай СП, посмотри в отладчике типы данных.