«Использование пакетных запросов» – бесплатные материалы из курса «Разработка и оптимизация запросов в 1С:Предприятие 8.2 и 8.3»

О чем эта статья

В статье рассказывается о механизме пакетных запросов, реализованных в платформе «1С:Предприятие». Прочитав статью, вы узнаете:

  • Что такое пакетные запросы и для чего они нужны?
  • Как создать пакет запросов при помощи конструктора запросов?
  • Как вернуть массив результатов для каждого запроса из пакета?

Применимость

Материал актуален для текущих версий платформы «1С:Предприятие» редакции 8.3

Назначение пакета запросов

Платформа позволяет работать с пакетами запросов. Получаем возможность выполнить несколько запросов «за раз». В пакетном запросе тексты запросов разделяются символом «;» (точка с запятой).

Запросы исполняются последовательно, при этом временные таблицы, которые были созданы во время исполнения какого-либо запроса, будут существовать до окончания исполнения всего пакета запроса или до исполнения в пакете запроса, уничтожающего данную временную таблицу. Важное отличие от вложенного запроса заключается в том, что доступны результаты каждого запроса пакета отдельно.

Пакеты запросов позволяют достичь поэтапного выполнения запроса. Для этого в пакетном запросе сначала происходит создание временных таблиц, далее – их совместное использование (соединение, объединение, фильтры) для получения итогового результата запроса. Также важно отметить, что использование временных таблиц в пакетных запросах позволяет улучшить читаемость текста запроса.

Объемные запросы с завернутыми друг в друга вложенными запросами зачастую бывают достаточно сложными для восприятия. Но если переписать такой запрос с использованием временных таблиц, наглядность запроса может повыситься достаточно сильно. Применение пакета запросов с временными таблицами также может повысить производительность запроса.

Существуют методики оптимизации производительности запросов, основанные на замене вложенных запросов на временные таблицы.

Временная таблица может быть полезна, когда необходимо использовать одни и те же данные в большом запросе несколько раз, например, соединяя или объединяя с другими таблицами. При использовании вложенных запросов такие данные пришлось бы получать несколько раз при помощи одинаковых вложенных запросов, что, безусловно, сказалось бы и на читаемости текста, и на производительности.

Создание пакета запросов при помощи конструктора

Отдельные запросы, входящие в пакет, отделяются в тексте символом «;» (точка с запятой). Чтобы не разделять текст запроса вручную, можно использовать для этого конструктор запросов.
В конструкторе запросов есть отдельная закладка для пакетов запросов. Запросы в пакет можно добавлять при помощи соответствующей кнопки на командной панели, а также передвигать вверх или вниз.

Конструктор запроса

Визуальное отображение отдельных запросов – закладки в правой части конструктора, при помощи которых можно перейти к редактированию текста отдельного запроса. На этих закладках для временных таблиц выводятся имена, для запросов на выборку данных – «Запрос пакета 2» и т.п., на уничтожение – «– ИмяВТ».

Редактирование текста отдельного запроса

Также в списке таблиц базы данных появляются временные таблицы, созданные в рамках данного пакета. Однако это не означает, что временные таблицы хранятся в базе данных вместе со всеми остальными таблицами информационной базы.

Выполнение запросов пакета

Если объекту Запрос, исполняющему пакетный запрос, установлен менеджер временных таблиц, временные таблицы, которые не были уничтожены в рамках пакетного запроса, сохранятся в установленном менеджере.

В тексте пакетного запроса возможно использование и уничтожение временных таблиц, которые существовали в установленном менеджере временных таблиц на момент запуска пакета на исполнение.

Кроме метода Выполнить(), последовательно выполняющего все запросы пакета и возвращающего результат последнего запроса в пакете, в платформе существует еще один метод – ВыполнитьПакет().

Этот метод последовательно выполняет все запросы и возвращает массив результатов для каждого запроса из пакета в последовательности расположения запросов в тексте пакета.

Результатом выполнения запроса на уничтожение временной таблицы является значение Неопределено, которое также помещается в массив результатов.

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Бесплатные материалы курса по Запросам в PDF-формате

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF: Курсы-по-1С.рф – Материалы из курса по запросам – Использование пакетных запросов.pdf

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

P.S.

Понимать, как работают запросы и уметь их строить - обязательный навык для всех, кто дорабатывает и внедряет 1С.

После курса Вы сможете:

  • Строить сложные запросы с несколькими источниками данных
  • Уверенно задействовать вложенные запросы и временные таблицы
  • Использовать встроенный язык для обработки результатов запроса
  • Учитывать особенности соединений и объединений нескольких таблиц.
  • Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.
Программа, стоимость, условия и регистрация в группу: «Запросы в 1С 8.3, Базовый курс (с нуля до уровня Специалист по платформе)» Для всех, кто внедряет и дорабатывает 1С.

Комментарии / обсуждение (13):

  1. Влад

    Интересует какие данные будут содержаться в наборе при использовании пакетных запросов

    • Анна Бортникова

      Здравствуйте! Ответ на данный вопрос уже есть в комментариях. Посмотрите, пожалуйста, все комментарии на текущей странице.

  2. Иван

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

    • Анна Бортникова

      Здравствуйте, Иван! Ответ на Ваш вопрос есть в комментариях в самом низу страницы. Курс «Разработка и оптимизация запросов в 1С:Предприятие 8.2 и 8.3» снят с продаж, так как его материалы утратили актуальность. Но в ближайшее время ожидается старт продаж нового курса по Запросам. Следите за новостями на нашем сайте https://курсы-по-1с.рф/blog/

  3. Ася

    Где узнать про какие данные будут содержаться в наборе при использовании пакетных запросов

    • Василий Ханевич

      Добрый день!
      Содержимое временных таблиц можно узнать при помощи консоли запросов. Например, в консоли с сайта ИТС есть кнопка Выполнить запрос с временными таблицами:
      Консоль
      При нажатии будет выведено содержимое всех временных таблиц и запросов на выборку данных:
      Результаты
      Если же Вы спрашиваете про систему компоновки данных, то в запросе набора данных можно использовать временные таблицы, но последним запросом пакета должен идти запрос на выборку данных. Это необходимо, чтобы можно было вывести данные (результат) в отчет.
      Известно, что результатом запроса на создание временной таблицы является таблица с одной колонкой Количество и одной строкой, где будет указано количество записей, помещенных во временную таблицу. Поэтому последним запросом пакета должен быть именно запрос на выборку данных.

  4. Максим

    Интересует какие данные будут содержаться в наборе при использовании пакетных запросов

    • Василий Ханевич

      Добрый день!
      Предполагаю, что идет речь о наборе данных в схеме компоновки.
      В таком случае в пакете последний запрос должен быть на выборку данных (а не на создание или уничтожение временной таблицы):
      Конструктор запроса
      Это обеспечит получение данных из базы, которые можно будет вывести в отчет на СКД.
      Таким образом, в запросе создаем временные таблицы, используем их в запросе на выборку. При помощи консоли компоновок или консоли запросов можно посмотреть содержимое временных таблиц, использованных в пакетном запросе.

    • Василий Ханевич

      Вот буквально на днях видел конструкцию УНИЧТОЖИТЬ в запросе для заполнения декларации по налогу на имущество организаций. Также уничтожение временных таблиц встречается в многоэтажных запросах для расчета заработной платы. Еще встречал в правилах конвертации данных для переноса остатков по ОС из Бухгалтерии 1.6 в 2.0. А в конфигурации УПП 1.3 УНИЧТОЖИТЬ вообще встречается более 300 раз (при расчете себестоимости, зарплатных операциях, переоценке валютных средств, отчетных формах и т.д.).

      • andr_andrey

        “Убрать за собой” – это хорошая практика в принципе, меньше растут темплоги, меньше утечек памяти.

    • Сергей Онучин

      Важны случаи, когда нельзя обойтись без уничтожения временных таблиц. Это будет необходимо, если запрос с временными таблицами выполняется в цикле (о, ужас!). На самом деле, если мы итерациями хотим получить решение, на каждом витке проверяя, насколько мы приблизились к нему, то именно в этом случае мы будем использовать предыдущий результат выполнения запроса для получения следующего. То есть из ВремТаб1 получаем ВремТаб2, а из ВремТаб2 – снова ВремТаб1. И здесь надо уничтожить временную таблицу, прежде чем получать таблицу с тем же именем.

      • Василий Ханевич

        Дополню только, что на практике подобный способ выполнения запроса с временными таблицами в цикле можно увидеть, например, в типовой конфигурации УПП 1.3 при заполнении регламентированной формы РегламентированныйОтчетИмущество. Уничтожение временной таблицы производится, чтобы на следующем витке цикла не получилась временная таблица с таким же именем.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

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

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.