Skip to content

Commit d904dfe

Browse files
authored
Merge pull request #551 from johnnyshut/feature/ext-checkunique
feat: Добавлена ​​поддержка CodeSeries и CheckUnique в Планы видов характеристик и Планы счетов
2 parents cbc5c89 + 7943559 commit d904dfe

16 files changed

+141
-15
lines changed

src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfAccounts.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.github._1c_syntax.bsl.mdo.children.ObjectCommand;
2727
import com.github._1c_syntax.bsl.mdo.children.ObjectForm;
2828
import com.github._1c_syntax.bsl.mdo.children.ObjectTemplate;
29+
import com.github._1c_syntax.bsl.mdo.support.CodeSeries;
2930
import com.github._1c_syntax.bsl.mdo.support.ObjectBelonging;
3031
import com.github._1c_syntax.bsl.mdo.support.RoleRight;
3132
import com.github._1c_syntax.bsl.mdo.utils.LazyLoader;
@@ -122,6 +123,24 @@ public class ChartOfAccounts implements ReferenceObject, AccessRightsOwner {
122123
@Default
123124
MultiLanguageString explanation = MultiLanguageString.EMPTY;
124125

126+
/**
127+
* Проверять уникальность кода плана счетов.
128+
* Определяет, нужно ли проверять уникальность кода плана счетов.
129+
* Если значение равно true, то код плана счетов должен быть уникальным в пределах области,
130+
* определяемой свойством {@link #codeSeries}. Если false, проверка уникальности не выполняется.
131+
*/
132+
@Default
133+
boolean checkUnique = false;
134+
135+
/**
136+
* Серия кодов плана счетов.
137+
* Определяет область действия уникальности кода плана счетов.
138+
* Значение по умолчанию: {@link CodeSeries#WHOLE_CATALOG}.
139+
* Для формата EDT: если поле отсутствует, автоматически устанавливается значение WHOLE_CATALOG.
140+
*/
141+
@Default
142+
CodeSeries codeSeries = CodeSeries.WHOLE_CATALOG;
143+
125144
/**
126145
* Возвращает перечень возможных прав доступа
127146
*/

src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfCharacteristicTypes.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.github._1c_syntax.bsl.mdo.children.ObjectCommand;
2525
import com.github._1c_syntax.bsl.mdo.children.ObjectForm;
2626
import com.github._1c_syntax.bsl.mdo.children.ObjectTemplate;
27+
import com.github._1c_syntax.bsl.mdo.support.CodeSeries;
2728
import com.github._1c_syntax.bsl.mdo.support.ObjectBelonging;
2829
import com.github._1c_syntax.bsl.mdo.support.RoleRight;
2930
import com.github._1c_syntax.bsl.mdo.utils.LazyLoader;
@@ -116,6 +117,24 @@ public class ChartOfCharacteristicTypes implements ReferenceObject, AccessRights
116117
@Default
117118
MultiLanguageString explanation = MultiLanguageString.EMPTY;
118119

120+
/**
121+
* Проверять уникальность кода плана видов характеристик.
122+
* Определяет, нужно ли проверять уникальность кода плана видов характеристик.
123+
* Если значение равно true, то код плана видов характеристик должен быть уникальным в пределах области,
124+
* определяемой свойством {@link #codeSeries}. Если false, проверка уникальности не выполняется.
125+
*/
126+
@Default
127+
boolean checkUnique = false;
128+
129+
/**
130+
* Серия кодов плана видов характеристик.
131+
* Определяет область действия уникальности кода плана видов характеристик.
132+
* Значение по умолчанию: {@link CodeSeries#WHOLE_CATALOG}.
133+
* Для формата EDT: если поле отсутствует, автоматически устанавливается значение WHOLE_CATALOG.
134+
*/
135+
@Default
136+
CodeSeries codeSeries = CodeSeries.WHOLE_CATALOG;
137+
119138
/**
120139
* Возвращает перечень возможных прав доступа
121140
*/

src/test/java/com/github/_1c_syntax/bsl/mdo/ChartOfAccountsTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package com.github._1c_syntax.bsl.mdo;
2323

2424
import com.github._1c_syntax.bsl.mdo.support.AttributeKind;
25+
import com.github._1c_syntax.bsl.mdo.support.CodeSeries;
2526
import com.github._1c_syntax.bsl.test_utils.MDTestUtils;
2627
import org.junit.jupiter.params.ParameterizedTest;
2728
import org.junit.jupiter.params.aggregator.ArgumentsAccessor;
@@ -49,4 +50,31 @@ void test(ArgumentsAccessor argumentsAccessor) {
4950
assertThat(chartOfAccounts.getAccountingFlags()).hasSize(1);
5051
assertThat(chartOfAccounts.getExtDimensionAccountingFlags()).hasSize(1);
5152
}
53+
54+
/**
55+
* Проверяет, что для плана счетов "ПланСчетов1" поле checkUnique установлено в true.
56+
* <p>
57+
* В формате Designer: в XML файле явно указано {@code <checkUnique>true</checkUnique>}.
58+
* В формате EDT: в XML файле явно указано {@code <checkUnique>true</checkUnique>}.
59+
*
60+
* @param argumentsAccessor параметры теста (формат, имя пакета, ссылка на MDO, постфикс фикстуры)
61+
*/
62+
@ParameterizedTest
63+
@CsvSource({
64+
"true, mdclasses, ChartsOfAccounts.ПланСчетов1, _edt",
65+
"false, mdclasses, ChartsOfAccounts.ПланСчетов1"
66+
})
67+
void testCheckUniqueTrue(ArgumentsAccessor argumentsAccessor) {
68+
var mdo = MDTestUtils.getMDWithSimpleTest(argumentsAccessor);
69+
assertThat(mdo)
70+
.isInstanceOf(ChartOfAccounts.class);
71+
72+
var chartOfAccounts = (ChartOfAccounts) mdo;
73+
assertThat(chartOfAccounts.isCheckUnique())
74+
.as("Поле checkUnique должно быть true для плана счетов ПланСчетов1")
75+
.isTrue();
76+
assertThat(chartOfAccounts.getCodeSeries())
77+
.as("Поле codeSeries должно быть WHOLE_CATALOG для плана счетов ПланСчетов1")
78+
.isEqualTo(CodeSeries.WHOLE_CATALOG);
79+
}
5280
}

src/test/java/com/github/_1c_syntax/bsl/mdo/ChartOfCharacteristicTypesTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,14 @@
2121
*/
2222
package com.github._1c_syntax.bsl.mdo;
2323

24+
import com.github._1c_syntax.bsl.mdo.support.CodeSeries;
2425
import com.github._1c_syntax.bsl.test_utils.MDTestUtils;
2526
import org.junit.jupiter.params.ParameterizedTest;
2627
import org.junit.jupiter.params.aggregator.ArgumentsAccessor;
2728
import org.junit.jupiter.params.provider.CsvSource;
2829

30+
import static org.assertj.core.api.Assertions.assertThat;
31+
2932
class ChartOfCharacteristicTypesTest {
3033
@ParameterizedTest
3134
@CsvSource(
@@ -39,4 +42,31 @@ class ChartOfCharacteristicTypesTest {
3942
void test(ArgumentsAccessor argumentsAccessor) {
4043
var mdo = MDTestUtils.getMDWithSimpleTest(argumentsAccessor);
4144
}
45+
46+
/**
47+
* Проверяет, что для плана видов характеристик "ПланВидовХарактеристик1" поле checkUnique установлено в true.
48+
* <p>
49+
* В формате Designer: в XML файле явно указано {@code <checkUnique>true</checkUnique>}.
50+
* В формате EDT: в XML файле явно указано {@code <checkUnique>true</checkUnique>}.
51+
*
52+
* @param argumentsAccessor параметры теста (формат, имя пакета, ссылка на MDO, постфикс фикстуры)
53+
*/
54+
@ParameterizedTest
55+
@CsvSource({
56+
"true, mdclasses, ChartsOfCharacteristicTypes.ПланВидовХарактеристик1, _edt",
57+
"false, mdclasses, ChartsOfCharacteristicTypes.ПланВидовХарактеристик1"
58+
})
59+
void testCheckUniqueTrue(ArgumentsAccessor argumentsAccessor) {
60+
var mdo = MDTestUtils.getMDWithSimpleTest(argumentsAccessor);
61+
assertThat(mdo)
62+
.isInstanceOf(ChartOfCharacteristicTypes.class);
63+
64+
var chartOfCharacteristicTypes = (ChartOfCharacteristicTypes) mdo;
65+
assertThat(chartOfCharacteristicTypes.isCheckUnique())
66+
.as("Поле checkUnique должно быть true для плана видов характеристик ПланВидовХарактеристик1")
67+
.isTrue();
68+
assertThat(chartOfCharacteristicTypes.getCodeSeries())
69+
.as("Поле codeSeries должно быть WHOLE_CATALOG для плана видов характеристик ПланВидовХарактеристик1")
70+
.isEqualTo(CodeSeries.WHOLE_CATALOG);
71+
}
4272
}

src/test/resources/fixtures/mdclasses/ChartsOfAccounts.ПланСчетов1.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,5 +670,7 @@
670670
},
671671
"tabularSections": [],
672672
"templates": [],
673-
"uuid": "2766f353-abd2-4e7f-9a95-53f05c83f5d4"
673+
"uuid": "2766f353-abd2-4e7f-9a95-53f05c83f5d4",
674+
"checkUnique": true,
675+
"codeSeries": "WHOLE_CATALOG"
674676
}}

src/test/resources/fixtures/mdclasses/ChartsOfAccounts.ПланСчетов1_edt.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,5 +670,7 @@
670670
},
671671
"tabularSections": [],
672672
"templates": [],
673-
"uuid": "2766f353-abd2-4e7f-9a95-53f05c83f5d4"
673+
"uuid": "2766f353-abd2-4e7f-9a95-53f05c83f5d4",
674+
"checkUnique": true,
675+
"codeSeries": "WHOLE_CATALOG"
674676
}}

src/test/resources/fixtures/mdclasses/ChartsOfCharacteristicTypes.ПланВидовХарактеристик1.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,5 +566,7 @@
566566
"uuid": "f53a24c3-f1dc-43b7-8dcf-eeb8c0b7f452",
567567
"valueType": {
568568
"@reference": "/com.github._1c_syntax.bsl.mdo.ChartOfCharacteristicTypes/attributes/c/com.github._1c_syntax.bsl.mdo.children.StandardAttribute[9]/type"
569-
}
569+
},
570+
"checkUnique": true,
571+
"codeSeries": "WHOLE_CATALOG"
570572
}}

src/test/resources/fixtures/mdclasses/ChartsOfCharacteristicTypes.ПланВидовХарактеристик1_edt.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,5 +566,7 @@
566566
"uuid": "f53a24c3-f1dc-43b7-8dcf-eeb8c0b7f452",
567567
"valueType": {
568568
"@reference": "/com.github._1c_syntax.bsl.mdo.ChartOfCharacteristicTypes/attributes/c/com.github._1c_syntax.bsl.mdo.children.StandardAttribute[9]/type"
569-
}
569+
},
570+
"checkUnique": true,
571+
"codeSeries": "WHOLE_CATALOG"
570572
}}

src/test/resources/fixtures/mdclasses/Configuration.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,9 @@
791791
],
792792
"explanation": {
793793
"@reference": "/com.github._1c_syntax.bsl.mdclasses.Configuration/XDTOPackages/com.github._1c_syntax.bsl.mdo.XDTOPackage/synonym"
794-
}
794+
},
795+
"checkUnique": true,
796+
"codeSeries": "WHOLE_CATALOG"
795797
}
796798
],
797799
"chartsOfCalculationTypes": [
@@ -882,7 +884,9 @@
882884
},
883885
"explanation": {
884886
"@reference": "/com.github._1c_syntax.bsl.mdclasses.Configuration/XDTOPackages/com.github._1c_syntax.bsl.mdo.XDTOPackage/synonym"
885-
}
887+
},
888+
"checkUnique": true,
889+
"codeSeries": "WHOLE_CATALOG"
886890
}
887891
],
888892
"commandGroups": [

src/test/resources/fixtures/mdclasses/Configuration_edt.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,9 @@
791791
],
792792
"explanation": {
793793
"@reference": "/com.github._1c_syntax.bsl.mdclasses.Configuration/XDTOPackages/com.github._1c_syntax.bsl.mdo.XDTOPackage/synonym"
794-
}
794+
},
795+
"checkUnique": true,
796+
"codeSeries": "WHOLE_CATALOG"
795797
}
796798
],
797799
"chartsOfCalculationTypes": [
@@ -882,7 +884,9 @@
882884
},
883885
"explanation": {
884886
"@reference": "/com.github._1c_syntax.bsl.mdclasses.Configuration/XDTOPackages/com.github._1c_syntax.bsl.mdo.XDTOPackage/synonym"
885-
}
887+
},
888+
"checkUnique": true,
889+
"codeSeries": "WHOLE_CATALOG"
886890
}
887891
],
888892
"commandGroups": [

0 commit comments

Comments
 (0)