Запрос почти всегда пишется не с нуля. Его нужно собрать, посмотреть на данные, понять, почему он тормозит, а иногда — сначала выяснить, откуда он вообще взялся. Обычная консоль умеет первое и молчит про остальное.
Инженерная консоль запросов сделана так, чтобы вся эта работа шла в одном окне. Внешняя обработка, управляемые формы, в конфигурацию ничего ставить не нужно.
Главное окно: текст запроса, параметры, результат.
Подсказка появляется под курсором
Ctrl+Space — и прямо под словом открывается список: имена таблиц конфигурации, а после точки — поля той таблицы, что стоит за псевдонимом. Выбор стрелками, подстановка по Enter. Работает и с табличными частями документов, и с виртуальными таблицами регистров.
Мелочь, но именно из-за нее перестаешь лазить в конфигуратор за именем реквизита.
Подсказка полей прямо в месте ввода.
Проверка до выполнения
Кнопка «Проверить запрос» разбирает текст и показывает слабые места: выборка всех полей звездочкой, соединение с вложенным запросом, ПОДОБНО с процентом в начале шаблона, поля без псевдонима. К каждому замечанию — короткое объяснение, чем это грозит, и двойной клик, который ведет прямо на строку.
Если запрос все же не выполнился, строка с ошибкой подсвечивается сама.
Замечания с переходом на строку.
План выполнения и разбор
Консоль включает запись плана в технологический журнал сама — руками ничего настраивать не нужно. После выполнения запроса «План выполнения» показывает три вещи: вывод о том, что не так, сам план СУБД и запрос, который на самом деле ушел в базу.
Имена таблиц в плане переводятся в термины конфигурации: вместо _Document1092_VT10607 видно нормальное имя. Вывод пишется человеческим языком — например, что таблица читается целиком, потому что подходящего индекса нет, и что индексы в 1С добавляются не в СУБД, а в конфигураторе.
План выполнения с разбором.
Замер времени
Один прогон ничего не значит: первое выполнение всегда медленнее, план еще не в кэше. «Замер времени» гоняет запрос нужное число раз и показывает минимум, медиану, среднее, максимум и все замеры по порядку. Ориентироваться стоит на медиану — об этом там же и написано.
Десять прогонов: медиана и разброс.
Откуда пришел запрос
Знакомая ситуация: база тормозит, в журнале видно тяжелый запрос, а какой код его выполнил — непонятно. Конфигуратор для этого не нужен.
В меню «Производительность» есть «Технологический журнал»: кнопка «Начать запись» кладет настройку в личный каталог, дальше перезапуск программы, нужное действие — и «Прочитать журнал». В колонке «Откуда» видно модуль, номер строки и саму строку кода, откуда ушел запрос. Имя процедуры можно вписать в отбор, и останутся только ее запросы.
Запросы с указанием модуля и строки.
Запрос из отладчика — целиком
Когда запрос собирается кодом, переписывать его в консоль руками долго и легко ошибиться. Проще забрать.
В отладчике, в окне «Вычислить выражение», выполняется одна строка:
ЗначениеВФайл("D:\Обмен\запрос.xml", Новый Структура("Текст, Параметры", Запрос.Текст, Запрос.Параметры))
Дальше в консоли — «Запрос — Перехваченный запрос…», и текст с параметрами встают на свои места. Подключать консоль к конфигурации не нужно, предупреждение безопасности не появляется. Если нужны еще и временные таблицы, есть второй вариант вызова — через саму консоль, он описан во встроенной инструкции.
Если запросов много, точка останова внутри цикла сохранит их пачкой, а «Все перехваченные…» заберет весь каталог сразу и разложит по библиотеке.
Запрос в другой базе
Иногда данные нужно посмотреть не в текущей базе, а в соседней: сравнить справочники, проверить обмен, посмотреть, что у клиента. Консоль подключается к другой базе по COM-соединению — файловой или серверной.
Список подключений хранится в самой обработке, есть кнопка проверки. К внешней базе работает отдельный конструктор запроса: метаданные читаются через соединение, так что подсказки и дерево объектов доступны и там.
Подключения к внешним базам.
Параметры заполняются сами
Параметры вычитываются из текста перед каждым выполнением, нажимать «Считать параметры» не нужно. Типы определяются по тому, с чем параметр сравнивается: дата останется датой в обеих границах МЕЖДУ, ссылка получит свой тип справочника, период виртуальной таблицы распознается как дата.
Значение можно ввести руками, выбрать из базы, собрать списком или таблицей. Параметр-таблица превращается во временную таблицу одной кнопкой — колонки для нее консоль берет прямо из текста запроса.
Параметры с определенными типами.
Дерево объектов базы
Рядом с текстом запроса — вся конфигурация деревом: справочники, документы, регистры и их поля. В поиске достаточно набрать часть имени, и дерево раскроется на найденном. Двойной клик по объекту или полю дописывает путь прямо в запрос.
Поиск по объектам конфигурации.
Работа с результатом
Выделили числа мышью — под таблицей появилась строка с количеством, суммой и средним. Двойной клик по ячейке со ссылкой открывает сам объект. Отдельно есть структура записи, поиск помеченных на удаление и поиск по GUID. Колонку с идентификаторами можно вывести рядом с данными, а временные таблицы — показать вместе с результатом.
Результат можно запомнить как эталон и потом сверять с ним после правок запроса — покажет, что именно изменилось. Два результата сравниваются между собой, два текста запроса — тоже.
Если результат нужно не просто посмотреть, а обработать, есть «Обработать результат…»: небольшой редактор, где над выборкой выполняется свой код. Примеры вставляются кнопкой.
Итоги по выделенным числам.
Мелочи, которые экономят время
- Два ограничения вместо одного: «читать не более» подставляется в сам запрос и режет выборку из базы, «выводить не более» ограничивает только вывод — запрос при этом отрабатывает целиком.
- Результат можно открыть в отдельном окне или развернуть редактор на всю форму, спрятав панели.
- Второе окно консоли — когда нужно держать перед глазами два запроса сразу.
- Предопределенные значения вставляются из списка, а не пишутся по памяти.
- Момент времени и граница задаются отдельной формой, а не подбором даты руками.
- Запрос и вся библиотека сохраняются в файл и переносятся на другую машину.
Привычное тоже на месте
- Конструктор запроса и конструктор с СКД, сборка схемы компоновки из запроса и просмотр ее текста.
- Запрос из готового отчета на СКД — вытаскивается вместе с настройками набора данных.
- Комментарии переживают конструктор — возвращаются к своим строкам.
- Форматирование, комментирование, замена по всему тексту, отмена и возврат.
- Библиотека запросов по категориям, история, больше двадцати шаблонов и мастер их сборки.
- Взятие запроса из модуля с очисткой кавычек и вертикальных черточек.
- Импорт из типовой консоли и из консоли отчетов (.q1c, .dcr).
- Экспорт результата в xlsx, csv, json, mxl и PDF.
- Код для конфигуратора: готовый фрагмент с текстом запроса и параметрами.
- Выполнение в фоне с кнопкой «Прервать» — форма не висит на тяжелом запросе.
- Черновик сохраняется сам и возвращается при следующем открытии.
Что нужно для работы
1С:Предприятие 8.3 (8.3.27.1989) или 8.5 (8.5.1.1343), управляемые формы, любая конфигурация. В комплекте два файла — под каждую платформу свой.
Честно про ограничения:
- Фоновое выполнение работает там, где в конфигурации есть библиотека стандартных подсистем. Без нее запросы выполняются обычным способом, все остальное не меняется.
- План выполнения снимается с запроса, выполненного в текущем сеансе, поэтому на время работы с планом фоновое выполнение отключается — переключатель рядом.
- COM-соединение работает под Windows и требует зарегистрированной компоненты comcntr той же разрядности, что и платформа.
- Пароли к внешним базам живут только до закрытия консоли и никуда не сохраняются.
Как начать
Открыть файл через «Файл — Открыть», написать запрос и нажать F5. Все остальное — по мере надобности: на отдельной закладке «Как работать» лежит короткая памятка с горячими клавишами и неочевидными приемами.
Закладка «Как работать».