Перейти к содержанию

Назначение псевдонимов выбранным полям в запросе (AssignAliasFieldsInQuery)

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Дефект кода BSL Важный Да 1 standard
sql
badpractice

Описание диагностики

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

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

Касса.Валюта КАК Валюта
то изменение имени реквизита приведет только к изменению текста запроса.

Особенно внимательно следует относиться к автоматически присваиваемым псевдонимам для полей – реквизитов других полей, типа "... Касса.Валюта.Наименование...". В приведенном выше примере поле получит автоматический псевдоним ВалютаНаименование, а не Наименование.

Следует обязательно указывать ключевое слово КАК перед псевдонимом поля источника.

Псевдонимы таблиц и полей из вторичных запросов из "ОБЪЕДИНИТЬ" диагностикой не проверяются.

Примеры

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Валюты.Ссылка, // Неправильно
    |   Валюты.Ссылка КАК ПсевдонимПоляСсылка, // Правильно
    |   Валюты.Код Код // Неправильно
    |ИЗ
    |   Справочник.Валюты КАК Валюты // Игнорируется
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   Валюты.Ссылка, // Игнорируется
    |   Валюты.Ссылка, // Игнорируется
    |   Валюты.Код // Игнорируется
    |ИЗ
    |   Справочник.Валюты КАК Валюты // Игнорируется
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   Валюты.Ссылка, // Неправильно
    |   Валюты.Ссылка КАК ПсевдонимПоляСсылка, // Правильно
    |   Валюты.Код Код // Неправильно
    |ИЗ
    |   Справочник.Валюты КАК Валюты // Игнорируется
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   Валюты.Ссылка, // Игнорируется
    |   Валюты.Ссылка, // Игнорируется
    |   Валюты.Код // Игнорируется
    |ИЗ
    |   Справочник.Валюты КАК Валюты"; // Игнорируется

    Запрос1 = Новый Запрос;
    Запрос1.Текст =
    "ВЫБРАТЬ
    |   ВложенныйЗапрос.Ссылка КАК Ссылка // Правильно
    |ИЗ
    |   (ВЫБРАТЬ
    |       Валюты.Ссылка // Неправильно
    |   ИЗ
    |       Справочник.Валюты КАК Валюты) КАК ВложенныйЗапрос"; // Игнорируется 

Источники

Источник: Оформление текстов запросов

Сниппеты

Экранирование кода

// BSLLS:AssignAliasFieldsInQuery-off
// BSLLS:AssignAliasFieldsInQuery-on

Параметр конфигурационного файла

"AssignAliasFieldsInQuery": false