понедельник, 8 августа 2016 г.

Простейший пример использования Временных Таблиц и Пакетных Запросов 1С (работает в УТ 10.3)

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

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

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

У меня ПЗ использует внешняя печатная форма ПакетныйЗапрос_Заказ (в папке Примеры и Инфостарт). В ВТ каждой номенклатуре присваивается числовое значение % НДС (актуально т.к. СтавкиНДС это перечисление).

Комментариев нет:

Отправить комментарий