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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки на платформе 1С:Предприятие программисты часто сталкиваются с особенностями работы встроенного конструктора запросов. Одной из таких особенностей является генерация текста запроса с явным указанием псевдонимов полей. Многие разработчики предпочитают видеть в коде конструкцию ВЫБРАТЬ Поле КАК Поле вместо лаконичного ВЫБРАТЬ Поле, так как это упрощает чтение структуры запроса и последующий перенос полей во временные таблицы или вложенные запросы. Разберем подробно, как добиться автоматической подстановки ключевого слова КАК и почему поведение системы может меняться.

Анализируем поведение конструктора в зависимости от версии платформы

Проанализируем ситуацию, возникшую в обсуждении: в старых версиях платформы (например, 8.2.16) конструктор запросов придерживался принципа «минимизации кода». Если имя поля в базе данных полностью совпадало с желаемым именем в результате запроса, система считала избыточным добавлять оператор КАК. Это делало текст запроса чище, но лишало его явной структуры синонимов.

Рассмотрим пример того, как это выглядит в «сжатом» виде:


ВЫБРАТЬ
    Банки.Ссылка,
    Банки.Код,
    Банки.Наименование
ИЗ
    Справочник.Банки КАК Банки

В современных версиях платформы (начиная с релизов 8.3.15–8.3.18 и выше) логика была пересмотрена. Теперь стандартный конструктор запросов при простом открытии и закрытии (нажатии кнопки «ОК») автоматически дописывает псевдонимы ко всем выбранным полям, даже если они совпадают с именами объектов метаданных. Посмотрим, как преобразуется тот же запрос в актуальных версиях платформы:


ВЫБРАТЬ
    Банки.Ссылка КАК Ссылка,
    Банки.Код КАК Код,
    Банки.Наименование КАК Наименование
ИЗ
    Справочник.Банки КАК Банки

Таким образом, первым и самым простым решением проблемы является обновление платформы 1С до актуального релиза. Если же вы вынуждены работать на устаревших версиях, разберем альтернативные методы.

Принудительное назначение псевдонимов через вкладку «Объединения/Псевдонимы»

Выясним, как заставить конструктор прописать псевдонимы вручную, не прибегая к редактированию текста. В конструкторе запросов существует специализированная закладка «Объединения/Псевдонимы». Рассмотрим алгоритм действий:

  1. Откроем запрос в конструкторе.
  2. Перейдем на закладку «Объединения/Псевдонимы».
  3. Здесь мы увидим список всех выбранных полей и колонку «Псевдоним». Даже если имена совпадают, платформа позволяет переопределить их.
  4. Попробуем внести любое изменение в псевдоним (например, дописать символ и удалить его). В некоторых случаях этого достаточно, чтобы конструктор «зафиксировал» наличие псевдонима.
  5. Если в запросе используется ОБЪЕДИНИТЬ или ОБЪЕДИНИТЬ ВСЕ, платформа обязана жестко закрепить имена полей для обеспечения совместимости типов и структур разных частей запроса. Использование объединения — гарантированный способ получить явные псевдонимы в тексте.

Использование внешних консолей запросов

Зачастую штатный конструктор в конфигураторе ведет себя слишком консервативно. Проанализируем возможности сторонних инструментов. Многие разработчики используют расширенные консоли запросов (например, консоль от ИР, консоли на управляемых формах с порталов сообществ). В таких инструментах часто встроены функции форматирования текста.

При нажатии кнопки «Выполнить» или «ОК» в продвинутой консоли, текст запроса прогоняется через специальный парсер, который автоматически расставляет КАК для каждого поля. Это особенно полезно при работе со сложными выборками, где присутствуют обращения через точку или вычисляемые выражения.

Особенности работы с временными таблицами

Рассмотрим ситуацию, когда нам необходимо поместить результат во временную таблицу. При использовании закладки «Дополнительно» и указании имени временной таблицы в поле ПОМЕСТИТЬ, конструктор более строго относится к именованию колонок. Выясним причину: для создания структуры таблицы в оперативной памяти серверу 1С необходимо четко понимать идентификатор каждой колонки.

Если вам нужно быстро сгенерировать текст с псевдонимами, попробуйте следующий прием:

  1. В конструкторе на закладке «Дополнительно» установите тип запроса «Создание временной таблицы» и укажите любое имя.
  2. Нажмите «ОК». Вы увидите, что в тексте запроса появились явные псевдонимы.
  3. Затем вернитесь в конструктор и измените тип запроса обратно на «Выборка». Часто псевдонимы сохраняются в тексте после этой манипуляции.

Зарезервированные слова и конфликты имен

Важно помнить, что явное указание псевдонима становится критически важным при использовании зарезервированных слов языка запросов. Если ваше поле называется так же, как встроенная функция или оператор, конструктор (особенно в версии 8.3) автоматически добавит КАК, чтобы избежать синтаксической ошибки при выполнении запроса на стороне СУБД. Проанализируем это: явное именование полей — это не только вопрос красоты кода, но и залог его стабильной работы при миграции между различными СУБД (MS SQL Server, PostgreSQL, Oracle).

Подведем итог: если ваш конструктор не ставит синонимы автоматически, скорее всего, вы используете платформу ниже версии 8.3.15. В этом случае используйте закладку «Объединения/Псевдонимы» или воспользуйтесь современной внешней консолью запросов, которая берет на себя задачу форматирования текста запроса.

← На главную