Имя: Пароль:
1C
1С v8
Можно ли таблицу значений поместить в временную таблицу запроса?
,
0 AlexSmirnov272
 
13.11.13
14:10
Добрый день!

Имеется таблица значений состоящая из двух колонок, тип первой колонки - число, тип второй - таблица значений.

Можно ли такую таблицу значений поместить во временную таблицу запроса?
1 Пират
 
13.11.13
14:11
Можно, разрешаю
2 Sabbath
 
13.11.13
14:12
(0) "выбрать * поместить ВТ из &ТЗ КАК ТЗ"
3 Sabbath
 
13.11.13
14:13
ну а &ТЗ соответственно параметр запроса
4 Sammo
 
13.11.13
14:14
Как планируете обращаться в запросе к значениям второй колонки? (которая ТЗ)
5 Sabbath
 
13.11.13
14:14
а, ну суть вопроса про тип колонки ТЗ? Имхо да, не проверял
6 AlexSmirnov272
 
13.11.13
14:15
Функция ПолучитьВторуюТЗ()
    МассивЧ = Новый Массив;
    МассивЧ.Добавить(Тип("Число"));
    ТЗ2 = Новый ТаблицаЗначений;
    ТЗ2.Колонки.Добавить("Колонка21",Новый ОписаниеТипов(МассивЧ, , ,Новый КвалификаторыЧисла(12,3)));
    ТЗ2.Колонки.Добавить("Колонка22",Новый ОписаниеТипов(МассивЧ, , ,Новый КвалификаторыЧисла(12,3)));
    СтрокаТЗ2 = ТЗ2.Добавить();
    СтрокаТЗ2.Колонка21 = 211;
    СтрокаТЗ2.Колонка21 = 221;
    СтрокаТЗ2 = ТЗ2.Добавить();
    СтрокаТЗ2.Колонка21 = 212;
    СтрокаТЗ2.Колонка21 = 222;
    Возврат ТЗ2;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
    МассивЧ = Новый Массив;
    МассивЧ.Добавить(Тип("Число"));
    
    РезультатНом = Новый ТаблицаЗначений;
    РезультатНом.Колонки.Добавить("Колонка1",Новый ОписаниеТипов(МассивЧ, , ,Новый КвалификаторыЧисла(12,3)));
    РезультатНом.Колонки.Добавить("Колонка2",Новый ОписаниеТипов("ТаблицаЗначений"));
    Для а=1 По 2 Цикл
        СтрокаТЗ = РезультатНом.Добавить();
        СтрокаТЗ.Колонка1 = а;
        СтрокаТЗ.Колонка2 = ПолучитьВторуюТЗ();
    КонецЦикла;
    Запрос1 = Новый Запрос;
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    Запрос1.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос1.Текст =
    "ВЫБРАТЬ
    |    РезультатНом.Колонка1 КАК Колонка1,
    |    РезультатНом.Колонка2 КАК Колонка2
    |ПОМЕСТИТЬ ВТДанные
    |ИЗ
    |    &РезультатНом КАК РезультатНом";
    Запрос1.УстановитьПараметр("РезультатНом",РезультатНом);
    Запрос1.Выполнить();
    Запрос1.Текст =
    "ВЫБРАТЬ
    |    ВТДанные.Колонка1 КАК Колонка1,
    |    ВТДанные.Колонка2 КАК Колонка2
    |ИЗ
    |    ВТДанные КАК ВТДанные";
    Результат1 = Запрос1.Выполнить().Выгрузить();
    МенеджерВТ.Закрыть();

КонецПроцедуры
7 Рэйв
 
13.11.13
14:15
(0)Можно, только колонки должны быть типизированные
8 AlexSmirnov272
 
13.11.13
14:16
они типизированы
9 Пират
 
13.11.13
14:16
(6) Это ты за 5 минут написал на основе ответов в теме?
Господа, это тролль!!!
10 ДенисЧ
 
13.11.13
14:17
Нет. ТЗ в тз оно тебе не даст.
11 palpetrovich
 
13.11.13
14:18
(4) +1
12 Sabbath
 
13.11.13
14:26
проверил даже

{Форма.Форма.Форма(65)}: Ошибка при вызове метода контекста (Выполнить)
    Запрос1.Выполнить();
по причине:
{(3, 5)}: Тип не может быть выбран в запросе
<<?>>РезультатНом.Колонка2 КАК Колонка2

Короче, низя
13 palpetrovich
 
13.11.13
14:27
(12) спасибо, сэкономил мне время ...я тоже было кинулся проверять :)
14 Sabbath
 
13.11.13
14:28
(13) да тупо скопипастил код (6) в свою готовую обработку для тестов всякой фигни и запустил))
15 AlexSmirnov272
 
13.11.13
14:45
Недочет от 1С ))
16 Sammo
 
13.11.13
15:04
Нет ответа на 4. Так что недочет в архитектуре, имхо
17 Фокусник
 
13.11.13
15:08
(6) Зачем МенеджерВременныхТаблиц, делай через пакетный запрос
18 elCust
 
13.11.13
15:08
Не забудь, что для временных таблиц агрегатные функции не работают типа ИМЕЮЩИЕ, СГРУППИРОВАТЬ, ИТОГИ ПО
19 AlexSmirnov272
 
13.11.13
15:29
(17) это просто пример
20 AlexSmirnov272
 
13.11.13
15:33
(16) к (4) мне не нужны в запросе колонки второй ТЗ.
21 AlexSmirnov272
 
13.11.13
15:36
(16) к (4) мне они нужны после Запрос1.Выполнить().Выбрать()
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.