1C-Company / 1c-edt-issues

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

Расширение конфигурации: некорректное создание обработчика события с типом вызова "Изменение и контроль" #1385

Open aashtv opened 3 months ago

aashtv commented 3 months ago

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

Хочу в расширении переопределить обработчик события элемента формы. EDT позволяет создать обработчик с типом вызова "Изменение и контроль": создаёт метод <ПрефиксРасширения>_<Событие>ИзменениеИКонтроль(Элемент) с пустым телом, что должно приводить к ошибке в рантайме «Текст модуля для метода "%1" изменился». Но во в процессе выполнения метод «…ИзменениеИКонтроль» ведёт себя как метод с типом вызова «Перед», а конфигуратор показывает метод из расширения как метод «Вместо».

В описании формы генерируется XML

<handlers xsi:type="form:EventHandlerExtension">
  <event>OnChange</event>
  <name>Расширение_КонтрагентПриИзмененииИзменениеИКонтроль</name>
  <callType>ChangeAndValidate</callType>
</handlers>

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

  1. Добавьте в расширение форму любого объекта и откройте её
  2. В редакторе формы кликните по любому реквизиту
  3. Прокрутите палитру свойств до группы "События"
  4. Событию, например, "ПриИзменении" создайте обработчик с типом вызова "Изменение и контроль".
  5. Установите точки остановки в созданном методе и обработчике этого события в основной конфигурации
  6. Запустите отладку и вызовите это событие.

Отработает сначала код из метода из расширения, затем из конфигурации.

Скриншоты

photo_2024-04-04_09-19-05 (2) photo_2024-04-04_09-19-05 photo_2024-04-04_12-36-56

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

EDT вместо

&НаКлиенте
Процедура Расширение_КонтрагентПриИзмененииИзменениеИКонтроль(Элемент)
КонецПроцедуры

сгенерирует

&НаКлиенте
&ИзменениеИКонтроль("КонтрагентПриИзменении")
Процедура Расширение_КонтрагентПриИзменении(Элемент)
// тело изменяемого метода из конфигурации
КонецПроцедуры

Как минимум, пока в платформе не будет реализована полноценная поддержка Расширение_КонтрагентПриИзмененииИзменениеИКонтроль(Элемент)

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

Не применимо

Версия 1С:EDT

Ruby 2023.2.4

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

Windows

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

1C:Code style V8, 1C:SSL-support, 1C:Language Tool, Другие сторонние плагины Название плагина...

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

Тут ещё и платформа Расширение_КонтрагентПриИзмененииИзменениеИКонтроль(Элемент) обрабатывает не как "ИиК", а как "Перед", но это уже её баг. Проверял на 8.3.22.2283. Проект под 8.3.22, режим совместимости 8.3.17.