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

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

Как сохранить запрос в 1С: все рабочие способы

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

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

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

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

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

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

Как сохранить запрос в консоли запросов

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

Чтобы сохранить запрос, откройте консоль, напишите или вставьте текст запроса, проверьте его выполнение, затем используйте команду сохранения. В большинстве консолей это кнопка с дискетой или пункт меню «Файл — Сохранить / Сохранить как». Запрос сохраняется либо в файл с расширением .sel (формат типовой консоли), либо в файл самой обработки-консоли, либо в список запросов внутри файла настроек.

Сохранение запроса в консоли
  1. 1
    Откройте консоль запросов через «Файл — Открыть» в режиме 1С:Предприятие
  2. 2
    Напишите текст запроса или вставьте готовый
  3. 3
    Нажмите «Выполнить» и убедитесь, что запрос отрабатывает без ошибок
  4. 4
    Нажмите «Сохранить» или «Сохранить как» и укажите имя файла и папку
  5. 5
    Проверьте: закройте консоль, откройте файл заново — запрос должен загрузиться с текстом и параметрами

Обратите внимание: вместе с текстом консоль обычно сохраняет и параметры запроса. Если вы задали параметры вручную на вкладке параметров, они восстановятся при следующем открытии файла — это удобно для повторной отладки.

Сохранение списка запросов и работа с несколькими запросами

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

Практическая рекомендация: давайте запросам осмысленные имена («Остатки по складу за месяц», «Долги контрагентов»), а не «Запрос1», «Запрос2». Через месяц по имени вы сразу поймёте, что делает запрос, без чтения текста.

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

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

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

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

Где хранить запрос

Файл консоли запросов

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

Внешний отчёт (.erf) на СКД

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

Запрос в коде модуля

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

Макет с текстом запроса

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

Как сохранить запрос в программном коде

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

Типовой фрагмент кода выглядит так:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Товар

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

|ГДЕ

| НЕ Номенклатура.ПометкаУдаления";

Результат = Запрос.Выполнить().Выгрузить();

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

Сохранение запроса в макете и в хранилище настроек

Менее известный способ — макет типа «Текстовый документ». Создайте в конфигураторе макет, вставьте туда текст запроса, а в коде получайте его через ПолучитьМакет("ИмяМакета").ПолучитьТекст(). Способ удобен, когда один и тот же запрос используется в нескольких местах: текст правится в одном макете, а не в пяти модулях.

Для пользовательских настроек (например, сохранённых вариантов отбора вместе с запросом) применяется хранилище настроек — стандартное или хранилище вариантов отчётов. Внешние обработки могут сохранять туда произвольные структуры данных, включая тексты запросов, и восстанавливать их при следующем открытии. Это удобно для самописных консолей и рабочих мест аналитика.

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

Проверка результата и типичные ошибки

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

Отдельно проверьте права доступа: запрос, который выполняется под полными правами в консоли, может вернуть пустой результат или ошибку у рядового пользователя, если у него нет прав на чтение задействованных объектов. Это не ошибка сохранения, а ограничение ролевой модели.

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

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

Открытие сохранённого файла
Норма

Текст запроса и параметры загружаются полностью

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

Файл не открывается, текст пустой или обрезан

Выполнение после повторного открытия
Норма

Результат совпадает с результатом до сохранения

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

Ошибка выполнения или другой набор строк

Работа под пользователем без полных прав
Норма

Отчёт формируется, данные видны в рамках прав

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

Ошибка доступа или пустой результат

Поведение после обновления конфигурации
Норма

Запрос выполняется без изменений

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

Ошибка «Поле не найдено» — переименован объект или реквизит

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

Можно ли сохранить запрос прямо из типового отчёта, чтобы доработать его?

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

Чем открыть файл с расширением .sel?

Это формат типовой консоли запросов с диска ИТС. Откройте консоль запросов в режиме 1С:Предприятие и загрузите файл через «Файл — Открыть». Другие консоли этот формат обычно не читают — для переноса скопируйте текст запроса вручную.

Как сохранить запрос, чтобы он был доступен всем пользователям базы?

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

Теряются ли параметры запроса при сохранении?

В консоли запросов параметры сохраняются вместе с текстом в файл. При переносе в код модуля параметры не переносятся автоматически — их нужно устанавливать явно через Запрос.УстановитьПараметр("Имя", Значение) перед выполнением.

Как сохранить запрос, если нет прав на конфигуратор?

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

Можно ли хранить запросы в системе контроля версий?

Да, и это хорошая практика для команды разработки. Сохраняйте тексты запросов в текстовые файлы (.txt или .sql) и складывайте в репозиторий вместе с выгрузкой конфигурации. Бинарные файлы консолей и .erf-отчёты в версионировании менее удобны — по ним сложно смотреть изменения.

Итог

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

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