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

BSL234 — Разыменование ссылочных полей запроса через точку

Кратко

Разыменование ссылочных полей запроса через точку

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

Поле Значение
Код правила BSL234
Совместимый псевдоним QueryNestedFieldsByDot
Серьёзность WARNING
Включено по умолчанию Да
Реализовано Да
Теги query, performance

Поведение

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

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

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

[tool.onec-hbk-bsl]
select = ["BSL234"]
ignore = ["QueryNestedFieldsByDot"]

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

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

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

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

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

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

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

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

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

Диагностика позволяет контролировать разыменование ссылочных полей через точку в тексте запроса 1С. Задача данной диагностики - предотвратить излишние неявные соединения между таблицами и как следствие - повысить производительность исполнения запроса к БД.

Примеры

  1. Базовое разыменование ссылочных полей в выборке (во временную таблицу или в результат запроса)
    ЗаказКлиентаТовары.Ссылка.Организация КАК Организация
    
  2. Разыменование ссылочных полей в соединениях таблиц
    ИЗ
        ВТ_РасчетыСКлиентами КАК ВТ_РасчетыСКлиентами
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДанныеЗаказовКлиента КАК ВТ_ДанныеЗаказовКлиента
            ПО ВТ_РасчетыСКлиентами.АналитикаУчетаПоПартнерам.Партнер = ВТ_ДанныеЗаказовКлиента.Партнер
    
  3. Разыменование ссылочных полей в виртуальных таблицах
    ИЗ
        РегистрНакопления.РасчетыСКлиентами.Обороты(
            &НачалоПериода,
            &КонецПериода,
            ,
            (АналитикаУчетаПоПартнерам.Партнер) В ...
    
  4. Конструкция "ВЫРАЗИТЬ" с разыменованием получаемого поля
    ВЫРАЗИТЬ(ВТ_ПланОтгрузок.ДокументПлан КАК Документ.ЗаказКлиента).Валюта.Наценка
    
  5. Разыменование ссылочных полей в секции "ГДЕ"
    ГДЕ
        ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    

Источники

Разыменование ссылочных полей составного типа в языке запросов (#std654)