Переработана модель содержимого формы - #674
Conversation
- новая иерархия визуальных элементов форм - переработаны комнады, атрибуты и параметры формы - переименован класс обработчиков - доработано чтение - добавлены новые методы в модель formData
📝 WalkthroughWalkthroughThe form storage API now models typed elements, nested attributes, event handlers, commands, and parameters. Designer and EDT readers resolve these models through remapped XML conversion, while flattening utilities and tests were updated for the new structure. ChangesForm model overhaul
Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant XML
participant FormElementConverter
participant FormElementReaderContext
participant Unmarshaller
participant ManagedFormData
XML->>FormElementConverter: provide form element node
FormElementConverter->>FormElementReaderContext: resolve element type
FormElementConverter->>Unmarshaller: unmarshal child nodes
Unmarshaller->>FormElementReaderContext: apply remapped fields
FormElementReaderContext->>ManagedFormData: build typed element data
Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 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: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/context/AbstractReaderContext.java (1)
157-183: 🚀 Performance & Scalability | 🟠 Major | ⚡ Quick winUnconditional list copy on every accumulation — quadratic-time hot path.
Once
existingbecomes aList(after first promotion viaList.of(existing)), every subsequent call still doesnew ArrayList<>((List<Object>) existingList)before appending, instead of mutating the already-mutable list in place. SincesetValueis invoked for every XML field on the hot read path (elements, attributes, columns, event handlers, etc.), accumulatingnvalues under one key becomes O(n) per call / O(n²) total, versus the prior direct-cast-and-mutate approach.⚡ Proposed fix: copy only on first promotion, mutate afterwards
cache.compute(key, (String k, Object existing) -> { - if(existing != null && !(existing instanceof List<?>) && !existing.equals(value)) { - existing = List.of(existing); - } - - if (existing instanceof List<?> existingList) { - `@SuppressWarnings`("unchecked") - var list = new ArrayList<>((List<Object>) existingList); + if (existing != null && !(existing instanceof List<?>) && !existing.equals(value)) { + var list = new ArrayList<>(); + list.add(existing); + existing = list; + } + + if (existing instanceof List<?> existingList) { + `@SuppressWarnings`("unchecked") + var list = (List<Object>) existingList; if (value instanceof List<?> valueList) { list.addAll(valueList); } else { list.add(value); } return list;The correctness fix itself (promoting a differing scalar into a list instead of silently overwriting it) looks like a legitimate improvement over the prior behavior.
🤖 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 `@src/main/java/com/github/_1c_syntax/bsl/reader/common/context/AbstractReaderContext.java` around lines 157 - 183, Update setValue’s cache.compute accumulation so existing mutable lists are appended to in place instead of copied on every call. Only create a new mutable list when promoting an existing scalar or when the incoming value is itself a list, while preserving the differing-scalar promotion behavior and list accumulation semantics.
🧹 Nitpick comments (4)
src/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementTest.java (1)
211-318: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueConsider a lighter-weight fixture format for the count matrices.
The custom
CLASS_MATRIX_TXT/TYPE_MATRIX_TXTtext blocks plus hand-rolledparseCsvColumnadd a fair amount of custom parsing logic for what is essentially tabular test data. A@MethodSourcereturning explicitMap.of(...)per file, or an external CSV/JSON resource loaded via existing test utilities, would reduce the bespoke parsing surface and be easier to maintain as rows are added.🤖 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 `@src/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementTest.java` around lines 211 - 318, Replace the custom CLASS_MATRIX_TXT and TYPE_MATRIX_TXT text blocks and parseCsvColumn helper with a lighter-weight fixture representation, preferably explicit per-file Map.of(...) values in the formFileProvider MethodSource or an existing CSV/JSON test resource utility. Preserve the current per-file class/type counts and both EDT/Designer argument variants.src/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItemsTest.java (1)
140-148: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winNo positive-path coverage for the new key-parameter flag.
All three asserted parameters have
isKeyParameter()== false. The PR explicitly introduces the "признак ключевого параметра" (key-parameter flag), but no test in this file (orFormElementTest) verifies thetruecase, leaving this new API surface unverified.🤖 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 `@src/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItemsTest.java` around lines 140 - 148, The parameter assertions in FormItemsTest only cover false for isKeyParameter(), so add positive-path coverage for a parameter marked as a key parameter. Extend the relevant form fixture or test setup to include a key parameter, then assert its name and that isKeyParameter() returns true; also add equivalent coverage in FormElementTest if that is where the new flag is exercised.src/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.java (1)
156-197: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low valueHandle unmatched additional columns explicitly.
The current logic drops dotted columns when no exact suffix match is found. That may be intentional, but add a diagnostic/log branch when an additional column is not merged so the absence is not silent.
🤖 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 `@src/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.java` around lines 156 - 197, Update mergeAdditionalColumns to detect when each addCol has no matching regular column and emit a diagnostic/log message for that unmatched additional column. Preserve the existing merge behavior for exact suffix matches and ensure unmatched dotted columns are reported rather than silently ignored.src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.java (1)
32-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDocument the new public converter types.
src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.java#L32-L34: add class Javadoc describing Designer command/parameter conversion.src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormParameterCommandConverter.java#L31-L32: add corresponding EDT converter Javadoc.As per coding guidelines, update Javadoc documentation when changing public API.
🤖 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 `@src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.java` around lines 32 - 34, Add class-level Javadoc to FormParameterCommandConverter in src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.java covering Designer command/parameter conversion, and add corresponding class-level Javadoc to FormParameterCommandConverter in src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormParameterCommandConverter.java. Make no other changes.Source: Coding guidelines
🤖 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 `@src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormCommand.java`:
- Around line 80-84: Update CommandRepresentation.valueByName so each recognized
branch returns the resolved result after the null check instead of
unconditionally returning AUTO, preserving AUTO only for unknown or absent
names.
In
`@src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormDataPathOwner.java`:
- Around line 27-31: Update the getDataPath() declaration in FormDataPathOwner
to return `@NonNull` String, importing org.jspecify.annotations.NonNull, so the
public API explicitly declares that data paths are never null.
In
`@src/main/java/com/github/_1c_syntax/bsl/mdo/support/CommandRepresentation.java`:
- Around line 61-67: Update CommandRepresentation.valueByName in
src/main/java/com/github/_1c_syntax/bsl/mdo/support/CommandRepresentation.java:61-67
to return the resolved result when present and AUTO only when the lookup is
null; apply the same result-preserving fallback in FillChecking.valueByName at
src/main/java/com/github/_1c_syntax/bsl/mdo/support/FillChecking.java:59-65,
returning DONT_CHECK only for unknown values.
In
`@src/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.java`:
- Around line 57-62: The raw-node constructor FormElementReaderContext(String,
HierarchicalStreamReader) must not pass a null class to
TransformationUtils.builder. Resolve the lowercased element name with
CLASSES.getOrDefault(..., DEFAULT_CLASS_FORM_ELEMENT) before assigning realClass
and creating the builder; only add a singular additionalcolumns mapping if that
key specifically requires unmarshalling without a parent type.
In
`@src/main/java/com/github/_1c_syntax/bsl/reader/common/context/std_attributes/StdAtrInfo.java`:
- Around line 110-132: Update the extended-dimension constants in StdAtrInfo so
EXT_DIMENSION_TYPE, EXT_DIMENSION_1 through EXT_DIMENSION_3, and their TYPE
variants no longer reuse computeValueType or the shared "type" cache key;
register each with distinct typed computation or explicit placeholder behavior.
Remove EXT_DIMENSION_4, EXT_DIMENSION_TYPE_4, EXT_DIMENSION_5, and
EXT_DIMENSION_TYPE_5 if they are not valid accounting-register attributes.
In
`@src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormElementConverter.java`:
- Around line 49-77: The form-element conversion currently lets Integer.parseInt
in the element conversion flow throw for malformed id attributes, aborting the
whole XML document. Update the converter method containing
FormElementReaderContext creation and id assignment to safely handle non-numeric
ids using the established FormAttributeConverter behavior, while preserving
valid numeric id handling; alternatively enforce and document a numeric-id
contract consistently for every FormElement type.
---
Outside diff comments:
In
`@src/main/java/com/github/_1c_syntax/bsl/reader/common/context/AbstractReaderContext.java`:
- Around line 157-183: Update setValue’s cache.compute accumulation so existing
mutable lists are appended to in place instead of copied on every call. Only
create a new mutable list when promoting an existing scalar or when the incoming
value is itself a list, while preserving the differing-scalar promotion behavior
and list accumulation semantics.
---
Nitpick comments:
In
`@src/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.java`:
- Around line 156-197: Update mergeAdditionalColumns to detect when each addCol
has no matching regular column and emit a diagnostic/log message for that
unmatched additional column. Preserve the existing merge behavior for exact
suffix matches and ensure unmatched dotted columns are reported rather than
silently ignored.
In
`@src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.java`:
- Around line 32-34: Add class-level Javadoc to FormParameterCommandConverter in
src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.java
covering Designer command/parameter conversion, and add corresponding
class-level Javadoc to FormParameterCommandConverter in
src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormParameterCommandConverter.java.
Make no other changes.
In
`@src/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementTest.java`:
- Around line 211-318: Replace the custom CLASS_MATRIX_TXT and TYPE_MATRIX_TXT
text blocks and parseCsvColumn helper with a lighter-weight fixture
representation, preferably explicit per-file Map.of(...) values in the
formFileProvider MethodSource or an existing CSV/JSON test resource utility.
Preserve the current per-file class/type counts and both EDT/Designer argument
variants.
In `@src/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItemsTest.java`:
- Around line 140-148: The parameter assertions in FormItemsTest only cover
false for isKeyParameter(), so add positive-path coverage for a parameter marked
as a key parameter. Extend the relevant form fixture or test setup to include a
key parameter, then assert its name and that isKeyParameter() returns true; also
add equivalent coverage in FormElementTest if that is where the new flag is
exercised.
🪄 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: 7fbd08b6-b011-4922-a7f5-a276b2dc7441
⛔ Files ignored due to path filters (60)
src/test/resources/fixtures/mdclasses/AccountingRegisters.РегистрБухгалтерии1.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/Configuration.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/Catalog.Справочник1.Form.ФормаВыбора.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/Catalog.Справочник1.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/Catalog.Справочник1.Form.ФормаЭлемента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/CommonForm.Форма.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/DataProcessor.Обработка1.Form.ЖурналРегистрации.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/DataProcessor.Обработка1.Form.Форма.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/Document.Документ1.Form.ФормаВыбора.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/Document.Документ1.Form.ФормаДокумента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/Document.Документ1.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках.Form.ListForm.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses/formdata/ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках.Form.RecordForm.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses_3_25/Configuration.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/mdclasses_3_27/Configuration.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.ВерсииФайлов.Form.ВерсииФайла.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.ВерсииФайлов.Form.ФормаВыбора.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.ВерсииФайлов.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.Заметки.Form.ВсеЗаметки.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.Заметки.Form.ЗаметкиПоПредмету.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.Заметки.Form.МоиЗаметки.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.Заметки.Form.ФормаГруппы.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Catalog.Заметки.Form.ФормаЭлемента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/CommonForm.Вопрос.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Document.Анкета.Form.ФормаДокумента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/Document.Анкета.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/InformationRegister.СклоненияПредставленийОбъектов.Form.ФормаЗаписи.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_1/formdata/InformationRegister.ЭлектронныеПодписи.Form.ОбоснованиеДостоверностиПодписи.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.ВерсииФайлов.Form.ВерсииФайла.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.ВерсииФайлов.Form.ФормаВыбора.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.ВерсииФайлов.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.Заметки.Form.ВсеЗаметки.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.Заметки.Form.ЗаметкиПоПредмету.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.Заметки.Form.МоиЗаметки.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.Заметки.Form.ФормаГруппы.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.Заметки.Form.ФормаЭлемента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.SMSРассылкаПаролей.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ПараметрыFTP.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ПаролиШифрование.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ПовторнаяРассылкаОтчетов.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ПолучателиРассылки.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ПредварительныйПросмотрПисьма.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.Предупреждение.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ФормаВыбораГруппы.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ФормаГруппы.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Catalog.РассылкиОтчетов.Form.ФормаЭлемента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/CommonForm.Вопрос.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/CommonForm.ФормаНастроекОтчета.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/CommonForm.ФормаОтчета.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Document.Анкета.Form.ФормаДокумента.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/Document.Анкета.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/DocumentJournal.Взаимодействия.Form.ВыборТипаПредмета.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/DocumentJournal.Взаимодействия.Form.НастройкиРаботыСПочтой.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/DocumentJournal.Взаимодействия.Form.ПараметрыЭлектронногоПисьма.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/DocumentJournal.Взаимодействия.Form.ПечатьЭлектронногоПисьма.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/DocumentJournal.Взаимодействия.Form.ФормаСписка.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/DocumentJournal.Взаимодействия.Form.ФормаСпискаПараметрическая.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/InformationRegister.СклоненияПредставленийОбъектов.Form.ФормаЗаписи.jsonis excluded by!src/test/resources/**src/test/resources/fixtures/ssl_3_2/formdata/InformationRegister.ЭлектронныеПодписи.Form.ОбоснованиеДостоверностиПодписи.jsonis excluded by!src/test/resources/**
📒 Files selected for processing (49)
build.gradle.ktssrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyFormData.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/FormData.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/ManagedFormData.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormAddition.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormAttribute.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormButton.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormCommand.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormDataPathOwner.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormDecoration.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElement.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementOwner.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementType.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormEventHandler.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormEventHandlerOwner.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormField.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormGroup.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItem.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormParameter.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormTable.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormUnknown.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/support/CommandRepresentation.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/support/FillChecking.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/support/UseMode.javasrc/main/java/com/github/_1c_syntax/bsl/mdo/utils/LazyLoader.javasrc/main/java/com/github/_1c_syntax/bsl/reader/common/context/AbstractReaderContext.javasrc/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.javasrc/main/java/com/github/_1c_syntax/bsl/reader/common/context/std_attributes/StdAtrInfo.javasrc/main/java/com/github/_1c_syntax/bsl/reader/common/context/std_attributes/StdAttributeFiller.javasrc/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.javasrc/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormAttributeConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormElementConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormEventHandlerConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormParameterCommandConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.javasrc/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormAttributeConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormElementConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormEventHandlerConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormParameterCommandConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ManagedFormDataConverter.javasrc/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/Unmarshaller.javasrc/test/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationTest.javasrc/test/java/com/github/_1c_syntax/bsl/mdclasses/ExternalReportTest.javasrc/test/java/com/github/_1c_syntax/bsl/mdo/CommonFormTest.javasrc/test/java/com/github/_1c_syntax/bsl/mdo/children/ObjectFormTest.javasrc/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementTest.javasrc/test/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItemsTest.javasrc/test/java/com/github/_1c_syntax/bsl/test_utils/Fixtures.java



Описание
Переработана модуль содержимого формы (formData)
Связанные задачи
Closes #648
Closes #649
Closes #650
Closes #651
Closes #657 - кроме контекстного меню
Closes #665
Closes #666
Чеклист
Общие
gradlew precommit)Дополнительно
Summary by CodeRabbit
New Features
Bug Fixes