From eaa9bf87582b7c7885b5122c7e2c88d821ef2403 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:47:28 +0000 Subject: [PATCH 1/2] Initial plan From fd945de22e7c03dfcdb3bcc0d539d39766ae171a Mon Sep 17 00:00:00 2001 From: Nikita Fedkin Date: Thu, 12 Feb 2026 17:43:07 +0100 Subject: [PATCH 2/2] fix: add missing ExchangePlans merge in MDMerger MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ExchangePlans (ПланОбмена) were not merged when combining configuration with extensions in multi-root mode, causing false positives in QueryToMissingMetadata diagnostic. Fixes #579 --- .../_1c_syntax/bsl/reader/MDMerger.java | 1 + .../bsl/mdclasses/MDClassesSolutionTest.java | 5 ++-- .../src/Configuration/Configuration.mdo" | 1 + ...\261\320\274\320\265\320\275\320\2601.mdo" | 23 +++++++++++++++++++ .../src/Configuration/Configuration.mdo" | 1 + ...\261\320\274\320\265\320\275\320\2602.mdo" | 23 +++++++++++++++++++ 6 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 "src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.mdo" create mode 100644 "src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/ExchangePlans/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602.mdo" diff --git a/src/main/java/com/github/_1c_syntax/bsl/reader/MDMerger.java b/src/main/java/com/github/_1c_syntax/bsl/reader/MDMerger.java index 3ea79705a..d74ff6123 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/reader/MDMerger.java +++ b/src/main/java/com/github/_1c_syntax/bsl/reader/MDMerger.java @@ -106,6 +106,7 @@ public static Configuration merge(Configuration cf, ConfigurationExtension exten .clearWebSocketClients().webSocketClients(mergeMD(cf, extension, CF::getWebSocketClients, newChildren)) .clearHttpServices().httpServices(mergeMD(cf, extension, CF::getHttpServices, newChildren)) .clearIntegrationServices().integrationServices(mergeMD(cf, extension, CF::getIntegrationServices, newChildren)) + .clearExchangePlans().exchangePlans(mergeMD(cf, extension, CF::getExchangePlans, newChildren)) .clearConstants().constants(mergeMD(cf, extension, CF::getConstants, newChildren)) .clearCatalogs().catalogs(mergeMD(cf, extension, CF::getCatalogs, newChildren)) .clearDocuments().documents(mergeMD(cf, extension, CF::getDocuments, newChildren)) diff --git a/src/test/java/com/github/_1c_syntax/bsl/mdclasses/MDClassesSolutionTest.java b/src/test/java/com/github/_1c_syntax/bsl/mdclasses/MDClassesSolutionTest.java index 188f3854e..aa2eca830 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/mdclasses/MDClassesSolutionTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/mdclasses/MDClassesSolutionTest.java @@ -67,18 +67,19 @@ void createSolutionCf_2_exts() { var cf = (Configuration) solution; assertThat(cf.getSupportVariant()).isEqualTo(SupportVariant.NONE); assertThat(cf.getModules()).hasSize(3); - assertThat(cf.getChildren()).hasSize(10); + assertThat(cf.getChildren()).hasSize(12); assertThat(cf.getAllModules()).hasSize(7); assertThat(cf.getRoles()).hasSize(2); assertThat(cf.getLanguages()).hasSize(1); + assertThat(cf.getExchangePlans()).hasSize(2); assertThat(cf.getConstants()).hasSize(1); assertThat(cf.getCatalogs()).hasSize(3); assertThat(cf.getDocuments()).hasSize(1); assertThat(cf.getEnums()).hasSize(1); assertThat(cf.getDataProcessors()).hasSize(1); - assertThat(cf.getPlainChildren().stream().map(MD::getMdoRef).sorted()).hasSize(53); + assertThat(cf.getPlainChildren().stream().map(MD::getMdoRef).sorted()).hasSize(71); assertThat(cf.getModulesByType()).hasSize(7) .containsValue(ModuleType.FormModule) diff --git "a/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/Configuration/Configuration.mdo" "b/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/Configuration/Configuration.mdo" index 4db1a8b3a..6f29864dd 100644 --- "a/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/Configuration/Configuration.mdo" +++ "b/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/Configuration/Configuration.mdo" @@ -38,6 +38,7 @@ ru + ExchangePlan.ПланОбмена1 Catalog.Справочник1 Catalog.Справочник2 Document.Документ1 diff --git "a/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.mdo" "b/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.mdo" new file mode 100644 index 000000000..6936ccbeb --- /dev/null +++ "b/src/test/resources/solutions/sol1/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217/src/ExchangePlans/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601/\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2601.mdo" @@ -0,0 +1,23 @@ + + + + + + + + + + ПланОбмена1 + true + ExchangePlan.ПланОбмена1.StandardAttribute.Description + ExchangePlan.ПланОбмена1.StandardAttribute.Code + DontUse + DontUse + Managed + Use + 9 + Variable + 25 + InDialog + BothWays + diff --git "a/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/Configuration/Configuration.mdo" "b/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/Configuration/Configuration.mdo" index 6c3316f58..6c0b271bb 100644 --- "a/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/Configuration/Configuration.mdo" +++ "b/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/Configuration/Configuration.mdo" @@ -43,6 +43,7 @@ ru Role.Расш1_ОсновнаяРоль + ExchangePlan.Расш1_ПланОбмена2 Constant.Расш1_Константа1 Catalog.Расш1_Справочник3 Document.Документ1 diff --git "a/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/ExchangePlans/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602.mdo" "b/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/ExchangePlans/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602.mdo" new file mode 100644 index 000000000..28ab65feb --- /dev/null +++ "b/src/test/resources/solutions/sol1/\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\2651/src/ExchangePlans/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602/\320\240\320\260\321\201\321\2101_\320\237\320\273\320\260\320\275\320\236\320\261\320\274\320\265\320\275\320\2602.mdo" @@ -0,0 +1,23 @@ + + + + + + + + + + Расш1_ПланОбмена2 + true + ExchangePlan.Расш1_ПланОбмена2.StandardAttribute.Description + ExchangePlan.Расш1_ПланОбмена2.StandardAttribute.Code + DontUse + DontUse + Managed + Use + 9 + Variable + 25 + InDialog + BothWays +