Имя: Пароль:
1C
 
Динамический список по программно созданной таблице значений. Возможно ли?
0 Heckfy
 
28.07.17
14:49
Попробовал:

ВЫБРАТЬ
ТЗ.К1,
ТЗ.К2
ПОМЕСТИТЬ Таблица
ИЗ
&ТЗ КАК ТЗ
;
ВЫБРАТЬ
Таблица.К1,
Таблица.К2
ИЗ
Таблица КАК Таблица

получил:

Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(6, 1)}: Неверные параметры "ТЗ"
<<?>>&ТЗ КАК ТЗ

Вообще, возможен ли сабж в природе?

ЗЫ: Структура ТЗ заранее не известна.
ЗЫЗЫ: Платформа: 1С:Предприятие 8.3 (8.3.10.2466)
1 apokrit
 
28.07.17
14:50
Нет
2 Dvoe4nik
 
28.07.17
14:52
(0) выбрать * поместить ВтТЗ из &ТЗ как ТЗ;
выбрать * из ВтТЗ как ТЗ  все норм отбирает , ток параметр поставь "ТЗ"- твоя ТЗ
3 mistеr
 
28.07.17
14:52
Еще один любитель динамических списков. ЗАЧЕМ?!!

P.S.

>Структура ТЗ заранее не известна.

Ну перед запросом-то известна? Все колонки должны быть типизированы.
4 Diman000
 
28.07.17
14:53
Зачем нужен именно дин. список?
Динамическое добавление реквизитов формы и элементов управления возможно, используй это.
5 Heckfy
 
28.07.17
14:58
(2) в дин списке ошибка из сабжа. :(
(3) Ну, уже перед самим запросом известна. На ее основе и текст запроса формируется.
(4) Пробовал. В ТЗ очень много записей. Отваливается по нехватке памяти на сервере (32 ГБ).
6 Buster007
 
28.07.17
15:00
сделай странички типа как в поисковиках )
7 Heckfy
 
28.07.17
15:00
(4) (5) +

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    МассивТипаВыбора = Новый Массив;
    МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений"));
    ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);
    МассивРеквизитов = Новый Массив;
    МассивРеквизитов.Добавить(Новый РеквизитФормы("ТаблицаРасписания", ОписаниеТипаВыбора, "", "ТЗН"));
    ТЗ=Объект.Ссылка.ТЗКолонки.Получить(); //Получаем ТЗ из Хранилища значений
    
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,"ТаблицаРасписания",Колонка.Заголовок));
    КонецЦикла;
    ИзменитьРеквизиты(МассивРеквизитов);      
    ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"));
    ТаблицаПолейВыбора.ПутьКДанным = "ТаблицаРасписания";
    ТаблицаПолейВыбора.Отображение = ОтображениеТаблицы.Список;
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаПолейВыбора);      
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.ПутьКДанным = "ТаблицаРасписания." + Колонка.Имя;
        НовыйЭлемент.Ширина = 10;
    КонецЦикла;
    ЗначениеВРеквизитФормы(ТЗ, "ТаблицаРасписания");
    
КонецПроцедуры
8 Diman000
 
28.07.17
15:11
Столько данных и неизвестны колонки? Хм...
9 lodger
 
28.07.17
15:14
(5) а какая задача? вы уверены, что дин.список не отвалится по памяти?
10 lodger
 
28.07.17
15:14
ну и вообще, нафига пользователю СТОЛЬКО данных?
11 Вафель
 
28.07.17
15:15
так памяти то меньше не съест, ибо с тз нужно все равно все выгрузить
12 Dvoe4nik
 
28.07.17
15:17
МБ Пользователю одну колонку и порционно по 100+- записей?
13 lodger
 
28.07.17
15:19
лучше посидите с аналитиками и родите более вменяемый аналитический инструмент, чем шарашить запросы способные потушить сервер по памяти.
14 mistеr
 
28.07.17
15:22
(5) >В ТЗ очень много записей. Отваливается по нехватке памяти на сервере

Откуда данные? И почему бы их не загрузить в базу, если уж пользователям нужно с ними работать (а нужно ли)?