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