Разработка и Конфигурация · 11 мин
Где находятся запросы в 1С и как их найти
Где находятся запросы в 1С: в модулях объектов, консоли запросов, динамических списках и СКД. Как найти, открыть и отладить запрос в конфигураторе и предприятии.
Запросы в 1С не хранятся в одном единственном месте — они «размазаны» по всей конфигурации. Текст запроса может находиться в модуле документа, в схеме компоновки данных отчёта, в настройках динамического списка или во внешнем файле консоли запросов. Поэтому вопрос «где находятся запросы» обычно означает одно из трёх: где искать запрос в коде конфигурации, где лежит консоль запросов для отладки и где хранятся сохранённые файлы запросов.
Понимание этих мест экономит часы при доработке и отладке. Если отчёт выводит не те данные, нужно открыть его схему компоновки. Если документ не проводится — искать запрос в модуле объекта или менеджера. Если список показывает лишние записи — проверять произвольный запрос динамического списка.
Ниже разобраны все основные места хранения запросов в типовых и самописных конфигурациях, способы быстрого поиска текста запроса по всей конфигурации и инструменты отладки — консоль запросов и конструктор.
Где в конфигураторе хранятся тексты запросов
Основное место обитания запросов — модули конфигурации. Запрос пишется на встроенном языке в виде строки, которая присваивается свойству Текст объекта Запрос. Найти такие места можно через глобальный поиск: нажмите Ctrl+Shift+F, введите слово «ВЫБРАТЬ» или «Запрос.Текст» и ограничьте поиск модулями. Конфигуратор покажет все строки, где встречается шаблон.
Типичные модули, где чаще всего встречаются запросы:
- Модуль объекта документа или справочника — запросы проведения, проверки заполнения, контроля остатков;
- Модуль менеджера — функции получения данных, печатные формы, обработчики обновления;
- Общие модули — переиспользуемые функции выборки данных;
- Модуль формы — запросы при открытии, при заполнении табличных частей;
- Модуль набора записей регистра — контроль и пересчёт итогов.
В типовых конфигурациях запросы нередко собираются программно: текст формируется из нескольких строк и объединяется через «+» или методы построителя. В этом случае поиск по «ВЫБРАТЬ» покажет лишь фрагменты. Ищите по имени таблицы, из которой выбираются данные, — например, «РегистрНакопления.ТоварыНаСкладах».
- 1Откройте конфигуратор и нажмите Ctrl+Shift+F (Правка → Глобальный поиск).
- 2Введите ключевое слово: ВЫБРАТЬ, имя таблицы или имя поля.
- 3Включите поиск в модулях, схемах компоновки и свойствах.
- 4Дважды щёлкните по строке результата — откроется модуль на нужной строке.
- 5Выделите текст запроса и через правую кнопку вызовите конструктор запроса для просмотра.
Запросы в отчётах: схема компоновки данных
Большинство отчётов в современных конфигурациях построено на СКД — системе компоновки данных. Текст запроса такого отчёта находится не в модуле, а внутри схемы компоновки. Чтобы его увидеть, откройте отчёт в конфигураторе, перейдите на закладку «Основная схема компоновки данных» и нажмите «Открыть схему компоновки данных».
В открывшемся конструкторе перейдите на закладку «Наборы данных». Здесь в поле «Запрос» и находится искомый текст. Его можно редактировать вручную или открыть кнопкой «Конструктор запроса» — визуальный инструмент, где таблицы, поля и связи настраиваются мышкой.
Важная особенность: в режиме предприятия пользователь мог изменить настройки отчёта через «Изменить вариант», но сам текст запроса СКД пользовательскими настройками не меняется — он задан разработчиком в схеме. Если отчёт «внезапно» стал работать иначе, сначала проверяйте пользовательские отборы и варианты, а уже потом лезьте в схему.
Запросы динамических списков
Списки документов, справочников и регистров в управляемых формах строятся на динамических списках. По умолчанию список просто читает таблицу объекта, но разработчик может включить флаг «Произвольный запрос» — тогда текст запроса хранится в свойствах реквизита формы типа «ДинамическийСписок».
Чтобы найти такой запрос, откройте форму списка в конфигураторе, найдите в дереве реквизитов основной реквизит (обычно «Список») и откройте палитру его свойств. Там расположены поля «Произвольный запрос», «Основная таблица», «Динамическое считывание данных». Нажатие на строку с текстом запроса открывает редактор, а кнопка вызова запускает конструктор.
Признак того, что список использует произвольный запрос: в нём выводятся поля из нескольких таблиц (например, остатки или ответственный из регистра сведений), или данные отфильтрованы «жёстко» и не реагируют на стандартный отбор. Динамический список автоматически дополняет произвольный запрос условиями отбора и сортировкой, поэтому сложные запросы с пакетами и временными таблицами в нём не поддерживаются — используйте один запрос-выборку.
Консоль запросов: где взять и где хранятся файлы
Консоль запросов — инструмент для написания и отладки запросов в режиме предприятия, без изменения конфигурации. В типовых конфигурациях на обычных формах консоль часто встроена (сервисные обработки), а для управляемых приложений используется внешняя обработка — она входит в состав подсистемы «Инструменты разработчика» или поставляется отдельным файлом .epf.
Открывается консоль стандартно: Файл → Открыть → выбрать файл обработки. Сохранённые запросы консоль хранит в собственных файлах — традиционно с расширением .q1c (список запросов) или в формате XML/JSON у современных версий инструментов. Эти файлы лежат там, куда пользователь их сохранил: типовые места — папка «Документы», рабочий стол, сетевой каталог разработчиков. В самой базе 1С сохранённые тексты консоли по умолчанию не хранятся.
Где отлаживать запрос
Подходит для проверки выборки на реальных данных без изменения конфигурации. Ограничение: нужно вручную переносить текст и параметры из кода.
Удобен для написания нового запроса с нуля: визуальный выбор таблиц, полей, связей. Не выполняет запрос, только редактирует текст.
Позволяет посмотреть текст запроса и результат прямо в момент выполнения кода. Требует запуска отладки и точки останова.
Другие места, где прячутся запросы
Помимо модулей, отчётов и списков, запросы встречаются ещё в нескольких объектах конфигурации:
- Планы обмена — правила регистрации могут содержать запросы отбора данных;
- Подписки на события — обработчики с выборками связанных данных;
- Регламентные задания — модули с запросами для периодических расчётов;
- Внешние обработки и отчёты (.epf, .erf) — собственные схемы СКД и модули с запросами;
- Расширения конфигурации — доработанные модули и формы с новыми запросами;
- Критерии отбора и журналы документов — состав и условия выборки.
Если конфигурация использует расширения, помните: запрос, который вы видите в основной конфигурации, может быть переопределён в расширении. Проверяйте активные расширения через меню «Конфигурация → Расширения конфигурации», если поведение системы не совпадает с кодом в основной базе.
Как открыть и проверить найденный запрос
Найденный в модуле текст запроса удобнее всего просматривать через конструктор: выделите строку с текстом (вместе с вертикальными чёрточками переноса), нажмите правую кнопку мыши и выберите «Конструктор запроса». Если конструктор не открывается или ругается на синтаксис — текст собирается динамически, и его придётся анализировать вручную либо перехватывать в отладчике.
Для проверки результата на реальных данных скопируйте текст в консоль запросов, заполните параметры (период, ссылки, организацию) и выполните. Сверьте количество строк и ключевые суммы с тем, что выводит программа. Расхождение обычно означает, что в коде запрос дополняется программно или применяются отборы СКД/динамического списка.
Как проверить результат
Тексты совпадают, результат в консоли равен данным в программе
В коде текст дополняется программно — ищите конкатенацию строк и подстановку параметров
Данные отчёта совпадают с выполнением запроса из схемы с теми же отборами
Расхождение — проверьте пользовательские отборы, вариант отчёта и ресурсы СКД
Список показывает те же записи, что и произвольный запрос с аналогичным отбором
Лишние или пропавшие записи — проверьте свойства списка и установленные отборы
Ограничения и меры предосторожности
Изменение текста запроса в конфигураторе требует аккуратности. Запросы проведения документов и контроля остатков напрямую влияют на учётные данные: ошибка в условиях соединения или виртуальных таблицах может привести к неверным движениям по регистрам. Перед правкой снимите копию базы или выгрузите конфигурацию, а после изменения проверьте поведение на тестовой копии, включая перепроведение нескольких документов.
Отдельный риск — производительность. Запрос, корректный логически, может сканировать миллионы записей, если не использовать индексированные поля в условиях. Проверяйте план выполнения на копии рабочей базы, особенно для запросов в регламентных заданиях и динамических списках, которые выполняются часто.
Что важно запомнить
Запросы в 1С распределены: модули объектов и общие модули, схемы компоновки отчётов, свойства динамических списков, расширения и внешние обработки. Найти их помогает глобальный поиск по «ВЫБРАТЬ» или имени таблицы, просмотреть — конструктор запроса, отладить — консоль запросов с файлами .q1c. Правки в рабочей базе делайте только после резервного копирования.
Частые вопросы
Как быстро найти все запросы в конфигурации?
Используйте глобальный поиск (Ctrl+Shift+F) по слову «ВЫБРАТЬ» с поиском в модулях и схемах компоновки. Дополнительно проверьте свойства динамических списков форм и схемы СКД отчётов — туда глобальный поиск по модулям не заглядывает.
Где взять консоль запросов для типовой конфигурации?
Варианты: встроенные сервисные обработки в конфигурациях на обычных формах, обработка из состава «Инструментов разработчика», консоль с диска информационно-технологического сопровождения (ИТС). Открывается любая из них через Файл → Открыть в режиме предприятия.
Почему конструктор запроса не открывает текст из модуля?
Конструктор работает только со статическим текстом. Если запрос собирается из нескольких строк, содержит подстановки параметров в текст или шаблоны с амперсандом, конструктор не сможет его разобрать. Такой запрос анализируют вручную или перехватывают готовый текст в отладчике.
Можно ли выполнить запрос без изменения конфигурации?
Да, через консоль запросов в режиме предприятия. Скопируйте текст, задайте параметры и выполните — данные базы при этом не изменяются, если в запросе нет конструкций, вызывающих запись (в чистом запросе их нет).
Где хранятся сохранённые запросы консоли?
В файлах на диске — традиционно с расширением .q1c, у новых инструментов возможны XML-форматы. Конкретная папка зависит от того, куда пользователь сохранил файл: чаще всего это «Документы» или рабочий каталог разработчика. Внутри информационной базы они не хранятся.
Запрос в конфигураторе выглядит правильно, но программа работает иначе. Почему?
Проверьте три вещи: активные расширения конфигурации (код может быть переопределён), пользовательские настройки отчёта или списка (дополнительные отборы) и программную сборку текста запроса в коде — итоговый текст может отличаться от видимого фрагмента.