1c-edt-issues
1c-edt-issues copied to clipboard
Излишне детектируется ошибка "Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.).
Описание ошибки
Из лишне детектируется ошибка "Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов, например: Строка, Число, Дата, УникальныйИдентификатор, Булево, а также ХранилищеЗначения."
Данный реквизит не используется в соединениях, отборах или упорядочивании, но ошибка для него детектируется. Данная ошибка детектируется и для реквизита табличной части. А это стандартный подход в БСП хранения доп. реквизитов
Дополнительно: ошибка отображается в панели по 3 раза для каждого реквизита.
Как воспроизвести
- В любом справочнике создать составной реквизит или реквизит таб. части состоящий из строки и ссылки.
- Налюдать ошибку
Скриншоты
No response
Ожидаемое поведение
Должна выполняться проверка на использование реквизита в соединениях, отборах, упорядочиваниях.
Лог рабочей области
не требуется
Версия 1С:EDT
2021.3.4
Операционная система
Windows
Установленные плагины
No response
Дополнительная информация
test.zip архив с тестовым проектом, где воспроизведена ошибка
Проверка по стандартам - можно сразу регистрировать в код-стайл.
Но в данном случае - ошибка правильная. Любой реквизит может использоваться в любом запросе в любом месте конфигурации или расширения. нельзя смешивать ссылочные с нессылочными типами в одном реквизите (по стандарту!).
Как раз в Доп.реквизитах БСП для этого есть отдельные ревизит текст, например.
Предлагаемый вариант - искать все запросы и там анализировать использование реквизита - не жизнеспособный.
Для ситуаций когда вы "зуб даю, что нигде в соединениях не используется" - тогда ставьте подавление.
Наверное, если в конфигурации производительность запросов - не имеет никакого смысла - следует проверку отключать.
Тогда зачем в стандарте писать "используемые ...." написали бы тогда для всех реквизитов... И плакал бы механизм доп. реквизитов и использование планов видов характеристик стало бы "вне закона". Но написано именно "ЕСЛИ используются соединения, упорядочивание и отборы". А если не используются - то можно сделать и такой реквизит и ошибки быть не должно. Понимаю, что трудоемко проверить использование реквизита в программе. Но правильно было бы его реализовать на мой взгляд. Если нет возможности - закрой задачу просто. Может позже дойдет до ее реализации.
Извиняюсь. Характеристики не проверяются - проблема снята