Консоль запросов как сделать выборку

Добавил пользователь Евгений Кузнецов
Обновлено: 28.09.2024

Универсальная внешняя обработка для создания, редактирования и отладки запросов, с возможностью обработки таблицы результатов произвольными алгоритмами на языке 1С. Выгрузка результатов запроса в таблицу или дерево значений, включая временные таблицы и запросы пакета. Формирование запроса для консоли в отладчике, включая временные таблицы и параметры. Версия 1.1.0.77 от 02.12.2021

СДРКонсольЗапросовХ – инструмент для программиста, позволяющий создавать и отлаживать запросы для баз 1С 8.3, а также обрабатывать результаты запросов (тонкий, толстый, web клиент). Не зависит от конкретной конфигурации, никаких БСП.

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

Видео инструкции по работе с консолью можно посмотреть здесь

Если Вас заинтересовала эта обработка, то рекомендую обратить внимание на Навигатор по базе данных 1С 8.3

В плане интерфейса использована классическая схема: дерево запросов, запрос и результаты запроса.

Особенности

Работа с деревом запросов

  • Запросы хранятся в виде дерева (как обычно)
  • Можно сохранить или загрузить все дерево запросов (в файл или из файла)
  • Можно сохранить отдельную веточку запросов в файл
  • Можно подгрузить в отдельную ветку запросов запросы из файла
  • Можно копировать запросы (вместе с параметрами и таблицами МВТ) или перетаскивать их в другие ветки дерева
  • ВАЖНО: корень дерева не предназначен для работы с запросом

Работа с текстом запроса

  • Поддержка пакета запросов
  • Можно выполнить весь пакет, либо только выделенную часть пакета
  • В поля выборки можно вставить специальное поле, чтобы вместо ссылки выводился GUID
  • В пакет запроса можно вставить специальный разделитель, чтобы выполнение пакета остановилось на этом месте
  • Выделенную часть запроса можно закомментировать, раскомментировать или преобразовать в строку для вставки в код скрипта 1С

Параметры запроса

  • В параметрах запроса кроме стандартных, может быть таблица значений, граница, момент времени, уникальный идентификатор
  • В параметре можно указать битую ссылку (ссылку не несуществующий объект)
  • В качестве параметру можно указать выражение на языке 1С, которое будет вычисляться перед выполнением запроса
  • Можно скопировать выбранные параметры из одного запроса в другой
  • Можно редактировать таблицу значений, являющуюся параметром запроса

Таблицы МВТ

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

Результаты запроса

  • Результаты запроса оформляются в виде таблицы значений или дерева значений
  • Временные таблицы пакета запроса также оформляются в виде таблицы значений (по желанию)
  • Есть возможность показывать итоги по числовым колонкам таблицы результатов или временных таблиц
  • Есть возможность показывать итоги для выделенных строк по числовым колонкам таблицы результатов или временных таблиц
  • Кликнув мышкой по ячейки результирующей таблицы значений можно открыть значение в стандартной форме (если там находится ссылка на объект)
  • Можно открыть значение ячейки таблицы в специальной форме, предоставляющей доступ ко всем реквизитам объекта (Редактор объектов информационной базы 8.3 – встроен в консоль запросов). Как самостоятельно встроить более новую версию "Редактора объектов" описано здесь.
  • В специальной форме можно открыть не только ссылочный объект, но и хранилище значения (поддерживаются массив, список значений, структура, соответствие, таблица значений, табличный и текстовый документ)
  • Можно загрузить таблицу результатов запроса в параметр запроса либо сохранить в файл
  • Можно загрузить таблицу результатов запроса в менеджер временных таблиц запроса
  • Можно выгрузить ссылочные объекты из произвольной колонки результатов запроса в формате XML (для последующей загрузки в базу). Для обмена данными можно использовать файлы или строку, передаваемую через буфер обмена.

Сохранение запросов из отладчика

  • Есть возможность остановиться в отладчике и сохранить запрос с параметрами и временными таблицами в файл, который затем можно подгрузить в консоль для отладки.
  • Есть возможность остановиться в отладчике и сформировать XML-представление запроса с параметрами и временными таблицами, из которго в консоли можно сформировать запрос для отладки (передается через буфер обмена без использования промежуточных файлов)
  • Функция общего модуля для сохранения запроса из отладчика прилагается, пример вызова: омОтладка.СохранитьЗапросДляСДРКонсолиХ(Запрос, "D:\1Cv8\Запросы\000") или омОтладка.СохранитьЗапросДляСДРКонсолиХ(Запрос) - формирует XML-представление запроса
  • В функцию сохранения запроса в качестве первого параметра можно передать Запрос или МакетКомпоновкиДанных

Функция для перехвата запроса из отладчика (актуальный текст функции приведен на закладке "Настройки" обработки)

Видео инструкции по работе с консолью можно посмотреть здесь

Некоторые примеры скриншотов


Здесь в том числе приведен текст функции общего модуля для перехвата запроса в отладчике


Просмотр и редактирование параметра типа "ТаблицаЗначений"


Если использовать нестандартную форму для выбора типа параметра, то выбор организован более интелектуально - типы объектов не сваливаются в одну кучу, а разбиты по категориям


Просто в псевдониме поля надо добавить строку "__GUID__" (во временных таблицах и при выгрузке в дерево значений игнорируется)

Конструктор запросов в 1С 8.3 и 8.2 — мощнейший инструмент разработки. Он позволяет составить текст запроса при помощи специальной визуальной среды. Таким образом, чтобы создать запрос 1с не обязательно знать встроенный язык запросов, достаточно ориентироваться в не сложном и интуитивно понятном интерфейсе конструктора.

Конструктор запросов представляет из себя набор вкладок, каждая из которых отвечает за свою часть запроса. Так заполняя вкладку Таблицы и поля мы выбираем таблицы из которых запрос 1с будет получать данные и поля этих таблиц необходимые для решения конкретной задачи. Заполняя в кладку Условия мы накладываем условия на выбранные таблицы, для того чтобы выбрать из них только нужные нам данные и так далее.

Для того чтобы вызвать конструктор запросов 1с 8 в программном коде необходимо:

  • Создать новый запрос
  • Задать пустую строку текста запроса
  • Поставить курсор мышки между кавычками, нажать правую кнопку мыши. В открывшемся контекстном меню выбрать пункт Конструктор запроса и ответить Да на вопрос о создании нового запроса. Если текст запроса уже записан, то необходимо щелкнуть на любом месте внутри него и вызвать конструктор;

Рассмотрим на небольших примерах с возрастающей сложностью все основные вкладки конструктора запросов. Такой подход позволит начинающему программисту 1с более эффективно изучить конструктор и все его возможности. Для примеров будем использовать конфигурацию Бухгалтерия 3.0.

Урок №1. Конструктор запросов — простейший пример использования.

Задача: написать запрос к справочнику номенклатура, выбрать всю номенклатуру справочника.

Новые вкладки: Таблицы и поля.

Для начала создания запроса создадим новый запрос и вызовем конструктор (как это делается написано несколькими абзацами выше). После этого откроется окно конструктора на вкладке Таблицы и поля.

Теоретическая часть урока №1

Вкладка Таблицы и поля состоит из трех разделов:

База данных. В данном разделе представлены все таблицы базы данных, которые можно использовать для построения запроса;

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

Над разделом Таблицы присутствует ряд кнопок. Про большинство из них будет подробнее рассказано в следующих уроках. А пока дам только краткие пояснения.

  • Создать вложенный запрос (красная линия). Предназначена для создания нового вложенного запроса;
  • Создать описание временной таблицы (желтая линия). Позволяет задать имя временной таблицы, которая расположена вне данного запроса, также можно использовать для передачи в запрос таблицы значений;
  • Изменить текущий элемент (зеленая линия). Позволяет перейти в выделенный вложенный запрос, временную таблицу или описание временной таблицы;
  • Удалить текущий элемент (голубая линия). Удаляет выделенную таблицу из выбранных таблиц;
  • Заменить таблицу (синяя линия). Открывает диалог замены выделенной таблицы. Полезно, если вы неверно выбрали виртуальную таблицу регистра, так как происходит позиционирование на текущей выбранной таблице в списке.
  • Параметры виртуальной таблицы (фиолетовая линия). Открывает параметры виртуальной таблицы регистра.

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

Над разделом Поля присутствует ряд кнопок. Про создание полей при помощи произвольных выражений будет подробнее рассказано в следующих уроках. А пока дам только краткие пояснения.

  • Добавить (зеленая линия). Предназначена для добавления нового поля при помощи редактора произвольных выражений;
  • Изменить текущий элемент (красная линия). Позволяет изменить выделенное поле при помощи редактора;
  • Удалить текущий (синяя линия). Удаляет выделенное поле из списка.

Практическая часть урока №1

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

Приступим к созданию запроса по номенклатуре:

В итоге у нас получится запрос со следующим текстом:

В конструкторе также можно посмотреть текст запроса, который готов у вас на данном этапе написания. Для этого в нижней части окна есть специальная кнопка Запрос. После ее нажатия откроется окно просмотра / редактирования текста запроса. Для того чтобы вручную изменить запрос необходимо:


Иногда мне приходится сталкиваться с запросами в 1С. Чтобы столкновение происходило в наиболее легкой для меня форме, я написала шпаргалку.

  • В УТ 11 справа около пользователя значок меню > функции технического специалиста
  1. В конфигураторе в меню: Отладка>Поключение
  2. Выделить пользователя в подключенных предметах отладки, например, Администатор (тонкий клиент)
  3. Нажать кнопку "автоматическое подключение", в нем поставить галку "фоновые задания" и "ок"
  1. После выполнения запроса с созданием временной таблицы ставим точку останова и открываем для просмотра объект Запрос ( Shift+F9)
  2. Можно изменить Текст запроса (для теста)
  3. В поле "Выражение" пишем Запрос.Выполнить().Выгрузить()
  4. Кнопка Рассчитать - получаем таблицу значений с данными временной таблицы
  1. Запрос.МенеджерВременныхТаблиц.Таблицы[Индекс_Номер_Временной_Таблицы].ПолучитьДанные().Выгрузить()
  2. Запрос.МенеджерВременныхТаблиц.Таблицы.Найти( ).ПолучитьДанные().Выгрузить()
  1. посмотреть стоит ли консоль запросов (в УТ11: НСИ и администрирование > печатные формы, отчеты и обработки> дополнительные отчеты и обработки>консоль запросов)
  2. если не стоит, то скачать консоль запросов (разработана не мной, скачана с другого сайта, который тоже не разрабатывал, в комментах написано, что разработчик Чистов, спасибо ему большое) и добавить обработку из файла.


Заметные различия языка запросов и встроенного языка 1С становятся серьезной проблемой в процессе изучения программы. Пользователям, не обладающим достаточным опытом, приходится запоминать многочисленные операторы и области их применения. Эффективно решает эту проблему конструктор запросов 1С. Этот инструмент, встроенный в платформу 1С 8.3, облегчает работу с запросами и освобождает пользователя от дополнительной нагрузки.

Как применять конструктор запросов 1С

Воспользоваться конструктором 1С можно в специальных обработках или конфигураторе. Специальные обработки – это консоли запросов, позволяющие сохранить конфигурацию на поддержке. Для запуска конструктора потребуется однократный клик правой клавишей мыши в поле для создания кода или в модулях. Затем необходимо выбрать из списка нужный пункт.


В конфигураторе поочередно выполняются следующие действия:

  1. Переход в один из модулей.
  2. Выбор одного из двух пунктов в контекстном меню. Первый пункт открывает конструктор запроса. После взаимодействия с ним у пользователя остается только готовый текст запроса. Второй пункт помогает пользователю написать запрос и создает операторы, которые потребуются для его обработки и выполнения. Данный функционал способен ускорить процесс разработки бизнес-приложений, но не во всех случаях в этом есть необходимость.


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








Дополнительные функции конструктора запросов

Перечисленные ранее разделы конструктора необходимы для правильной настройки запроса на выборку данных для любой задачи. Но в отдельных случаях пользователь вынужден обращаться и к дополнительным настройкам конструктора. Чаще всего из этого списка задействована опция формирования пакетных запросов. Для ее активации нужно обратиться к заключительной вкладке конструктора запросов.


Пакет запросов требуется пользователю в тех случаях, когда появляется необходимость в получении нескольких выборок данных за одно обращение к базе или во время работы с временными таблицами. Это особенный вид таблиц с информацией, которые конструируются 1С в период выполнения запроса. В случае их использования они станут доступными в будущих обращениях в дереве конфигурации в первом разделе конструктора.




Невозможно безошибочно пользоваться функционалом и хорошо понимать принципы работы конструктора, не имея практического опыта. Чем больше пользователь работает с программой, тем быстрее его запросы становятся оптимальными. Специалистам, продолжающим создавать коды в текстовом виде, конструктор поможет быстро находить в операторах опечатки.

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

Читайте также: