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

BSL149 - Назначение псевдонимов выбранным полям в запросе

Кратко

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

Идентификаторы

Поле Значение
Код правила BSL149
Совместимый псевдоним AssignAliasFieldsInQuery
Серьёзность INFORMATION
Без конфигурации Да
BSLLS JSON, режим ON без переопределений Да
Флаг реестра implemented Да
Теги convention, query

Флаг implemented отражает реестр и не подтверждает проверенное совпадение с BSLLS.

Поведение

  • Публичный идентификатор BSL149 и псевдоним AssignAliasFieldsInQuery стабильны.
  • Правило сообщает о случаях, описанных на этой странице.
  • Подавления и проектная конфигурация применяются до публикации результата.
  • Для выполнения правила не требуется внешний анализатор или сетевой доступ.

Настройка и подавление

Код BSL### - основной стабильный идентификатор. Совместимый псевдоним принимается в select, ignore и совместимых блоковых комментариях.

[tool.onec-hbk-bsl]
select = ["BSL149"]
ignore = ["AssignAliasFieldsInQuery"]

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

  • noqa:
Значение = "пример";  // noqa: BSL149
  • bsl-disable (совместимый вариант):
Значение = "пример";  // bsl-disable: BSL149
  • совместимый BSLLS-вариант:
Значение = "пример";  // BSLLS:AssignAliasFieldsInQuery-off

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

// noqa: BSL149
// код без этой диагностики
// noqa-enable: BSL149

// bsl-disable: BSL149
// код без этой диагностики
// bsl-enable: BSL149

// BSLLS:AssignAliasFieldsInQuery-off
// код без этой диагностики
// BSLLS:AssignAliasFieldsInQuery-on

Чтобы отключить правило до конца файла, не добавляйте закрывающий noqa-enable, bsl-enable или BSLLS:…-on.

Открывающий и закрывающий маркеры должны принадлежать одному семейству.

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

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

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

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

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

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

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

Примеры

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

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

Источники

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