Разработка и Конфигурация · 9 мин
Как добавить поле в запросе 1С
Как добавить поле в запросе 1С: через конструктор запроса и вручную в консоли. Выбор полей, псевдонимы, вычисляемые поля, типичные ошибки и проверка результата.
Поле в запросе 1С — это колонка результата выборки: реквизит объекта, вычисляемое выражение или значение функции. Добавить его можно двумя способами: визуально через конструктор запроса в конфигураторе или вручную, редактируя текст на языке запросов. Оба подхода дают одинаковый результат, различается только удобство и скорость работы.
Чаще всего поле добавляют, когда в отчёте или обработке не хватает данных: например, в список документов нужно вывести контрагента, сумму или ответственного менеджера. Важно понимать, что поле появится в результате только если оно есть в источнике данных запроса — таблице документа, справочника или регистра, указанной в секции ИЗ.
Ниже разобраны оба способа, работа с псевдонимами и вычисляемыми полями, особенности полей через точку, типичные ошибки и способы проверить результат до переноса запроса в рабочий код.
Где именно в запросе добавляется поле
Любой запрос на встроенном языке 1С состоит из секций: ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО, УПОРЯДОЧИТЬ ПО и других. Поля — это перечень после ключевого слова ВЫБРАТЬ. Именно этот список определяет, какие колонки получит выборка и под какими именами они будут доступны в коде через свойства результата.
Если нужного реквизита нет в источнике, добавить его в выборку не получится — запрос вернёт ошибку «Поле не найдено». Поэтому перед добавлением поля убедитесь, что реквизит существует в метаданных объекта и таблица объекта присутствует в секции ИЗ. Если данные хранятся в другом объекте, потребуется соединение таблиц.
Добавление поля через конструктор запроса
Конструктор запроса открывается из конфигуратора: в модуле объекта или формы нажмите правой кнопкой на текст запроса и выберите «Конструктор запроса», либо создайте новый запрос через меню «Конструкторы». В левой части окна находится дерево доступных таблиц базы данных.
Чтобы добавить поле, раскройте нужную таблицу в дереве, найдите реквизит и перетащите его в список «Поля» в центральной части конструктора. Если таблицы ещё нет в запросе, сначала перенесите её в список «Таблицы» — тогда её реквизиты станут доступны для выбора. Порядок полей в списке определяет порядок колонок в результате.
- 1Откройте конструктор запроса из модуля или консоли
- 2Добавьте нужную таблицу в список «Таблицы»
- 3Раскройте таблицу и перетащите реквизит в список «Поля»
- 4При необходимости задайте псевдоним в колонке «Имя»
- 5Нажмите «ОК» и проверьте сформированный текст запроса
После нажатия «ОК» конструктор сформирует текст запроса автоматически. Полезно сравнить его с прежним вариантом: конструктор иногда переписывает весь текст, и ручные правки, сделанные ранее вне конструктора, могут быть переформатированы.
Добавление поля вручную в тексте запроса
Ручное редактирование быстрее, когда нужно добавить одно-два поля в готовый запрос. Найдите секцию ВЫБРАТЬ и допишите поле через запятую, указав таблицу и реквизит через точку. Псевдоним задаётся ключевым словом КАК — по нему поле будет доступно в коде.
ВЫБРАТЬ
Док.Номер КАК НомерДокумента,
Док.Дата КАК ДатаДокумента,
Док.Контрагент КАК Контрагент
ИЗ
Документ.РеализацияТоваровУслуг КАК ДокПри ручном добавлении следите за синтаксисом: запятые между полями, корректное имя таблицы из секции ИЗ, точное имя реквизита с учётом регистра не важно, но важна точность написания. Опечатка в имени реквизита приведёт к ошибке «Поле не найдено» при выполнении или сохранении запроса.
Если запрос хранится в строковой переменной в коде, помните про кавычки: внутри строкового литерала двойные кавычки удваиваются. Удобнее оформлять текст запроса многострочным литералом с символом вертикальной черты — так запрос остаётся читаемым.
Псевдонимы и вычисляемые поля
Псевдоним (КАК Имя) стоит задавать всегда, даже если имя совпадает с именем реквизита. Это делает код устойчивым: при обращении к результату запроса вы используете предсказуемое имя, а не автоматически сгенерированное. Для полей через точку псевдоним обязателен на практике — иначе обратиться к колонке будет неудобно.
Вычисляемое поле — это выражение вместо реквизита: арифметика, функции, конструкция ВЫБОР. Например, можно вывести сумму с НДС или признак просрочки документа. Такое поле обязательно должно иметь псевдоним, иначе запрос не выполнится.
ВЫБРАТЬ
Таб.Сумма КАК Сумма,
Таб.Сумма * 0.2 КАК СуммаНДС,
ВЫБОР
КОГДА Таб.Сумма > 100000
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК КрупнаяСделка
ИЗ
Документ.ЗаказКлиента КАК ТабПоля через точку и соединение таблиц
Конструкция «Таблица.Ссылка.Реквизит» позволяет вывести данные связанного объекта без явного соединения: например, Док.Контрагент.Наименование. Это удобно для одного-двух полей, но каждое обращение через точку фактически порождает скрытое соединение, что при большом количестве таких полей замедляет запрос.
Если нужно много полей из связанной таблицы, правильнее явно добавить её в секцию ИЗ и настроить соединение через закладку «Связи» в конструкторе или конструкцию ЛЕВОЕ СОЕДИНЕНИЕ вручную. После этого реквизиты второй таблицы добавляются в выборку обычным способом.
Сравнение вариантов
Быстро для 1–2 реквизитов связанного объекта; при массовом использовании снижает производительность и затрудняет отладку
Оптимально при выборке нескольких полей связанного объекта; требует корректного условия связи, иначе возможны задвоения строк
Подходит для расчётов и признаков на лету; результат не хранится в базе и вычисляется при каждом выполнении запроса
Проверка результата в консоли запросов
Перед переносом изменённого запроса в рабочий код выполните его в консоли запросов (внешней обработке, доступной для режима предприятия). Консоль покажет ошибки синтаксиса сразу и выведет результат в виде таблицы — вы увидите новую колонку и её значения на реальных данных.
Проверьте не только наличие колонки, но и содержимое: значения не должны быть пустыми там, где данные заведомо заполнены, а количество строк не должно неожиданно вырасти — это признак ошибочного соединения, порождающего дубли.
Как проверить результат
Колонка с заданным псевдонимом присутствует в выборке
Запрос не выполняется или колонки нет — ошибка в имени поля
Значения соответствуют данным объектов
Пустые значения там, где реквизит заполнен — неверная таблица или связь
Число строк совпадает с ожидаемым по отбору
Строки задвоились — ошибка в условии соединения таблиц
Типичные ошибки и ограничения
Самая частая проблема — ошибка «Поле не найдено». Она возникает из-за опечатки в имени реквизита, обращения к реквизиту табличной части без добавления самой табличной части в источники, либо попытки выбрать поле из таблицы, которой нет в секции ИЗ. Проверяйте точные имена реквизитов в конфигураторе через свойства объекта метаданных.
Вторая группа ошибок связана с группировкой и итогами: добавление неагрегатного поля в запрос с СГРУППИРОВАТЬ ПО, а также использование поля в секции ИМЕЮЩИЕ без агрегатной функции. Третья группа — обращение к добавленному полю в коде по старому имени: если псевдоним изменили, все обращения вида Выборка.СтароеИмя нужно обновить.
Часто задаваемые вопросы
Как добавить поле табличной части документа в запрос?
Табличную часть нужно добавить как отдельный источник: в конструкторе раскройте документ и перенесите в список таблиц узел вида «Документ.РеализацияТоваровУслуг.Товары». После этого её реквизиты доступны для выборки. Учтите, что результат будет содержать по строке на каждую строку табличной части.
Можно ли добавить поле, которого нет в базе данных?
Да, через вычисляемое выражение: константу, результат арифметики, функции или конструкцию ВЫБОР. Такое поле существует только в результате запроса и обязательно должно иметь псевдоним. Сохранить его в базу можно только через запись в реквизит объекта отдельным кодом.
Почему после добавления поля в запрос отчёта на СКД оно не появилось в отчёте?
В схеме компоновки данных поле набора данных и поле отчёта — разные сущности. После добавления поля в запрос набора откройте закладку «Настройки» и добавьте поле в выбранные поля отчёта, а также проверьте закладку «Ресурсы», если поле должно суммироваться.
Что делать, если конструктор запроса не открывается из кода?
Конструктор работает только в конфигураторе и только для текста запроса, оформленного как строковый литерал в модуле. Если запрос собирается динамически из нескольких строк, скопируйте итоговый текст в консоль запросов и редактируйте там, либо временно оформите его единым литералом.
Влияет ли добавление поля на права доступа?
Да. Если у пользователя нет права «Чтение» на объект, чьё поле добавлено в запрос, выполнение завершится ошибкой нарушения прав доступа. Для отчётов, которые должны работать у пользователей с ограниченными правами, проверяйте состав полей или используйте привилегированный режим там, где это оправдано.
Что важно запомнить
Поле добавляется в список выборки после ВЫБРАТЬ — через конструктор или вручную с псевдонимом КАК. Проверяйте наличие реквизита в источнике, корректность соединений и результат в консоли запросов до переноса в рабочий код.