1С: Запросы. Временные таблицы

Запросы. Временные таблица

Оглавление (нажмите, чтобы раскрыть)

Создание и использование временных таблиц в запросе

Пример создания временной таблицы с выборкой данных
//Помещаем текущие цены во временную таблицу
//и выбираем данные из временной таблицы
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Номенклатура.Наименование КАК Наименование,
    |   Цена
    |ПОМЕСТИТЬ ТекущиеЦены
    |ИЗ
    |   РегистрСведений.Цены.СрезПоследних;
    |
    |ВЫБРАТЬ
    |   Наименование,
    |   Цена
    |ИЗ
    |   ТекущиеЦены";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование +
      ": " + Выборка.Цена);
КонецЦикла;

Таблица из запроса

Пример создания временной таблицы с последующей выборкой данных
//Помещаем текущие цены во временную таблицу
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Номенклатура.Наименование КАК Наименование,
    |   Цена
    |ПОМЕСТИТЬ ТекущиеЦены
    |ИЗ
    |   РегистрСведений.Цены.СрезПоследних";

Запрос.Выполнить();

//Выбираем данные из временной таблицы
ЗапросВТ = Новый Запрос;
ЗапросВТ.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросВТ.Текст =
    "ВЫБРАТЬ
    |   Наименование,
    |   Цена
    |ИЗ
    |   ТекущиеЦены";

Выборка = ЗапросВТ.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование +
        ": " + Выборка.Цена);
КонецЦикла;

Таблица из таблицы значений

Пример создания временной таблицы из таблицы значений с последующей выборкой данных
//заполняем таблицу значений
Цены = Новый ТаблицаЗначений();
Цены.Колонки.Добавить("Товар",
    Новый ОписаниеТипов("Строка"));
Цены.Колонки.Добавить("Цена",
    Новый ОписаниеТипов("Число"));

Товар = Цены.Добавить();
Товар.Товар = "Бензин";
Товар.Цена = 40.5;
Товар = Цены.Добавить();
Товар.Товар = "Керосин";
Товар.Цена = 42;

//загружаем таблицу значений в менеджер временных таблиц
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
    "ВЫБРАТЬ
    |   *
    |ПОМЕСТИТЬ ТекущиеЦены
    |ИЗ
    |   &Цены КАК Цены";

Запрос.УстановитьПараметр("Цены", Цены);
Запрос.Выполнить();

//Выбираем данные из временной таблицы
ЗапросВТ = Новый Запрос;
ЗапросВТ.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросВТ.Текст =
    "ВЫБРАТЬ
    |   Товар,
    |   Цена
    |ИЗ
    |   ТекущиеЦены";

Выборка = ЗапросВТ.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Товар +
        ": " + Выборка.Цена);
КонецЦикла;
Ключи: | |