You've already forked v8-code-style
mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2026-05-20 10:41:08 +02:00
Merge pull request #1520 from alonthedark/feature/issue-1250-report-variant-name-default
add check data composition schema variant name, and test
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
# Verification of the name of variant report
|
||||
|
||||
It is not recommended to leave the name of the report variant in the data composition scheme as "Default".
|
||||
@@ -0,0 +1,7 @@
|
||||
# Проверка имени варианта отчета
|
||||
|
||||
Имя варианта отчета в схеме компоновки данных не рекомендуется оставлять "Основной".
|
||||
|
||||
## См.
|
||||
|
||||
- [Заголовок отчета](https://its.1c.ru/db/v8std#content:674:hdoc)
|
||||
@@ -54,6 +54,10 @@
|
||||
category="com.e1c.v8codestyle.form"
|
||||
class="com.e1c.v8codestyle.internal.form.ExecutableExtensionFactory:com.e1c.v8codestyle.form.check.DataCompositionConditionalAppearanceUseCheck">
|
||||
</check>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.form"
|
||||
class="com.e1c.v8codestyle.internal.form.ExecutableExtensionFactory:com.e1c.v8codestyle.form.check.DataCompositionNameVariantDefaultCheck">
|
||||
</check>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.form"
|
||||
class="com.e1c.v8codestyle.form.check.FormItemVisibleSettingsByRolesCheck">
|
||||
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2025, 1C-Soft LLC and others.
|
||||
*
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*
|
||||
* Contributors:
|
||||
* 1C-Soft LLC - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package com.e1c.v8codestyle.form.check;
|
||||
|
||||
import static com._1c.g5.v8.dt.dcs.model.schema.DcsPackage.Literals.DATA_COMPOSITION_SCHEMA;
|
||||
import static com._1c.g5.v8.dt.dcs.model.schema.DcsPackage.Literals.DATA_COMPOSITION_SCHEMA__SETTINGS_VARIANTS;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.emf.common.util.EMap;
|
||||
|
||||
import com._1c.g5.v8.dt.dcs.model.core.Presentation;
|
||||
import com._1c.g5.v8.dt.dcs.model.schema.DataCompositionSchema;
|
||||
import com._1c.g5.v8.dt.dcs.model.settings.SettingsVariant;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.BasicCheck;
|
||||
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
|
||||
import com.e1c.g5.v8.dt.check.settings.IssueType;
|
||||
import com.e1c.v8codestyle.check.StandardCheckExtension;
|
||||
import com.e1c.v8codestyle.internal.form.CorePlugin;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
/**
|
||||
* Check data coposition schema variant name.
|
||||
* @author Ivan Sergeev
|
||||
*/
|
||||
public class DataCompositionNameVariantDefaultCheck
|
||||
extends BasicCheck<Object>
|
||||
{
|
||||
private static final String CHECK_ID = "data-composition-variant-name-default"; //$NON-NLS-1$
|
||||
|
||||
@Inject
|
||||
public DataCompositionNameVariantDefaultCheck()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCheckId()
|
||||
{
|
||||
return CHECK_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureCheck(CheckConfigurer builder)
|
||||
{
|
||||
builder.title(Messages.DataCompositionNameVariantDefault_Title)
|
||||
.description(Messages.DataCompositionNameVariantDefault_Description)
|
||||
.complexity(CheckComplexity.NORMAL)
|
||||
.severity(IssueSeverity.MINOR)
|
||||
.issueType(IssueType.UI_STYLE)
|
||||
.extension(new StandardCheckExtension(674, getCheckId(), CorePlugin.PLUGIN_ID))
|
||||
.topObject(DATA_COMPOSITION_SCHEMA)
|
||||
.features(DATA_COMPOSITION_SCHEMA__SETTINGS_VARIANTS);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
{
|
||||
|
||||
DataCompositionSchema dcs = (DataCompositionSchema)object;
|
||||
|
||||
EList<SettingsVariant> variants = dcs.getSettingsVariants();
|
||||
if (variants == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (SettingsVariant settingsVariant : variants)
|
||||
{
|
||||
String name = settingsVariant.getName();
|
||||
Presentation presentation = settingsVariant.getPresentation();
|
||||
EMap<String, String> presentationValue = presentation.getLocalValue().getContent();
|
||||
if (name.equalsIgnoreCase("Основной") || name.equalsIgnoreCase("Default")) //$NON-NLS-1$ //$NON-NLS-2$
|
||||
{
|
||||
if (presentationValue.isEmpty())
|
||||
{
|
||||
resultAcceptor.addIssue(Messages.DataCompositionNameVariantDefault_Issue);
|
||||
continue;
|
||||
}
|
||||
String presentationName = presentationValue.get(0).getValue();
|
||||
if (presentationName.equalsIgnoreCase("Основной") || presentationName.equalsIgnoreCase("Default")) //$NON-NLS-1$//$NON-NLS-2$
|
||||
{
|
||||
resultAcceptor.addIssue(Messages.DataCompositionNameVariantDefault_Issue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (presentationValue.isEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
String presentationName = presentationValue.get(0).getValue();
|
||||
if (presentationName.equalsIgnoreCase("Основной") || presentationName.equalsIgnoreCase("Default")) //$NON-NLS-1$//$NON-NLS-2$
|
||||
{
|
||||
resultAcceptor.addIssue(Messages.DataCompositionNameVariantDefault_Issue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,9 @@ final class Messages
|
||||
public static String DataCompositionConditionalAppearanceUseCheck_Form;
|
||||
public static String DataCompositionConditionalAppearanceUseCheck_Form_attribute;
|
||||
public static String DataCompositionConditionalAppearanceUseCheck_title;
|
||||
public static String DataCompositionNameVariantDefault_Description;
|
||||
public static String DataCompositionNameVariantDefault_Issue;
|
||||
public static String DataCompositionNameVariantDefault_Title;
|
||||
public static String DynamicListItemTitleCheck_Description;
|
||||
public static String DynamicListItemTitleCheck_message;
|
||||
public static String DynamicListItemTitleCheck_title;
|
||||
|
||||
+6
@@ -21,6 +21,12 @@ DataCompositionConditionalAppearanceUseCheck_Form_attribute = Form attribute "{0
|
||||
|
||||
DataCompositionConditionalAppearanceUseCheck_title = Use data composition conditional appearance
|
||||
|
||||
DataCompositionNameVariantDefault_Description = Check data composition schema variant name equals "Default"
|
||||
|
||||
DataCompositionNameVariantDefault_Title = Check data composition schema variant name equals "Default"
|
||||
|
||||
DataCompositionNameVariantDefault_Issue = Data composition schema variant name equals "Default"
|
||||
|
||||
DynamicListItemTitleCheck_Description = Dynamic list field title is empty
|
||||
|
||||
DynamicListItemTitleCheck_message = Title of field of dynamic list is not filled
|
||||
|
||||
+6
@@ -21,6 +21,12 @@ DataCompositionConditionalAppearanceUseCheck_Form_attribute = Реквизит
|
||||
|
||||
DataCompositionConditionalAppearanceUseCheck_title = Используется условное оформление компоновки данных
|
||||
|
||||
DataCompositionNameVariantDefault_Description = Проверка имени варианта отчета на имя "Основной"
|
||||
|
||||
DataCompositionNameVariantDefault_Title = Проверка имени варианта отчета на имя "Основной"
|
||||
|
||||
DataCompositionNameVariantDefault_Issue = Имя варианта отчета "Основной"
|
||||
|
||||
DynamicListItemTitleCheck_Description = Заголовок поля динамического списка пустой
|
||||
|
||||
DynamicListItemTitleCheck_message = Не заполнен заголовок поля динамического списка
|
||||
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2025, 1C-Soft LLC and others.
|
||||
*
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*
|
||||
* Contributors:
|
||||
* 1C-Soft LLC - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package com.e1c.v8codestyle.form.check.itests;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmObject;
|
||||
import com._1c.g5.v8.dt.core.platform.IDtProject;
|
||||
import com._1c.g5.v8.dt.validation.marker.Marker;
|
||||
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
|
||||
import com.e1c.v8codestyle.form.check.DataCompositionNameVariantDefaultCheck;
|
||||
|
||||
/**
|
||||
* Test {@link DataCompositionNameVariantDefaultCheck} data coposition schema variant name.
|
||||
*
|
||||
* @author Ivan Sergeev
|
||||
*/
|
||||
public class DataCompositionNameVariantDefaultCheckTest
|
||||
extends CheckTestBase
|
||||
{
|
||||
|
||||
private static final String CHECK_ID = "data-composition-variant-name-default"; //$NON-NLS-1$
|
||||
|
||||
private static final String PROJECT_NAME = "ReportVariantName";
|
||||
|
||||
private static final String FQN_DL1 = "Report.TestReport.Template.MainDataCompositionSchema.Template";
|
||||
|
||||
private static final String FQN_DL2 = "Report.TestReport.Template.MainDataCompositionSchema2.Template";
|
||||
|
||||
@Test
|
||||
public void testNameVariantDefault() throws Exception
|
||||
{
|
||||
IDtProject project = openProjectAndWaitForValidationFinish(PROJECT_NAME);
|
||||
assertNotNull(project);
|
||||
IBmObject object = getTopObjectByFqn(FQN_DL1, project);
|
||||
assertNotNull(object);
|
||||
Marker marker = getFirstNestedMarker(CHECK_ID, object.bmGetId(), project);
|
||||
assertNotNull(marker);
|
||||
}
|
||||
@Test
|
||||
public void testNameVariantNonDefault() throws Exception
|
||||
{
|
||||
IDtProject project = openProjectAndWaitForValidationFinish(PROJECT_NAME);
|
||||
assertNotNull(project);
|
||||
IBmObject object =
|
||||
getTopObjectByFqn(FQN_DL2, project);
|
||||
assertNotNull(object);
|
||||
Marker marker = getFirstNestedMarker(CHECK_ID, object.bmGetId(), project);
|
||||
assertNull(marker);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
Manifest-Version: 1.0
|
||||
Runtime-Version: 8.3.19
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ac82a1aa-c235-4d82-981c-83db8b46b6f9">
|
||||
<name>ReportVariantName</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Ql full demo</value>
|
||||
</synonym>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="b75ea52a-1270-4d00-8641-acb1dc8b1e18"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="9b9184ee-1561-44f6-986f-bbad7bc65ad8"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="19f7afda-bd9d-4b6f-9918-460f079fa1d4"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="067e5fcc-671f-486e-9d09-61e71adc3a3e"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="cff42135-668a-4e11-bb98-e38d991a9e07"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="1ac9fa8e-26eb-47e2-8777-f81f8195fa28"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="fb199fe5-11d5-4af6-9e9b-084365badb8c"/>
|
||||
<configurationExtensionCompatibilityMode>8.3.19</configurationExtensionCompatibilityMode>
|
||||
<defaultRunMode>ManagedApplication</defaultRunMode>
|
||||
<usePurposes>PersonalComputer</usePurposes>
|
||||
<usedMobileApplicationFunctionalities>
|
||||
<functionality>
|
||||
<use>true</use>
|
||||
</functionality>
|
||||
<functionality>
|
||||
<functionality>OSBackup</functionality>
|
||||
<use>true</use>
|
||||
</functionality>
|
||||
</usedMobileApplicationFunctionalities>
|
||||
<defaultLanguage>Language.English</defaultLanguage>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<objectAutonumerationMode>NotAutoFree</objectAutonumerationMode>
|
||||
<modalityUseMode>DontUse</modalityUseMode>
|
||||
<synchronousPlatformExtensionAndAddInCallUseMode>DontUse</synchronousPlatformExtensionAndAddInCallUseMode>
|
||||
<compatibilityMode>8.3.19</compatibilityMode>
|
||||
<languages uuid="7c2a7750-bb5c-4731-9bd9-b60909828556">
|
||||
<name>English</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>English</value>
|
||||
</synonym>
|
||||
<languageCode>en</languageCode>
|
||||
</languages>
|
||||
<reports>Report.TestReport</reports>
|
||||
</mdclass:Configuration>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<DataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<dataSource>
|
||||
<name>DataSource1</name>
|
||||
<dataSourceType>Local</dataSourceType>
|
||||
</dataSource>
|
||||
<dataSet xsi:type="DataSetQuery">
|
||||
<name>DataSet1</name>
|
||||
<dataSource>DataSource1</dataSource>
|
||||
<query/>
|
||||
</dataSet>
|
||||
<settingsVariant>
|
||||
<dcsset:name>Default</dcsset:name>
|
||||
<dcsset:presentation xsi:type="xs:string">Default</dcsset:presentation>
|
||||
<dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"/>
|
||||
</settingsVariant>
|
||||
</DataCompositionSchema>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<DataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<dataSource>
|
||||
<name>DataSource1</name>
|
||||
<dataSourceType>Local</dataSourceType>
|
||||
</dataSource>
|
||||
<dataSet xsi:type="DataSetQuery">
|
||||
<name>DataSet1</name>
|
||||
<dataSource>DataSource1</dataSource>
|
||||
<query/>
|
||||
</dataSet>
|
||||
<settingsVariant>
|
||||
<dcsset:name>NoDefault</dcsset:name>
|
||||
<dcsset:presentation xsi:type="xs:string">NoDefault</dcsset:presentation>
|
||||
<dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"/>
|
||||
</settingsVariant>
|
||||
</DataCompositionSchema>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Report xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="371328e1-5c83-488e-a08a-672cba84cf15">
|
||||
<producedTypes>
|
||||
<objectType typeId="2b2f04c8-02b9-43f9-b01f-9774dcae9a44" valueTypeId="46f4bdc1-b36d-4cdf-b008-e2dc88318699"/>
|
||||
<managerType typeId="fa00c82b-23c4-4e17-bb98-712fe2e9a901" valueTypeId="18c251ce-dc01-47ee-a889-b558e5c66a76"/>
|
||||
</producedTypes>
|
||||
<name>QueryTestReport</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Query test report</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<mainDataCompositionSchema>Report.QueryTestReport.Template.MainDataCompositionSchema</mainDataCompositionSchema>
|
||||
<templates uuid="eb429149-cbcf-4016-93ed-c11c7919ecba">
|
||||
<name>MainDataCompositionSchema</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Main data composition schema</value>
|
||||
</synonym>
|
||||
<templateType>DataCompositionSchema</templateType>
|
||||
</templates>
|
||||
</mdclass:Report>
|
||||
Reference in New Issue
Block a user