Как передать таблицу значений в запрос

Описание методики передачи таблицы значений в качестве параметра
Часто бывает необходимость передать в запрос в качестве параметра таблицу значений. Осуществляется это с помощью метода Запрос.МенеджерВременныхТаблиц. Поясню это на конкретном примере загрузки данных из электронных накладных. В качестве данных для поиска выступают штрихкоды.

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


//Затем заполняем значения таблицы через метод ТаблицаЗначений.Добавить()
После заполнения таблицы значений создаем МенеджерВременныхТаблиц:

Запрос=Новый Запрос;
 Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
 МенеджерТаблицыДанных = Запрос.МенеджерВременныхТаблиц;
 Запрос.Текст="ВЫБРАТЬ
 |*
 |ПОМЕСТИТЬ ВТ_ТаблицаДанных
 |ИЗ
 |&ТЗ КАК ТЗ";
 Запрос.УстановитьПараметр("ТЗ",ТаблицаДанных);
 Запрос.Выполнить();

После выполнение этого запроса можно переходить к запросу непосредственно к базе данных:

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


И в окончании обработать результат запроса, например через цикл:

РезультатЗапроса=ЗапросКбазеДанных.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
    Если РезультатЗапроса.Номенклатура <> Null Тогда

    Иначе
         Сообщить("Штрихкод " + РезультатЗапроса.Штрихкод + " в базе не обнаружен!");
    КонецЕсли;
КонецЦикла;

Таким образом мы сократили время обращения к базе и получили данные в удобном для нас виде.

Ведущий 1С программист

Тельнова Яна

Вернуться обратно
ОПУБЛИКОВАТЬ В СОЦ.СЕТЯХ
Моя корзина
Отложенные
Недоступно
Избранное

Ваша корзина пуста, для оформления заказа перейдите в каталог и выберите интересующие вас товары

Перейти в каталог

Перейти в каталог

Товары, недоступные к заказу

Добавляйте ваши товары в избранное

Перейти в каталог

Избранное

Добавляйте ваши товары в избранное

Перейти в каталог