К статье
Практический материал

Разработка и Конфигурация · 11 мин

Запросы в 1С: где найти и как посмотреть их текст

Где найти запросы в 1С: консоль запросов, конструктор запроса, поиск по конфигуратору, запросы в отчётах СКД и динамических списках. Пошаговые инструкции.

Запрос в 1С — это текст на встроенном языке запросов, который выбирает данные из таблиц информационной базы. Найти конкретный запрос бывает нужно в разных ситуациях: проверить, откуда отчёт берёт цифры, исправить ошибку в выборке, ускорить медленную операцию или просто понять логику чужого кода. Проблема в том, что запросы «спрятаны» в нескольких местах: в модулях объектов, в схемах компоновки данных, в динамических списках и в формах.

Единого окна «все запросы базы» в 1С нет, поэтому поиск строится по понятному маршруту: сначала определяется тип объекта, где запрос живёт, затем через конфигуратор или консоль запросов открывается его текст. Ниже разобраны все основные места хранения запросов и способы быстро до них добраться — как в режиме конфигуратора, так и в пользовательском режиме «1С:Предприятие».

Где вообще хранятся запросы в 1С

Прежде чем искать, полезно понимать карту мест. Текст запроса в 1С может находиться в пяти типичных локациях. Первая — модули: общие модули, модули объектов, модули менеджеров, модули форм. Там запрос создаётся программно через объект Запрос и его свойство Текст. Вторая локация — схема компоновки данных (СКД) отчёта: запрос хранится на закладке «Наборы данных» внутри макета схемы.

Третья группа — динамические списки форм: у реквизита списка есть свойство «Произвольный запрос», и текст хранится прямо в настройках формы. Четвёртая — запросы в свойствах элементов, например в параметрах выбора полей ввода. Пятая — внешние источники: файлы консоли запросов (обычно с расширением .q1c или .sel), которые разработчики сохраняют для отладки.

Как найти запрос через конфигуратор

Основной инструмент поиска — глобальный поиск по конфигурации. Откройте конфигуратор, загрузите конфигурацию и выберите в меню «Правка» пункт «Глобальный поиск» (или нажмите Ctrl+Shift+F). В строке поиска введите ВЫБРАТЬ — это ключевое слово есть в начале каждого запроса. Чтобы сузить выдачу, добавьте имя таблицы, например ВЫБРАТЬ * ИЗ Справочник.Номенклатура или фрагмент имени регистра.

В параметрах поиска отметьте область «Вся конфигурация» и включите поиск в свойствах, если подозреваете, что запрос зашит в динамический список или СКД. Результат покажет список модулей и объектов с указанием строки. Двойной клик по строке открывает модуль ровно в нужном месте — это самый быстрый способ добраться до текста запроса.

Если запрос формируется динамически (текст собирается из кусков через конкатенацию строк), поиск по «ВЫБРАТЬ» может не сработать. Тогда ищите по слову Запрос или по имени переменной, например ЗапросОстатки, а также по вызову Новый Запрос — так вы найдёте все места создания объекта запроса в коде.

Поиск запроса в конфигураторе
  1. 1
    Откройте конфигуратор и конфигурацию базы
  2. 2
    Нажмите Ctrl+Shift+F (Правка → Глобальный поиск)
  3. 3
    Введите ВЫБРАТЬ или Новый Запрос, при необходимости — имя таблицы
  4. 4
    Установите область поиска «Вся конфигурация» и запустите поиск
  5. 5
    Откройте найденный модуль двойным кликом и прочитайте текст запроса

Как найти запрос в отчёте на СКД

Большинство отчётов в типовых конфигурациях построены на системе компоновки данных, и их запросы в модулях не найти — они лежат внутри схемы. Откройте конфигуратор, найдите нужный отчёт в ветке «Отчёты», откройте его и перейдите к основной схеме компоновки данных (кнопка «Открыть схему компоновки данных» или двойной клик по макету).

В окне схемы перейдите на закладку «Наборы данных». Там будет один или несколько наборов типа «Запрос». Выделите набор — справа или внизу откроется поле с текстом запроса. Кнопка «Конструктор запроса» открывает текст в визуальном редакторе, где удобно смотреть связи таблиц, условия и поля. Если наборов несколько, проверьте каждый: итоговые данные отчёта могут собираться из нескольких запросов, объединённых связями наборов.

В пользовательском режиме «1С:Предприятие» текст запроса отчёта напрямую не виден, но в некоторых конфигурациях доступен пункт «Ещё → Изменить вариант» с расширенными настройками. Полный текст всё равно открывается только через конфигуратор или через внешние инструменты вроде консоли СКД.

Запросы в динамических списках и формах

Списки документов и справочников в управляемых формах часто построены на динамических списках с произвольным запросом. Чтобы найти такой запрос, откройте в конфигураторе нужную форму списка, найдите в дереве реквизитов реквизит типа «ДинамическийСписок» (обычно называется «Список») и откройте его свойства.

Если установлен флаг «Произвольный запрос», рядом в свойстве «Текст запроса» будет многоточие — нажмите его, и откроется полный текст. Там же видно, какая таблица указана основной: от неё зависит, как работают стандартные команды «Создать», «Скопировать» и отборы. Изменять этот текст в типовой конфигурации стоит только с пониманием последствий: при обновлении конфигурации доработанный запрос может конфликтовать с обновлением поставщика.

Консоль запросов: где взять и как открыть запрос в режиме Предприятия

Консоль запросов — это внешняя обработка, которая позволяет писать и выполнять запросы прямо в режиме «1С:Предприятие», без конфигуратора. В типовых конфигурациях её обычно нет в составе поставки, но аналоги входят в стандартные подсистемы инструментов разработчика и свободно распространяются как отдельные обработки. Открывается консоль через меню «Файл → Открыть» с указанием файла обработки.

Если у вас уже есть сохранённый файл запроса (расширение .q1c, .sel или аналогичный формат конкретной консоли), откройте его из консоли через «Открыть» — текст загрузится в редактор, и его можно выполнить на текущей базе. Это удобный способ проверить, что возвращает проблемный запрос, не запуская весь отчёт целиком.

Для переноса запроса из кода в консоль есть приём: скопируйте текст запроса из модуля, вставьте в консоль и замените параметры вида &Период конкретными значениями через таблицу параметров консоли. Так вы воспроизведёте выборку один в один и сможете экспериментировать с условиями без риска для рабочего кода.

Когда запрос в коде собирается из нескольких строк через «ТекстЗапроса = ТекстЗапроса + ...», удобно поставить точку останова после формирования текста и в отладчике скопировать итоговую строку целиком — это гарантирует, что в консоль попадёт именно тот запрос, который реально выполняется.
ПЗ
Практическое замечание

Как понять, какой именно запрос выполняется в базе

Иногда задача обратная: известен симптом (медленный отчёт, ошибка «Поле не найдено»), а запрос — нет. Здесь помогают три подхода. Первый — отладчик: включите в конфигураторе «Отладка → Подключение», запустите отладку предприятия, поставьте точку останова на строке Запрос.Выполнить() или Выполнить() и по шагам дойдите до нужного места, читая текст запроса из свойств объекта.

Второй подход — технологический журнал: он фиксирует все запросы, которые платформа отправляет к СУБД, с длительностью выполнения. Настройка требует прав на сервер и аккуратности (лог быстро разрастается), поэтому на рабочем сервере его включают точечно и ненадолго. Третий подход — поиск по тексту ошибки: сообщение вида «Поле не найдено "Товары.Количество"» прямо указывает поле, по которому через глобальный поиск находится проблемный запрос за секунды.

Маршрут решения

Как выбрать способ поиска

Нужно найти запрос в коде конфигурацииГлобальный поиск Ctrl+Shift+F по словам ВЫБРАТЬ или Новый Запрос
Запрос относится к отчётуОткройте схему компоновки данных отчёта, закладка «Наборы данных»
Проблема в списке документов или справочникаСвойства динамического списка формы, текст произвольного запроса
Запрос неизвестен, есть только ошибка или медленная работаОтладчик с точкой останова на Выполнить() или поиск по тексту ошибки
Нужно проверить результат запроса без изменения кодаКонсоль запросов в режиме Предприятия с переносом текста из модуля

Частые ошибки при поиске запросов

Самая распространённая ошибка — поиск только в модулях при том, что запрос живёт в СКД или динамическом списке. Если глобальный поиск по «ВЫБРАТЬ» не даёт результата, а отчёт явно выбирает данные, почти наверняка текст находится в схеме компоновки. Вторая ошибка — игнорирование того, что в базе работают расширения конфигурации: запрос может быть переопределён в расширении, и искать его нужно там, а не в основной конфигурации.

Третья ошибка — путаница между запросом и его результатом. Если отчёт показывает не те цифры, проблема не всегда в тексте запроса: отборы СКД, параметры виртуальных таблиц регистров и права доступа (RLS) тоже влияют на выборку. Прежде чем править запрос, выполните его в консоли с теми же параметрами и сравните результат — так вы локализуете причину.

Типичные ошибки
01
Искать запрос только в модулях, когда он находится в СКД отчёта или динамическом списке — проверяйте все три локации
02
Забыть про расширения конфигурации: переопределённый запрос ищется в расширении, а не в основной конфигурации
03
Копировать запрос из кода в консоль без подстановки параметров — результат не совпадёт с реальной выборкой
04
Править запрос в рабочей базе без копии — ошибка ломает отчёт или список для всех пользователей
Итог

Что важно запомнить

Запросы в 1С хранятся в модулях, схемах СКД, динамических списках и файлах консоли. Универсальный способ поиска — глобальный поиск по «ВЫБРАТЬ» в конфигураторе; для отчётов — наборы данных схемы компоновки; для проверки результата — консоль запросов в режиме Предприятия. Любые правки выполняйте на копии базы.

Частые вопросы

Можно ли найти запрос без доступа к конфигуратору?

Частично. В режиме «1С:Предприятие» текст запроса отчёта или списка напрямую не отображается, но через консоль запросов (внешнюю обработку) можно выполнять и сохранять свои запросы. Для просмотра запросов типовых отчётов без конфигуратора подойдут инструменты разработчика, если они встроены в конфигурацию администратором.

Почему глобальный поиск по «ВЫБРАТЬ» ничего не находит?

Три вероятные причины: запрос находится в схеме компоновки данных (поиск по макетам СКД не всегда включён в область поиска), текст собирается динамически из частей, либо запрос переопределён в расширении конфигурации. Проверьте настройки области поиска и поищите по «Новый Запрос» и по имени таблицы.

Как посмотреть, какой запрос выполняет типовой отчёт?

Откройте отчёт в конфигураторе, перейдите к основной схеме компоновки данных и откройте закладку «Наборы данных» — текст запроса находится там. Если отчёт программный (без СКД), ищите обращение к объекту Запрос в модуле объекта отчёта через глобальный поиск.

Что делать, если запрос выполняется слишком долго?

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

Безопасно ли менять текст запроса в типовой конфигурации?

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

Где хранятся сохранённые файлы консоли запросов?

Консоль запросов сохраняет тексты в обычные файлы на диске (типичные расширения — .q1c или .sel в зависимости от версии консоли). Место хранения выбирает пользователь при сохранении; единого каталога внутри базы для них не существует, поэтому ищите файлы по расширению средствами операционной системы.