1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-02-09 04:03:27 +02:00

Добавлена проверка области объявления переменных (#1105)

* Добавлена проверка области объявления переменных #534 #531 #200
This commit is contained in:
Artem Iliukhin 2022-08-10 00:53:43 -06:00 committed by GitHub
parent ab5a60360c
commit 52efa82bb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 690 additions and 3 deletions

View File

@ -52,6 +52,7 @@
- Структура модуля. Добавлена проверка области событий.
- Отсутствует включение безопасного режима перед вызовом метода "Выполнить" или "Вычислить"
- Структура модуля. Добавлена проверка метода вне области.
- Структура модуля. Область объявления переменных.

View File

@ -0,0 +1,36 @@
# Variable description section
Variable description section. Name your variables according to the general variable naming rules.
For variable usage recommendations, see Using global variables in modules.
For each variable, add a comment that clearly explains its purpose. We recommend that you add the comment
to the same line where the variable is declared.
## Noncompliant Code Example
```bsl
Var PresentationCurrency;
Var SupportEmail;
```bsl
## Compliant Solution
```bsl
#Region Variables
Var PresentationCurrency;
Var SupportEmail;
...
#EndRegion
```bsl
## See
- [Module structure](https://1c-dn.com/library/module_structure/)
- [Module structure](https://support.1ci.com/hc/en-us/articles/360011002360-Module-structure)

View File

@ -0,0 +1,37 @@
# Раздел описания переменных
Раздел описания переменных. Имена переменных назначаются согласно общим правилам образования имен переменных,
а их использование описывается в статье Использование глобальных переменных в программных модулях.
Все переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения.
Комментарий рекомендуется размещать в той же строке, где объявляется переменная.
## Неправильно
```bsl
Перем ВалютаУчета;
Перем АдресПоддержки;
...
```
## Правильно
```bsl
#Область ОписаниеПеременных
Перем ВалютаУчета;
Перем АдресПоддержки;
...
#КонецОбласти
```
## См.
- [Структура модуля](https://its.1c.ru/db/v8std#content:455:hdoc)

View File

@ -291,6 +291,10 @@
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.bsl.check.BeginTransactionCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureVariablesInRegionCheck">
</check>
</extension>
<extension
point="org.eclipse.core.runtime.preferences">

View File

@ -184,6 +184,12 @@ final class Messages
public static String ModuleStructureMethodInRegionCheck_Title;
public static String ModuleStructureVariablesInRegionCheck_Description;
public static String ModuleStructureVariablesInRegionCheck_Issue__0;
public static String ModuleStructureVariablesInRegionCheck_Title;
public static String QueryInLoop_check_query_in_infinite_loop;
public static String QueryInLoop_description;
public static String QueryInLoop_Loop_has_method_with_query__0;

View File

@ -0,0 +1,125 @@
/*******************************************************************************
* Copyright (C) 2021, 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.bsl.check;
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.DECLARE_STATEMENT;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.Optional;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.EcoreUtil2;
import com._1c.g5.v8.dt.bsl.model.DeclareStatement;
import com._1c.g5.v8.dt.bsl.model.ExplicitVariable;
import com._1c.g5.v8.dt.bsl.model.Method;
import com._1c.g5.v8.dt.bsl.model.ModuleType;
import com._1c.g5.v8.dt.bsl.model.RegionPreprocessor;
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
import com._1c.g5.v8.dt.mcore.McorePackage;
import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.bsl.ModuleStructureSection;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.bsl.BslPlugin;
import com.google.inject.Inject;
/**
* Checks variables in region.
*
* @author Artem Iliukhin
*/
public class ModuleStructureVariablesInRegionCheck
extends AbstractModuleStructureCheck
{
private static final String CHECK_ID = "module-structure-var-in-region"; //$NON-NLS-1$
private final IV8ProjectManager v8ProjectManager;
@Inject
public ModuleStructureVariablesInRegionCheck(IV8ProjectManager v8ProjectManager)
{
this.v8ProjectManager = v8ProjectManager;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.ModuleStructureVariablesInRegionCheck_Title)
.description(Messages.ModuleStructureVariablesInRegionCheck_Description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.CODE_STYLE)
.extension(new ModuleTopObjectNameFilterExtension())
.extension(new StandardCheckExtension(getCheckId(), BslPlugin.PLUGIN_ID))
.extension(ModuleTypeFilter.excludeTypes(ModuleType.COMMON_MODULE, ModuleType.COMMAND_MODULE,
ModuleType.MANAGER_MODULE, ModuleType.SESSION_MODULE))
.module()
.checkedObjectType(DECLARE_STATEMENT);
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
DeclareStatement declareStatement = (DeclareStatement)object;
Method method = EcoreUtil2.getContainerOfType((EObject)declareStatement, Method.class);
if (method != null)
{
return;
}
if (monitor.isCanceled())
{
return;
}
Collection<ExplicitVariable> variables = declareStatement.getVariables();
if (variables.isEmpty())
{
return;
}
Optional<RegionPreprocessor> region = getTopParentRegion(declareStatement);
ScriptVariant scriptVariant = v8ProjectManager.getProject(declareStatement).getScriptVariant();
String variablesName = ModuleStructureSection.VARIABLES.getName(scriptVariant);
for (ExplicitVariable variable : variables)
{
if (monitor.isCanceled())
{
return;
}
if (region.isEmpty() || !variablesName.equalsIgnoreCase(region.get().getName()))
{
resultAceptor.addIssue(
MessageFormat.format(Messages.ModuleStructureVariablesInRegionCheck_Issue__0, variablesName),
variable, McorePackage.Literals.NAMED_ELEMENT__NAME);
}
}
}
}

View File

@ -249,6 +249,12 @@ ModuleStructureMethodInRegionCheck_Only_export=Only export methods can be placed
ModuleStructureMethodInRegionCheck_Title=Method is outside a standard region
ModuleStructureVariablesInRegionCheck_Description=Variable declaration should be placed in the variable declaration region
ModuleStructureVariablesInRegionCheck_Issue__0=Variable declaration should be placed in the {0} region
ModuleStructureVariablesInRegionCheck_Title=Variable declaration is in the correct region
NewColorCheck_Use_style_elements=To change the design, you should use style elements, and not set specific values directly in the controls
NewColorCheck_Use_style_elements_not_specific_values=To change the design, you should use style elements, and not set specific values directly in the controls. This is required in order for similar controls to look the same in all forms where they occur.

View File

@ -222,6 +222,12 @@ ModuleStructureMethodInRegionCheck_Description = Проверяет что ме
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions = Метод "{0}" необходимо разместить в одной из верхнеуровневых областей: {1}
ModuleStructureVariablesInRegionCheck_Description=Объявление переменной должно быть помещено в область объявления переменной
ModuleStructureVariablesInRegionCheck_Issue__0=Объявление переменной должно быть помещено в область {0}
ModuleStructureVariablesInRegionCheck_Title=Объявление переменных расположено в правильной области
ModuleUnusedLocalVariableCheck_Description = Проверка модуля на наличие неиспользуемых локальных переменных
ModuleUnusedLocalVariableCheck_Probably_variable_not_initilized_yet__0 = Возможно, переменная ''{0}'' еще не была проинициализирована

View File

@ -1,6 +1,15 @@
/**
* Copyright (C) 2022, 1C
*/
/*******************************************************************************
* Copyright (C) 2021, 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.bsl.check.itests;
import static org.junit.Assert.assertEquals;

View File

@ -0,0 +1,103 @@
/*******************************************************************************
* Copyright (C) 2021, 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.bsl.check.itests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.core.runtime.Path;
import org.junit.Test;
import com._1c.g5.v8.dt.validation.marker.IExtraInfoKeys;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.g5.v8.dt.testing.check.SingleProjectReadOnlyCheckTestBase;
import com.e1c.v8codestyle.bsl.check.ModuleStructureVariablesInRegionCheck;
/**
* Tests for {@link ModuleStructureVariablesInRegionCheck} check.
*
* @author Artem Iliukhin
*/
public class ModuleStructureVariablesInRegionCheckTest
extends SingleProjectReadOnlyCheckTestBase
{
private static final String CHECK_ID = "module-structure-var-in-region"; //$NON-NLS-1$
private static final String PROJECT_NAME = "ModuleStructureVariablesInRegionCheck"; //$NON-NLS-1$
private static final String CATALOG_FILE_NAME = "/src/Catalogs/Catalog/ObjectModule.bsl"; //$NON-NLS-1$
private static final String CATALOG_VAR_IN_LINE_FILE_NAME = "/src/Catalogs/CatalogComplient/ObjectModule.bsl"; //$NON-NLS-1$
private static final String CATALOG_NO_REGION_FILE_NAME = "/src/Catalogs/CatalogNoRegion/ObjectModule.bsl"; //$NON-NLS-1$
private static final String CATALOG_OUT_OF_REGION_FILE_NAME = "/src/Catalogs/CatalogOutOfRegion/ObjectModule.bsl"; //$NON-NLS-1$
private static final String CATALOG_WRONG_REGION_FILE_NAME = "/src/Catalogs/CatalogWrongRegion/ObjectModule.bsl"; //$NON-NLS-1$
@Override
protected String getTestConfigurationName()
{
return PROJECT_NAME;
}
@Test
public void testVariableInRegion() throws Exception
{
List<Marker> markers = getMarkers(CATALOG_FILE_NAME);
assertTrue(markers.isEmpty());
}
@Test
public void testVariablesInRegion() throws Exception
{
List<Marker> markers = getMarkers(CATALOG_VAR_IN_LINE_FILE_NAME);
assertTrue(markers.isEmpty());
}
@Test
public void testNoVariablesRegion() throws Exception
{
List<Marker> markers = getMarkers(CATALOG_NO_REGION_FILE_NAME);
assertEquals(1, markers.size());
assertEquals("2", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
}
@Test
public void testOutOfVariablesRegion() throws Exception
{
List<Marker> markers = getMarkers(CATALOG_OUT_OF_REGION_FILE_NAME);
assertEquals(1, markers.size());
assertEquals("5", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
}
@Test
public void testWrongRegion() throws Exception
{
List<Marker> markers = getMarkers(CATALOG_WRONG_REGION_FILE_NAME);
assertEquals(1, markers.size());
assertEquals("6", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
}
private List<Marker> getMarkers(String moduleFileName)
{
String moduleId = Path.ROOT.append(getTestConfigurationName()).append(moduleFileName).toString();
List<Marker> markers = List.of(markerManager.getMarkers(getProject().getWorkspaceProject(), moduleId));
return markers.stream()
.filter(marker -> CHECK_ID.equals(getCheckIdFromMarker(marker, getProject())))
.collect(Collectors.toList());
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ModuleStructureVariablesInRegionCheck</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>com._1c.g5.v8.dt.core.V8ConfigurationNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@ -0,0 +1,2 @@
Manifest-Version: 1.0
Runtime-Version: 8.3.19

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1315575c-caea-479f-ace2-8b5308837087">
<producedTypes>
<objectType typeId="05ef1784-6253-43ba-b550-3aae0710553f" valueTypeId="2cfef4c1-90e2-441d-b3e3-6d3ce90cecb2"/>
<refType typeId="ab0ddd25-2e6f-416c-a520-8d76c1fe8cf7" valueTypeId="190e8695-1b05-49b7-a2bd-f22b35565fbf"/>
<selectionType typeId="8e6b69a0-665f-4f9b-a2ef-5753dc117266" valueTypeId="baab92c1-138c-4cb6-9f87-42aef7046a9f"/>
<listType typeId="611b14b5-bb34-4f88-8b72-8972945218ff" valueTypeId="9cb33960-54f0-4607-8151-a59d3b3e65b8"/>
<managerType typeId="86374365-7b99-4b6a-91c5-0e23561f9a53" valueTypeId="e89a6439-f2aa-4b98-ac95-d3dce1571d08"/>
</producedTypes>
<name>Catalog</name>
<synonym>
<key>en</key>
<value>Catalog</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.Catalog.StandardAttribute.Code</inputByString>
<inputByString>Catalog.Catalog.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,24 @@
#Region Variables
Var a;
Var b;
#EndRegion
#Region Public
// Enter code here.
#EndRegion
#Region EventHandlers
// Enter code here.
#EndRegion
#Region Internal
// Enter code here.
#EndRegion
#Region Private
// Enter code here.
#EndRegion
#Region Initialize
#EndRegion

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c3934d11-33ee-4a81-bd1e-d1302f5c1438">
<producedTypes>
<objectType typeId="b1c3ce14-f9dc-4908-8c48-ac172fe17e8c" valueTypeId="6c39a456-a943-415b-9240-82701672247f"/>
<refType typeId="d18bf976-dded-4e46-8f1d-b129929321b0" valueTypeId="726b8439-3c87-4830-8d69-f40f0207ff7b"/>
<selectionType typeId="bbf82794-82f3-4774-be9f-9edf6d1bcca5" valueTypeId="fdeb86f2-b324-4584-991e-ffa8b0d7d35e"/>
<listType typeId="a9295dd4-184a-4d1b-a37a-d6e4a7be93bc" valueTypeId="c121171e-e67b-4728-bb30-63b650390b3b"/>
<managerType typeId="0c1bc74d-e5f8-464d-8904-d5a059543213" valueTypeId="fc1b9669-24cb-4f25-b54b-e1af9892fcbe"/>
</producedTypes>
<name>CatalogComplient</name>
<synonym>
<key>en</key>
<value>Catalog complient</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.CatalogComplient.StandardAttribute.Code</inputByString>
<inputByString>Catalog.CatalogComplient.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,23 @@
#Region Variables
Var a, b;
#EndRegion
#Region Public
// Enter code here.
#EndRegion
#Region EventHandlers
// Enter code here.
#EndRegion
#Region Internal
// Enter code here.
#EndRegion
#Region Private
// Enter code here.
#EndRegion
#Region Initialize
#EndRegion

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1caf28b8-5048-4126-a532-a9ff0779a5cc">
<producedTypes>
<objectType typeId="e6aceea1-76c9-4ddc-8cbf-ffbc8c69aef1" valueTypeId="8d50d2d2-489b-4b7a-a288-d34557546320"/>
<refType typeId="d58cf682-dd9b-4393-be47-3fdf3a284090" valueTypeId="cd37e4e8-d0a9-498e-a0cb-3c108e30365c"/>
<selectionType typeId="8cfd87de-8481-4def-adc9-af1eedf18b2e" valueTypeId="2a7c7802-e0de-46a2-91ac-1f23b81d81c8"/>
<listType typeId="f1e3ac04-c189-4015-81b3-8251960c4684" valueTypeId="50017a64-d46c-48dc-b92d-58dadb8dd36b"/>
<managerType typeId="c8026f02-c1dd-47f0-b736-bf6042aa8890" valueTypeId="35868bad-33a7-4e50-8f2b-d860a128c277"/>
</producedTypes>
<name>CatalogNoRegion</name>
<synonym>
<key>en</key>
<value>Catalog no region</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.CatalogNoRegion.StandardAttribute.Code</inputByString>
<inputByString>Catalog.CatalogNoRegion.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,22 @@
Var a;
#Region Public
#EndRegion
#Region EventHandlers
// Enter code here.
#EndRegion
#Region Internal
// Enter code here.
#EndRegion
#Region Private
// Enter code here.
#EndRegion
#Region Initialize
#EndRegion

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="237162e8-365a-4b64-a27c-42321755f203">
<producedTypes>
<objectType typeId="4ecdff4a-0f60-4dab-8834-c9132bf01312" valueTypeId="045dfaea-dfcb-4ce4-84d8-733107262aba"/>
<refType typeId="971294ed-55e5-4e0e-81c5-9a85a7c73ad4" valueTypeId="370d474f-3798-4858-9dba-4b570895e882"/>
<selectionType typeId="36185fae-ec8d-4945-bfb4-f06851b4fbf8" valueTypeId="a10e40fd-5468-49ae-9496-6e017ffc5183"/>
<listType typeId="127038c6-50f0-4e43-936c-055cdbf0ce47" valueTypeId="50d23223-0b50-45bc-bdd0-510cd5da960a"/>
<managerType typeId="6a49c386-9c1a-489e-a944-e254063145a2" valueTypeId="08210355-5b74-4cda-92c7-49bd63888d01"/>
</producedTypes>
<name>CatalogOutOfRegion</name>
<synonym>
<key>en</key>
<value>Catalog out of region</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.CatalogOutOfRegion.StandardAttribute.Code</inputByString>
<inputByString>Catalog.CatalogOutOfRegion.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,25 @@
#Region Variables
Var a;
#EndRegion
Var b;
#Region Public
#EndRegion
#Region EventHandlers
// Enter code here.
#EndRegion
#Region Internal
// Enter code here.
#EndRegion
#Region Private
// Enter code here.
#EndRegion
#Region Initialize
#EndRegion

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3f527c81-c2c8-4d2c-b519-b72aa7a860f8">
<producedTypes>
<objectType typeId="7c63b34e-ecc7-4084-b81c-f75393efad69" valueTypeId="4d93c4a5-1713-4b39-b8ee-cde686afaf95"/>
<refType typeId="36b94ad5-e043-4790-a0ff-e7f383e6b51e" valueTypeId="03a3978d-54b7-4a88-a718-1d74e0d9c1ce"/>
<selectionType typeId="f83f5f5c-4399-412e-90ac-a478e59e82f7" valueTypeId="70674d6d-a20a-41c9-9148-e72cda44788b"/>
<listType typeId="1452d96e-3c36-46b2-8326-02b9e8f09493" valueTypeId="d47022ee-b44c-4327-bd14-67d0a1736dd9"/>
<managerType typeId="fa6e5783-95d3-4455-be8c-d9c82e70cac5" valueTypeId="449eaa27-3f8d-4281-960e-797d6f85b325"/>
</producedTypes>
<name>CatalogWrongRegion</name>
<synonym>
<key>en</key>
<value>Catalog wrong region</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.CatalogWrongRegion.StandardAttribute.Code</inputByString>
<inputByString>Catalog.CatalogWrongRegion.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,23 @@
#Region Variables
#EndRegion
#Region Public
Var a;
#EndRegion
#Region EventHandlers
// Enter code here.
#EndRegion
#Region Internal
// Enter code here.
#EndRegion
#Region Private
// Enter code here.
#EndRegion
#Region Initialize
#EndRegion

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="09ceaa51-ad6b-4cff-a466-84350bb15c6f">
<name>ModuleStructureVariablesInRegionCheck</name>
<synonym>
<key>en</key>
<value>Module structure variables in region check</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="8c89a036-941b-4b58-825d-a7ee0c4dd59a"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="730b3c61-b15c-415c-ac55-214e91f249a4"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="f8ea3fdd-a5bd-4af4-ba81-2eef92f82fc0"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="033ae26d-e065-4a6b-b619-fa106fc7bab8"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="b594fe53-04c0-4d0e-ae05-295ed22b887e"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="c61aa09a-ab14-438b-ace1-48f17c39b2c5"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="3b1e09b4-fba2-41b0-81e3-87f9e05e9122"/>
<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="0b35a5ef-e38b-4367-ab91-381e7686dc70">
<name>English</name>
<synonym>
<key>en</key>
<value>English</value>
</synonym>
<languageCode>en</languageCode>
</languages>
<catalogs>Catalog.Catalog</catalogs>
<catalogs>Catalog.CatalogComplient</catalogs>
<catalogs>Catalog.CatalogNoRegion</catalogs>
<catalogs>Catalog.CatalogOutOfRegion</catalogs>
<catalogs>Catalog.CatalogWrongRegion</catalogs>
</mdclass:Configuration>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>