1C-Company / 1c-edt-issues

Пространство для пожеланий и обсуждения ошибок 1C:Enterprise Development Tools
https://edt.1c.ru/
138 stars 9 forks source link

Edt не видит, что элемент формы не существует. Даже выводит список свойств и методов несуществующего элемента. #1364

Open DmitryShvaika opened 6 months ago

DmitryShvaika commented 6 months ago

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

Edt не видит, что элемент формы не существует. Даже выводит список свойств и методов несуществующего элемента.

image

image

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

  1. Ввести текст ниже в пустой форме.
// @strict-types

#Область ОбработчикиСобытийФормы

// При создании на сервере.
// 
// Параметры:
//  Отказ - Булево
//  СтандартнаяОбработка - Булево
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Ааа = Элементы.АбраКадабра;

КонецПроцедуры

#КонецОбласти
  1. Наблюдать ошибку

Скриншоты

No response

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

На несуществующем элементе должна выдаваться ошибка контекстная подсказка должна быть пустой...

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

не требуется

Версия 1С:EDT

Ruby 2023.3.1

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

Windows

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

No response

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

No response

RedMammoth commented 6 months ago

Элементы могут создаваться динамически, но поддержу, кажется лучше наругаться, а к динамическим элементам лучше обращаться безопасно, с проверкой существования

MaksimDzyuba commented 5 months ago

Всем привет, @RedMammoth все верно объяснил, почему выводится подсказка и прочее. По поводу валидации, сейчас она выключена специально, так как проверяли на типовых, там очень много таких случаев, слишком много ложных срабатываний, а механизмов, как это дотипизировать пока я не вижу, если честно, может подскажете что-то

adminimusRU commented 5 months ago

проверяли на типовых, там очень много таких случаев, слишком много ложных срабатываний

может новую директиву для модулей добавить, по аналогии с включением строгой типизации. Что-нибудь вроде // @strict-from-elements в начале модуля формы, и включать для таких проверку существования элементов при анализе. А на старых модулях не включать без директивы, тогда и ложных срабатываний будет меньше.

DmitryShvaika commented 5 months ago

Всем привет, @RedMammoth все верно объяснил, почему выводится подсказка и прочее. По поводу валидации, сейчас она выключена специально, так как проверяли на типовых, там очень много таких случаев, слишком много ложных срабатываний, а механизмов, как это дотипизировать пока я не вижу, если честно, может подскажете что-то

Элементы, добавляемые динамически предлагается получать методом Найти - https://github.com/1C-Company/1c-edt-issues/issues/1364#issuecomment-2007048097 писал. Их может и не быть на форме. Мне кажется проверка была бы полезной... Есть еще реквизиты формы, которые то же можно менять динамически и для них проверка работает. Почему аналогично не сделать для элементов - не понимаю.