Переработанная модель содержимого формы из mdclasses - #4331
Conversation
mdclasses переехала на новую иерархию элементов формы (mdclasses#674): вместо плоского `FormItem` — `FormElement` с наследниками (`FormField`, `FormGroup`, `FormTable`, `FormButton`, `FormDecoration`, `FormAddition`) и интерфейсами-ролями (`FormElementOwner`, `FormDataPathOwner`, `FormEventHandlerOwner`). Заодно появились команды и параметры формы, признак основного реквизита, колонки реквизитов и события элементов — то, ради чего заводились mdclasses#648-#651, #657, #665, #666. Здесь только подъём зависимости и адаптация к переименованиям: `getPlainItems` → `getPlainElements`, `ПутьКДанным` спрашивается через `FormDataPathOwner` — у элементов, у которых его быть не может, метода больше нет. `bsl-common-library` поднята вместе с ней вынужденно: новая mdclasses требует 0.12.4, а на 0.12.3 падает чтение конфигурации целиком (`NoSuchFieldError: V8ValueType.DATA_COMPOSITION_FIELD`). `ForbiddenMetadataNameDiagnosticTest` ждал 19 диагностик, стало 17: реализовано чтение иерархии справочника (mdclasses#656), и у неиерархического справочника фикстуры больше нет стандартных реквизитов `Родитель` и `ЭтоГруппа`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe project updates two dependencies. The form-element diagnostic now uses ChangesForm model alignment
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@build.gradle.kts`:
- Around line 101-102: Update the mdclasses dependency declaration in
build.gradle.kts from the mutable 0.19.0.82-SNAPSHOT snapshot to the released
0.20.0 version containing mdclasses#674, then run the dependency and test checks
defined by the Gradle build.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 233c781f-fed4-4bcd-b6a2-a68621f06846
📒 Files selected for processing (3)
build.gradle.ktssrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/WrongDataPathForFormElementsDiagnostic.javasrc/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ForbiddenMetadataNameDiagnosticTest.java
| api("io.github.1c-syntax:mdclasses:0.19.0.82-SNAPSHOT") | ||
| api("io.github.1c-syntax:bsl-common-library:0.12.4") |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n 'mdclasses|bsl-common-library|mavenCentral|snapshot|repositories' \
--glob '*.gradle' --glob '*.gradle.kts' --glob 'settings.gradle*'
curl -fsSL \
'https://repo1.maven.org/maven2/io/github/1c-syntax/mdclasses/maven-metadata.xml' \
| grep -E '0\.19\.0\.82|0\.19\.1|0\.20\.0' || trueRepository: 1c-syntax/bsl-language-server
Length of output: 255
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== gradle files =="
git ls-files '*gradle*' '*.gradle*' 'settings.gradle*'
echo "== build.gradle.kts relevant lines =="
cat -n build.gradle.kts | sed -n '85,110p'
echo "== mdclasses versions on Maven Central =="
curl -fsSL 'https://repo1.maven.org/maven2/io/github/1c-syntax/mdclasses/maven-metadata.xml'
echo
echo "== bsl-common-library versions on Maven Central =="
curl -fsSL 'https://repo1.maven.org/maven2/io/github/1c-syntax/bsl-common-library/maven-metadata.xml'
echoRepository: 1c-syntax/bsl-language-server
Length of output: 3931
Replace the mdclasses snapshot before merging.
0.19.0.82-SNAPSHOT is mutable and not available on Maven Central; the nearest release is 0.20.0. Use the released version that contains mdclasses#674, then run the dependency and test checks required by build.gradle.kts.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@build.gradle.kts` around lines 101 - 102, Update the mdclasses dependency
declaration in build.gradle.kts from the mutable 0.19.0.82-SNAPSHOT snapshot to
the released 0.20.0 version containing mdclasses#674, then run the dependency
and test checks defined by the Gradle build.
Source: Coding guidelines
|



Подъём mdclasses на переработанную модель содержимого формы (mdclasses#674) и адаптация к ней.
Вместо плоского
FormItem— иерархияFormElementс наследниками (FormField,FormGroup,FormTable,FormButton,FormDecoration,FormAddition) и интерфейсами-ролями (FormElementOwner,FormDataPathOwner,FormEventHandlerOwner). Здесь только подъём и адаптация к переименованиям; новые данные (команды и параметры формы, признак основного реквизита, колонки реквизитов, события элементов) пока не используются — это отдельная работа.Что поменялось в коде:
FormData.getPlainItems()→getPlainElements();ПутьКДаннымспрашивается черезFormDataPathOwner: у элементов, у которых его быть не может, метода больше нет — раньше он возвращал пустую строку.Два неочевидных момента:
bsl-common-libraryподнята вынужденно. Новая mdclasses требует 0.12.4; на 0.12.3 падает чтение конфигурации целиком —NoSuchFieldError: V8ValueType.DATA_COMPOSITION_FIELD, то есть метаданные не читаются вовсе, а не только формы.ForbiddenMetadataNameDiagnosticTest: 19 → 17. Реализовано чтение иерархии справочника (mdclasses#656), и у неиерархического справочника фикстуры больше нет стандартных реквизитовРодительиЭтоГруппа— их и не должно быть.Версия mdclasses пока снапшотная: правка влита в develop, релиза ещё нет. Перед вливанием заменить на релизную.
Проверка: полный
checkзелёный, 639 тестовых классов.Summary by CodeRabbit