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

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

Где находятся запросы в 1С и как их найти

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

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

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

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

Где в конфигураторе хранятся тексты запросов

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

Типичные модули, где чаще всего встречаются запросы:

  • Модуль объекта документа или справочника — запросы проведения, проверки заполнения, контроля остатков;
  • Модуль менеджера — функции получения данных, печатные формы, обработчики обновления;
  • Общие модули — переиспользуемые функции выборки данных;
  • Модуль формы — запросы при открытии, при заполнении табличных частей;
  • Модуль набора записей регистра — контроль и пересчёт итогов.

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

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

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

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

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

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

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

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

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

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

Консоль запросов: где взять и где хранятся файлы

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

Открывается консоль стандартно: Файл → Открыть → выбрать файл обработки. Сохранённые запросы консоль хранит в собственных файлах — традиционно с расширением .q1c (список запросов) или в формате XML/JSON у современных версий инструментов. Эти файлы лежат там, куда пользователь их сохранил: типовые места — папка «Документы», рабочий стол, сетевой каталог разработчиков. В самой базе 1С сохранённые тексты консоли по умолчанию не хранятся.

Где отлаживать запрос

Консоль запросов (внешняя обработка)

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

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

Удобен для написания нового запроса с нуля: визуальный выбор таблиц, полей, связей. Не выполняет запрос, только редактирует текст.

Отладчик + вычисление выражения

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

Другие места, где прячутся запросы

Помимо модулей, отчётов и списков, запросы встречаются ещё в нескольких объектах конфигурации:

  • Планы обмена — правила регистрации могут содержать запросы отбора данных;
  • Подписки на события — обработчики с выборками связанных данных;
  • Регламентные задания — модули с запросами для периодических расчётов;
  • Внешние обработки и отчёты (.epf, .erf) — собственные схемы СКД и модули с запросами;
  • Расширения конфигурации — доработанные модули и формы с новыми запросами;
  • Критерии отбора и журналы документов — состав и условия выборки.

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

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

Как открыть и проверить найденный запрос

Найденный в модуле текст запроса удобнее всего просматривать через конструктор: выделите строку с текстом (вместе с вертикальными чёрточками переноса), нажмите правую кнопку мыши и выберите «Конструктор запроса». Если конструктор не открывается или ругается на синтаксис — текст собирается динамически, и его придётся анализировать вручную либо перехватывать в отладчике.

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

Контрольные точки

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

Текст запроса из модуля и из консоли
Норма

Тексты совпадают, результат в консоли равен данным в программе

Тревожный признак

В коде текст дополняется программно — ищите конкатенацию строк и подстановку параметров

Результат отчёта на СКД
Норма

Данные отчёта совпадают с выполнением запроса из схемы с теми же отборами

Тревожный признак

Расхождение — проверьте пользовательские отборы, вариант отчёта и ресурсы СКД

Динамический список
Норма

Список показывает те же записи, что и произвольный запрос с аналогичным отбором

Тревожный признак

Лишние или пропавшие записи — проверьте свойства списка и установленные отборы

Ограничения и меры предосторожности

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

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

Итог

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

Запросы в 1С распределены: модули объектов и общие модули, схемы компоновки отчётов, свойства динамических списков, расширения и внешние обработки. Найти их помогает глобальный поиск по «ВЫБРАТЬ» или имени таблицы, просмотреть — конструктор запроса, отладить — консоль запросов с файлами .q1c. Правки в рабочей базе делайте только после резервного копирования.

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

Как быстро найти все запросы в конфигурации?

Используйте глобальный поиск (Ctrl+Shift+F) по слову «ВЫБРАТЬ» с поиском в модулях и схемах компоновки. Дополнительно проверьте свойства динамических списков форм и схемы СКД отчётов — туда глобальный поиск по модулям не заглядывает.

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

Варианты: встроенные сервисные обработки в конфигурациях на обычных формах, обработка из состава «Инструментов разработчика», консоль с диска информационно-технологического сопровождения (ИТС). Открывается любая из них через Файл → Открыть в режиме предприятия.

Почему конструктор запроса не открывает текст из модуля?

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

Можно ли выполнить запрос без изменения конфигурации?

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

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

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

Запрос в конфигураторе выглядит правильно, но программа работает иначе. Почему?

Проверьте три вещи: активные расширения конфигурации (код может быть переопределён), пользовательские настройки отчёта или списка (дополнительные отборы) и программную сборку текста запроса в коде — итоговый текст может отличаться от видимого фрагмента.