/form-validate - валидация управляемой формы 1С

SkillDev tools

This adds managed form validation for 1C, so problems in a form are caught before they cause trouble. Once added, your AI can check any 1C managed form it creates or modifies for correctness. When a BaseForm is present, callType and extension IDs are verified automatically as part of the check.

Available today. Use it from your connected AI after setup.

Add the skill, then ask your AI to validate a form right after it creates or edits one.

Then ask your AI: use the /form-validate - валидация управляемой формы 1С skill

What your AI can do with it

  • Check a 1C managed form for correctness after it is created
  • Re-validate a form after changes to confirm it is still correct
  • Automatically verify callType when a BaseForm is present
  • Automatically check extension IDs when a BaseForm is present

What this skill tells your AI

The instructions your AI receives, as published by desko77/cursor-1c-skills in skills/1c-form-validate/SKILL.md and read by ahel’s review.

Проверяет Form.xml на структурные ошибки: уникальность ID, наличие companion-элементов, корректность ссылок DataPath и команд.

Параметры

ПараметрОбяз.Умолч.Описание
FormPathда-Путь к файлу Form.xml
Detailedнет-Подробный вывод (все проверки, включая успешные)
MaxErrorsнет30Остановиться после N ошибок
IndexPathнет-Индекс конфигурации от 1c-config-index: включает сверку путей данных с объектом-владельцем

Команда

powershell.exe -NoProfile -File skills/1c-form-validate/scripts/form-validate.ps1 -FormPath "Catalogs/Номенклатура/Forms/ФормаЭлемента"
powershell.exe -NoProfile -File skills/1c-form-validate/scripts/form-validate.ps1 -FormPath "src/МояОбработка/Forms/Форма/Ext/Form.xml"

Сверка путей данных с объектом-владельцем (проверка 13)

Проверка 5 убеждается, что КОРЕНЬ пути данных - существующий реквизит формы. Дальше путь не разбирался вовсе: Объект.ИНН при отсутствующем ИНН у справочника проходил молча, потому что валидатор ничего не знал про конфигурацию.

С -IndexPath он узнает. Владелец определяется по ТИПУ реквизита формы (cfg:CatalogObject.Контрагенты), а не по пути файла: так работает и для формы записи регистра, и для формы, лежащей не там, где принято. Дальше сверяются вторая часть пути (реквизит, табличная часть, измерение, ресурс, стандартный реквизит) и третья (колонка табличной части).

Чего проверка НЕ делает намеренно:

  • реквизит формы составного типа пропускается - путь может вести в любой из типов;
  • реквизит типа DynamicList или ValueTable пропускается: его состав задается запросом или колонками формы, а не метаданными;
  • объект без блока StandardAttributes пропускается целиком, иначе любой Объект.Code был бы объявлен несуществующим;
  • дальше третьей части путь не разбирается - навигация по ссылке потребовала бы разрешать типы цепочкой.

Тяжесть - предупреждение. Проверка новая и кросс-объектная, а ложное срабатывание в валидаторе дороже пропуска: тот, кто однажды получил ложную ошибку, отключает проверку целиком.

Стандартные реквизиты в путях данных пишутся внутренними английскими именами (Объект.Description, Объект.Code, Запись.Period) - индекс отдает их ровно в таком виде, потому что берет из блока StandardAttributes самой выгрузки.

python skills/1c-config-index/scripts/config-index.py -ConfigPath src -OutFile .cache/index.json
python skills/1c-form-validate/scripts/form-validate.py -FormPath src/Catalogs/Контрагенты/Forms/ФормаЭлемента -IndexPath .cache/index.json

Signals

GitHub stars
57
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-1c-form-validate-desko77
Source
github.com/desko77/cursor-1c-skills