Сравнить пакет запросов с промежуточными данными и без них

Учебные задачи

В обычном пакете создание временной таблицы возвращает число помещённых строк; специальный метод возвращает сами строки.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все три запроса образуют один пакет: создание, чтение, уничтожение только собственной ВТПакет.

  2. Отдельный МенеджерВременныхТаблиц здесь не нужен: таблица используется и уничтожается внутри одного пакета.


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ""Книга"" КАК Название, 3 КАК Количество
|ПОМЕСТИТЬ ВТПакет;
|ВЫБРАТЬ Название, Количество ИЗ ВТПакет;
|УНИЧТОЖИТЬ ВТПакет";
ОбычныйПакет = Запрос.ВыполнитьПакет();
Сообщить(ОбычныйПакет.Количество() = 3);
ЧислоПомещённыхСтрок = ОбычныйПакет[0].Выгрузить();
Сообщить(ЧислоПомещённыхСтрок.Количество() = 1);
Сообщить(ЧислоПомещённыхСтрок[0][0] = 1);
Товары = ОбычныйПакет[1].Выгрузить();
Сообщить(Товары[0].Название = "Книга");
Сообщить(ОбычныйПакет[2] = Неопределено);
ПакетСДанными = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
ПромежуточныеТовары = ПакетСДанными[0].Выгрузить();
Сообщить(ПромежуточныеТовары.Колонки.Найти("Название") <> Неопределено);
Сообщить(ПромежуточныеТовары[0].Название = "Книга");
Сообщить(ПромежуточныеТовары[0].Количество = 3);
Сообщить(ПакетСДанными[2] = Неопределено);

Разбор по шагам

  1. ВыполнитьПакет возвращает три позиции массива по порядку операторов, индексы 0–2.

  2. Для ПОМЕСТИТЬ обычный метод даёт технический результат с числом строк, а не товарные колонки.

  3. Для ВЫБРАТЬ обе версии дают обычный РезультатЗапроса; УНИЧТОЖИТЬ даёт Неопределено.

  4. Повторно выполняем независимый пакет специальным методом и видим колонки и значения созданной таблицы на позиции 0.

Как проверить результат

  1. Обычный пакет имеет длину 3; его первый результат сообщает одну помещённую строку.

  2. Специальный пакет на позиции 0 содержит Название=Книга и Количество=3.

  3. Обе позиции уничтожения равны Неопределено.

Ожидаемый результат

Различены технический счётчик ПОМЕСТИТЬ и промежуточные данные этого же оператора.

На что обратить внимание

  1. Промежуточные данные большого пакета расходуют память; не включайте их без необходимости.

  2. Перед Выгрузить проверяйте смысл позиции: Неопределено после УНИЧТОЖИТЬ не имеет такого метода.

  3. Это не транзакция записи объектов информационной базы.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.