1c-edt-issues icon indicating copy to clipboard operation
1c-edt-issues copied to clipboard

Излишне детектируется ошибка "Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.).

Open DmitryShvaika opened this issue 2 years ago • 3 comments

Описание ошибки

Из лишне детектируется ошибка "Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов, например: Строка, Число, Дата, УникальныйИдентификатор, Булево, а также ХранилищеЗначения."

image

Данный реквизит не используется в соединениях, отборах или упорядочивании, но ошибка для него детектируется. Данная ошибка детектируется и для реквизита табличной части. А это стандартный подход в БСП хранения доп. реквизитов

Дополнительно: ошибка отображается в панели по 3 раза для каждого реквизита.

Как воспроизвести

  1. В любом справочнике создать составной реквизит или реквизит таб. части состоящий из строки и ссылки.
  2. Налюдать ошибку

Скриншоты

No response

Ожидаемое поведение

Должна выполняться проверка на использование реквизита в соединениях, отборах, упорядочиваниях.

Лог рабочей области

не требуется

Версия 1С:EDT

2021.3.4

Операционная система

Windows

Установленные плагины

No response

Дополнительная информация

test.zip архив с тестовым проектом, где воспроизведена ошибка

DmitryShvaika avatar Jul 29 '22 07:07 DmitryShvaika

Проверка по стандартам - можно сразу регистрировать в код-стайл.

marmyshev avatar Jul 29 '22 10:07 marmyshev

Но в данном случае - ошибка правильная. Любой реквизит может использоваться в любом запросе в любом месте конфигурации или расширения. нельзя смешивать ссылочные с нессылочными типами в одном реквизите (по стандарту!).

Как раз в Доп.реквизитах БСП для этого есть отдельные ревизит текст, например.

Предлагаемый вариант - искать все запросы и там анализировать использование реквизита - не жизнеспособный.

Для ситуаций когда вы "зуб даю, что нигде в соединениях не используется" - тогда ставьте подавление.

Наверное, если в конфигурации производительность запросов - не имеет никакого смысла - следует проверку отключать.

marmyshev avatar Jul 29 '22 10:07 marmyshev

Тогда зачем в стандарте писать "используемые ...." написали бы тогда для всех реквизитов... И плакал бы механизм доп. реквизитов и использование планов видов характеристик стало бы "вне закона". Но написано именно "ЕСЛИ используются соединения, упорядочивание и отборы". А если не используются - то можно сделать и такой реквизит и ошибки быть не должно. Понимаю, что трудоемко проверить использование реквизита в программе. Но правильно было бы его реализовать на мой взгляд. Если нет возможности - закрой задачу просто. Может позже дойдет до ее реализации.

DmitryShvaika avatar Jul 30 '22 10:07 DmitryShvaika

Извиняюсь. Характеристики не проверяются - проблема снята

DmitryShvaika avatar Sep 28 '22 02:09 DmitryShvaika