|
Динамический набор колонок | ☑ | ||
---|---|---|---|---|
0
nAPACEHAK
12.05.14
✎
17:28
|
Добра всем
Помогите разобраться, плз, с УФ весь день убил а так и не получилось разобраться Надо создать форму с динамически изменяемым набором колонок ТЗ = Запрос.Выполнить().Выгрузить(); МассивРеквизитов.Очистить(); Для каждого Колонка Из ТЗ.Колонки Цикл МассивТипов = Новый Массив; МассивТипов.Добавить(Колонка.ТипЗначения); НоваяКолонка = Новый РеквизитФормы (Колонка.Имя, Новый ОписаниеТипов (МассивТипов), "ТаблицаВыгрузки"); МассивРеквизитов.Добавить (НоваяКолонка); КонецЦикла; ИзменитьРеквизиты (МассивРеквизитов); ЗначениеВРеквизитФормы (ТЗ, "ТаблицаВыгрузки"); надо вместо запроса - взять названия колонок из массива строк Для каждого Колонка Из ЗаголовкиМассивСтрок Цикл МассивТипов = Новый Массив; йй = Новый ОписаниеТипов ("Строка"); МассивТипов.Добавить(йй); НоваяКолонка = Новый РеквизитФормы (Колонка, Новый ОписаниеТипов (МассивТипов), "ТаблицаВыгрузки"); МассивРеквизитов.Добавить (НоваяКолонка); КонецЦикла; Ошибка при вызове конструктора (РеквизитФормы) НоваяКолонка = Новый РеквизитФормы (Колонка, Новый ОписаниеТипов (МассивТипов), "ТаблицаВыгрузки"); по причине: Недопустимое значение параметра (параметр номер '1') почему так то? Новый РеквизитФормы(<Имя>, <Тип>, <Путь>, <Заголовок>, <СохраняемыеДанные>) Параметры: <Имя> (обязательный) Тип: Строка. Имя реквизита. <Тип> (обязательный) Тип: ОписаниеТипов. Первый параметр, Колонка - строка Научите как правильно делать? Я уже и без массива пробовал, просто строкой, и еще всякоразно. Один фиг никак не догоню (((( |
|||
1
oleg_prg
12.05.14
✎
17:34
|
лови - вот накидал обработку - делает кнопки и таблицу программно, думаю там найдешь ответ )
http://yadi.sk/d/VMmro_n6PxEfp |
|||
2
nAPACEHAK
12.05.14
✎
18:07
|
(1) спс
|
|||
3
nAPACEHAK
12.05.14
✎
18:15
|
(1) Премного благодарен
Всё понятно и доступно :) |
|||
4
nAPACEHAK
13.05.14
✎
10:59
|
Все равно осталось немного непонятно, когда вернулся к массиву
Элемент1 = Новый РеквизитФормы("Поле1",Новый ОписаниеТипов("Строка"),Элементы.ДанныеТЗ.Имя); теперь в конструктор передаем первым параметром строку из массива Для каждого СтрЗаг Из Заголовки Цикл Элемент = Новый РеквизитФормы (СтрЗаг, Новый ОписаниеТипов ("Строка"), Элементы.ДанныеТЗ.Имя); получаем Ошибка при вызове конструктора (РеквизитФормы) Элемент = Новый РеквизитФормы (СтрЗаг, Новый ОписаниеТипов ("Строка"), Элементы.ДанныеТЗ.Имя); по причине: Недопустимое значение параметра (параметр номер '1') Почему так то??? что в 1 случае что во 2 - в 1м параметре "строка" |
|||
5
nAPACEHAK
13.05.14
✎
11:12
|
Для каждого СтрЗаг Из Заголовки Цикл
Стр = СтрЗаг; Сообщить (ТипЗнч (Стр)); Элемент = Новый РеквизитФормы (Стр, Новый ОписаниеТипов ("Строка"), Элементы.ДанныеТЗ.Имя); мКолонки.Добавить(Элемент); КонецЦикла; на первой же итерации, после сообщить - строка - на конструкторе ошибка хотя, без цикла - Стр = "СтрЗаг"; Сообщить (ТипЗнч (Стр)); Элемент = Новый РеквизитФормы (Стр, Новый ОписаниеТипов ("Строка"), Элементы.ДанныеТЗ.Имя); мКолонки.Добавить(Элемент); ошибки нет |
|||
6
hhhh
13.05.14
✎
11:21
|
Сообщить (Стр); ???
может строка сама по себе дебильная. |
|||
7
hhhh
13.05.14
✎
11:25
|
(6) заголовки же вообще могут быть по 100 символов, с пробелами и всякими кавычками. Зачем вы заголовок в имя фигачите?
|
|||
8
nAPACEHAK
13.05.14
✎
11:33
|
(6) да это я уже лбом бъюсь. Просто что бы вывела тип значения. Посмотреть что в конструктор передается
(7) Уже думал. Например, Лев (Стр, 5) выдает ту же самую ошибку Для Ш = 0 По Заголовки.Количество () Цикл Стр = "_"+Ш; //[Ш]; так работает |
|||
9
nAPACEHAK
13.05.14
✎
12:11
|
Для Ы = 1 по Столбцов Цикл
СтрЗаголовок = СокрЛП (Э.Sheets(ЭНачЛист).Cells (1, Ы).Text); Заголовки.Добавить(Строка (СтрЗаголовок)); КонецЦикла; Массив заполняется так. Может тут чего? Потому что если Ф = Новый Массив; Ф.Добавить("й"); Ф.Добавить("Ц"); Ф.Добавить("Ы"); мКолонки = Новый Массив; Для Ш = 0 По Ф.Количество ()-1 Цикл Стр = Ф.Получить(Ш); Элемент = Новый РеквизитФормы (Стр, Новый ОписаниеТипов ("Строка"), Элементы.ДанныеТЗ.Имя); мКолонки.Добавить(Элемент); то так заполняется Но ведь иэ экселя тоже ведь текстовый массив получается в чем разница? Вроде как и там и там одинаковые массивы строк |
|||
10
nAPACEHAK
13.05.14
✎
13:58
|
Всё. Победил. Мой косяк был.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |