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