Имя: Пароль:
1C
1С v8
Возможно ли в запрос передать ТаблицаЗначений?
0 oleg_prg
 
28.08.12
12:09
Всем доброго дня, нужна консультация.
Возможно ли в запрос передать ТаблицаЗначений?
То что массив можно, я в курсе, а вот ТаблицуЗначений бы...

Спасибо!
1 mikecool
 
28.08.12
12:10
можно, через временную таблицу
2 pumbaEO
 
28.08.12
12:10
Да можно, изучай МенеджерВременныхТаблиц
3 mikecool
 
28.08.12
12:11
(2) да и без него можно, если пакетом
4 oleg_prg
 
28.08.12
12:11
Можно пример, ПОЖАЛУЙСТА!!!
5 chelentano
 
28.08.12
12:12
(4) Запрос.УстановитьПараметр("ТЗ", ТЗ);
6 chelentano
 
28.08.12
12:12
(4) Запрос.Текст = "ВЫБРАТЬ ТЗ.Поле1 ИЗ &ТЗ КАК ТЗ";
7 oleg_prg
 
28.08.12
12:12
Вроде так и делал... Странно, наверно туплю, ща попробую еще раз
8 mikecool
 
28.08.12
12:13
Запрос.УстановитьПараметр("ТаблицаЗначений", ТаблицаЗначений);
Запрос.Текст = "
Выбрать поля Поместить _ВТ_ Из & ТаблицаЗначений;
....
"
учти - поля ТЗ должны быть типизированы
9 mehfk
 
28.08.12
12:13
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
   
Запрос.Текст="
|ВЫБРАТЬ
|    Табл.Сумма КАК Сумма
|ПОМЕСТИТЬ ТаблицаДляЗагрузки
|ИЗ
|    &ТаблТ КАК Табл    
|";

Запрос.УстановитьПараметр("ТаблТ",ТаблицаДляЗагрузки);    
Запрос.Выполнить();
10 Reset
 
28.08.12
12:13
(0)  букву Я нажми, там дофига примеров
11 Wobland
 
28.08.12
12:13
(6) не взлетит же. из &ТЗ надо в таблицу выбирать, а уже потом...
12 chelentano
 
28.08.12
12:14
(11) ну да, ну да :) наспех писал, в заблуждение ввёл, приношу извинения перед ТС
13 mikecool
 
28.08.12
12:15
(9) ну вот нафига менеджер? его передавать другому запросу разве надо будет?
14 oleg_prg
 
28.08.12
12:27
Всем спасибо огромное, все получилось.

Вот накидал рабочий код

ТЗ = новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("Поле1",Новый ОписаниеТипов("Число"));
   ТЗ.Колонки.Добавить("Поле2",Новый ОписаниеТипов("Строка"));
   ТЗ.Колонки.Добавить("Поле3",Новый ОписаниеТипов("Строка"));
   
   Для А = 1 По 5 Цикл
       НС = ТЗ.Добавить();
       НС.Поле1 = А;
       НС.Поле2 = СокрЛП(А)+"Поле2";
       НС.Поле3 = СокрЛП(А)+"Поле3";
   КонецЦикла;
   
   
   Запрос = новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ *
   |ПОМЕСТИТЬ ТаблицаДляЗагрузки
   |ИЗ
   |    &ТЗ КАК Табл
   |;
   |
   |ВЫБРАТЬ * ИЗ ТаблицаДляЗагрузки";
   Запрос.УстановитьПараметр("ТЗ",ТЗ);
   ТТ = Запрос.Выполнить().Выгрузить();
15 Buster007
 
28.08.12
12:28
(13) потому что увидел он код где используется менеджер и тупо по памяти пишет не вникая...
16 Reset
 
28.08.12
12:30
(14) СокрЛП( заменить на Строка( для ясности, а так нормально
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший