Skip to content

CodePilot1C EDT v0.1.7.20260714-1024 — Managed Form Event Handlers

Choose a tag to compare

@ondysss ondysss released this 14 Jul 10:27

CodePilot1C EDT — управляемые обработчики событий формы (Managed Form Event Handlers)

Сборка: 0.1.7.20260714-1024

Агент теперь умеет безопасно привязывать обработчики событий управляемых форм: устанавливает событие на EMF-модели формы И атомарно генерирует соответствующую процедуру-обработчик в модуле формы (Module.bsl) — как для базовой конфигурации, так и для форм 1С-расширений (расширения). Всё через существующий инструмент mutate_form_model (поток валидационного токена MUTATE_FORM_MODEL), без нового инструмента.


Привязка обработчиков событий

  • Новые операции add_event_handler / set_event_handler / remove_event_handler инструмента mutate_form_model.
  • Полное покрытие событий: форма (жизненный цикл, семейство записи, серверные дифференциаторы, ОбработкаВыбора / ОбработкаНавигационнойСсылки), поля, таблицы (включая семейство drag-and-drop).
  • Привязка на кнопке/группе отклоняется с подсказкой перейти на add_command; при неизвестном событии возвращается список допустимых событий элемента.
  • inspect_form_layout показывает существующие обработчики событий по узлам формы.

Генерация BSL-стаба

  • Директива (&НаКлиенте / &НаСервере / &НаСервереБезКонтекста) выводится из окружения события (Event.getEnvironments() / isServerCallWithContextNotAllowed()), а не из эвристики по имени.
  • Сигнатура воспроизводит ParamSet события дословно (включая out-параметры вроде СтандартнаяОбработка); ключевые слова — по ScriptVariant конфигурации (RU/EN).
  • Атомарность «оба или ничего»: при сбое записи стаба слот-обработчик откатывается компенсирующей транзакцией. Идемпотентность: повторная привязка не создаёт дубль процедуры и не перезаписывает непустое тело.

Поддержка расширений (расширения)

  • На усыновлённых формах создаётся EventHandlerExtension с call_type (ExtendedMethodCallType, значение по умолчанию BEFORE).
  • Имя процедуры-обработчика не префиксуется именем расширения (префикс — только для имён метаданных верхнего уровня); определяется наличие базового обработчика.
  • Целевой усыновлённый объект резолвится корректно через существующий путь формы (без лишних вызовов внешне-свойственного FQN).

Совместимость провайдеров

  • Прайминг новых операций в поверхности инструментов — provider-neutral (без ветвления по семейству модели): поля event / handler_name / target / call_type.

Проверка

  • Полная сборка Tycho reactor: mvn -DskipTests package (публикация p2 — mvn clean verify): BUILD SUCCESS.
  • Регрессия: 9 классов тестов обработчиков событий зелёные.
  • Update site (GitHub Pages): https://ondysss.github.io/codepilot1c-edt/.
  • Update site (локально): repositories/com.codepilot1c.update/target/repository.
  • ZIP: repositories/com.codepilot1c.update/target/com.codepilot1c.update-0.1.7-SNAPSHOT.zip.
  • Живой EDT-smoke на базовой и расширенной форме подтверждён пользователем.