mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2025-01-06 00:33:23 +02:00
parent
9d23e508bd
commit
2140998caa
@ -48,6 +48,7 @@
|
||||
- Отсутствует удаление временного файла после использования.
|
||||
- Структура модуля. Добавлена проверка области событий.
|
||||
- Отсутствует включение безопасного режима перед вызовом метода "Выполнить" или "Вычислить"
|
||||
- Структура модуля. Добавлена проверка метода вне области.
|
||||
|
||||
|
||||
#### Запросы
|
||||
|
@ -0,0 +1,40 @@
|
||||
# Check the method is outside a region
|
||||
|
||||
The method is outside a region
|
||||
|
||||
The Interface section contains export procedures and functions intended for use by other configuration objects or
|
||||
by other programs (for example, via an external connection).
|
||||
The Internal procedures and functions section contains procedures and functions that comprise
|
||||
the internal implementation of the common module. When a common module is a part of some functional subsystem
|
||||
that includes multiple metadata objects, this section can also contain other internal export procedures and
|
||||
functions intended to be called only from other objects of this subsystem.
|
||||
|
||||
## Noncompliant Code Example
|
||||
|
||||
```bsl
|
||||
|
||||
Procedure Noncompliant()
|
||||
//...
|
||||
EndProcedure
|
||||
|
||||
```bsl
|
||||
|
||||
## Compliant Solution
|
||||
|
||||
```bsl
|
||||
|
||||
#Region Private
|
||||
|
||||
Procedure Compliant()
|
||||
//...
|
||||
EndProcedure
|
||||
|
||||
#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)
|
@ -0,0 +1,62 @@
|
||||
# Проверяет что метод находится в области
|
||||
|
||||
Метод находится в области
|
||||
|
||||
Раздел «Программный интерфейс» содержит экспортные процедуры и функции, предназначенные для использования
|
||||
другими объектами конфигурации или другими программами (например, через внешнее соединение).
|
||||
Раздел «Служебный программный интерфейс» предназначен для модулей, которые являются частью некоторой функциональной
|
||||
подсистемы. В нем должны быть размещены экспортные процедуры и функции, которые допустимо вызывать только из других
|
||||
функциональных подсистем этой же библиотеки.
|
||||
Раздел «Служебные процедуры и функции» содержит процедуры и функции, составляющие внутреннюю реализацию общего модуля.
|
||||
В тех случаях, когда общий модуль является частью некоторой функциональной подсистемы, включающей в себя несколько
|
||||
объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные
|
||||
только для вызова из других объектов данной подсистемы.
|
||||
|
||||
## Неправильно
|
||||
|
||||
```bsl
|
||||
|
||||
Процедура МетодВызываемыйИзВне() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
// Код процедур и функций
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
// Код процедур и функций
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
// Код процедур и функций
|
||||
#КонецОбласти
|
||||
|
||||
```
|
||||
|
||||
## Правильно
|
||||
|
||||
```bsl
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
Процедура МетодВызываемыйИзВне() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
// Код процедур и функций
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
// Код процедур и функций
|
||||
#КонецОбласти
|
||||
|
||||
```
|
||||
|
||||
## См.
|
||||
|
||||
|
||||
- [Структура модуля](https://its.1c.ru/db/v8std#content:455:hdoc)
|
@ -115,6 +115,10 @@
|
||||
<check
|
||||
category="com.e1c.v8codestyle.bsl.strict"
|
||||
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.FunctionCtorReturnSectionCheck">
|
||||
</check>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.bsl"
|
||||
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureMethodInRegionCheck">
|
||||
</check>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.bsl.strict"
|
||||
|
@ -64,12 +64,12 @@ public abstract class AbstractModuleStructureCheck
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the parent region of given region.
|
||||
* Gets the parent region of this object located inside the region.
|
||||
*
|
||||
* @param object the region to find the parent, cannot be {@code null}.
|
||||
* @param object the object to find the first parent region, cannot be {@code null}.
|
||||
* @return the parent region, cannot return {@code null}.
|
||||
*/
|
||||
protected Optional<RegionPreprocessor> getFirstParentRegion(RegionPreprocessor object)
|
||||
protected Optional<RegionPreprocessor> getFirstParentRegion(EObject object)
|
||||
{
|
||||
EObject parent = object.eContainer();
|
||||
PreprocessorItem lastItem = null;
|
||||
@ -83,8 +83,10 @@ public abstract class AbstractModuleStructureCheck
|
||||
{
|
||||
return Optional.ofNullable(parentRegion);
|
||||
}
|
||||
|
||||
return Optional.empty();
|
||||
else
|
||||
{
|
||||
lastItem = null;
|
||||
}
|
||||
}
|
||||
else if (parent instanceof PreprocessorItem)
|
||||
{
|
||||
|
@ -154,6 +154,16 @@ final class Messages
|
||||
|
||||
public static String ModuleStructureEventRegionsCheck_Title;
|
||||
|
||||
public static String ModuleStructureMethodInRegionCheck_Description;
|
||||
|
||||
public static String ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions;
|
||||
|
||||
public static String ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions;
|
||||
|
||||
public static String ModuleStructureMethodInRegionCheck_Only_export;
|
||||
|
||||
public static String ModuleStructureMethodInRegionCheck_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;
|
||||
|
@ -0,0 +1,147 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2022, 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.METHOD;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
|
||||
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.IV8Project;
|
||||
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.IModuleStructureProvider;
|
||||
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 that the method is outside the regions.
|
||||
* Checks the standard interface regions for the existence of non-export methods
|
||||
* and the location of export methods outside the regions provided by the standard for export methods.
|
||||
*
|
||||
* @author Artem Iliukhin
|
||||
*
|
||||
*/
|
||||
public class ModuleStructureMethodInRegionCheck
|
||||
extends AbstractModuleStructureCheck
|
||||
{
|
||||
private static final String CHECK_ID = "module-structure-method-in-regions"; //$NON-NLS-1$
|
||||
|
||||
private static final String DEFAULT_CHECK_NESTING_OF_REGIONS = Boolean.toString(Boolean.TRUE);
|
||||
|
||||
private static final String MULTILEVEL_NESTING_OF_REGIONS = "multilevelNestingOfRegions"; //$NON-NLS-1$
|
||||
|
||||
private final IModuleStructureProvider moduleStructureProvider;
|
||||
|
||||
private final IV8ProjectManager v8ProjectManager;
|
||||
|
||||
@Inject
|
||||
public ModuleStructureMethodInRegionCheck(IModuleStructureProvider moduleStructureProvider,
|
||||
IV8ProjectManager v8ProjectManager)
|
||||
{
|
||||
super();
|
||||
this.moduleStructureProvider = moduleStructureProvider;
|
||||
this.v8ProjectManager = v8ProjectManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCheckId()
|
||||
{
|
||||
return CHECK_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureCheck(CheckConfigurer builder)
|
||||
{
|
||||
builder.title(Messages.ModuleStructureMethodInRegionCheck_Title)
|
||||
.description(
|
||||
Messages.ModuleStructureMethodInRegionCheck_Description)
|
||||
.complexity(CheckComplexity.NORMAL)
|
||||
.severity(IssueSeverity.MINOR)
|
||||
.issueType(IssueType.CODE_STYLE)
|
||||
.extension(new ModuleTopObjectNameFilterExtension())
|
||||
.extension(new StandardCheckExtension(getCheckId(), BslPlugin.PLUGIN_ID))
|
||||
.module()
|
||||
.checkedObjectType(METHOD)
|
||||
.parameter(MULTILEVEL_NESTING_OF_REGIONS, Boolean.class, DEFAULT_CHECK_NESTING_OF_REGIONS,
|
||||
Messages.ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
{
|
||||
|
||||
if (monitor.isCanceled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Method method = (Method)object;
|
||||
IV8Project project = v8ProjectManager.getProject(method);
|
||||
ScriptVariant scriptVariant = project.getScriptVariant();
|
||||
|
||||
ModuleType moduleType = getModuleType(method);
|
||||
Collection<String> regionNames = moduleStructureProvider.getModuleStructureRegions(moduleType, scriptVariant);
|
||||
|
||||
boolean multilevel = parameters.getBoolean(MULTILEVEL_NESTING_OF_REGIONS);
|
||||
|
||||
Optional<RegionPreprocessor> region = multilevel ? getTopParentRegion(method) : getFirstParentRegion(method);
|
||||
|
||||
// An export method located out of region in a form and command module is checked
|
||||
// by {@link ExportMethodInCommandFormModuleCheck}
|
||||
if (region.isEmpty())
|
||||
{
|
||||
addIssue(resultAceptor, method, String.join(", ", regionNames)); //$NON-NLS-1$
|
||||
}
|
||||
else if (moduleType != ModuleType.FORM_MODULE && moduleType != ModuleType.COMMAND_MODULE)
|
||||
{
|
||||
String publicName = ModuleStructureSection.PUBLIC.getName(scriptVariant);
|
||||
String internalName = ModuleStructureSection.INTERNAL.getName(scriptVariant);
|
||||
String privateName = ModuleStructureSection.PRIVATE.getName(scriptVariant);
|
||||
String regionName = region.get().getName();
|
||||
if (!method.isExport() && (publicName.equals(regionName) || internalName.equals(regionName)))
|
||||
{
|
||||
resultAceptor.addIssue(
|
||||
MessageFormat.format(Messages.ModuleStructureMethodInRegionCheck_Only_export, regionName),
|
||||
McorePackage.Literals.NAMED_ELEMENT__NAME);
|
||||
}
|
||||
else if (method.isExport() && !(publicName.equals(regionName) || internalName.equals(regionName)
|
||||
|| privateName.equals(regionName)))
|
||||
{
|
||||
addIssue(resultAceptor, method, String.join(", ", publicName, internalName, privateName)); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addIssue(ResultAcceptor resultAceptor, Method method, String regions)
|
||||
{
|
||||
resultAceptor.addIssue(MessageFormat.format(
|
||||
Messages.ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions,
|
||||
method.getName(), regions), McorePackage.Literals.NAMED_ELEMENT__NAME);
|
||||
}
|
||||
}
|
@ -219,6 +219,16 @@ ModuleStructureEventRegionsCheck_Only_event_methods__0=Only event methods can be
|
||||
|
||||
ModuleStructureEventRegionsCheck_Title=Checks the region of event handlers for the existence of methods related only to handlers
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Description=Checks that the method is outside the standard region, and suggests placing the method in one of the standard regions for the current type of module
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions=The method "{0}" should be placed in one of the standard regions: {1}
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions=Allow multilevel nesting of regions
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Only_export=Only export methods can be placed in the "{0}" region
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Title=Method is outside a standard 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.
|
||||
|
@ -204,6 +204,14 @@ ModuleStructureTopRegionCheck_error_message = Стандартная облас
|
||||
|
||||
ModuleStructureTopRegionCheck_title = Стандартная область структуры модуля верхнеуровневая
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions = Разрешить многоуровневое вложение областей
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Title = Метод вне области
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Description = Проверяет что метод находится вне области, и предлагает поместить метод в одну из стандартных для текущего типа модуля область
|
||||
|
||||
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions = Метод "{0}" необходимо разместить в одной из верхнеуровневых областей: {1}
|
||||
|
||||
ModuleUnusedLocalVariableCheck_Description = Проверка модуля на наличие неиспользуемых локальных переменных
|
||||
|
||||
ModuleUnusedLocalVariableCheck_Probably_variable_not_initilized_yet__0 = Возможно, переменная ''{0}'' еще не была проинициализирована
|
||||
|
@ -0,0 +1,204 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2022, 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 java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com._1c.g5.v8.dt.core.platform.IDtProject;
|
||||
import com._1c.g5.v8.dt.validation.marker.IExtraInfoKeys;
|
||||
import com._1c.g5.v8.dt.validation.marker.Marker;
|
||||
import com.e1c.g5.v8.dt.check.settings.CheckUid;
|
||||
import com.e1c.g5.v8.dt.check.settings.ICheckSettings;
|
||||
import com.e1c.g5.v8.dt.testing.check.SingleProjectReadOnlyCheckTestBase;
|
||||
import com.e1c.v8codestyle.bsl.check.ModuleStructureMethodInRegionCheck;
|
||||
import com.e1c.v8codestyle.internal.bsl.BslPlugin;
|
||||
|
||||
/**
|
||||
* Tests for {@link ModuleStructureMethodInRegionCheck} check.
|
||||
*
|
||||
* @author Artem Iliukhin
|
||||
*/
|
||||
public class ModuleStructureMethodInRegionCheckTest
|
||||
extends SingleProjectReadOnlyCheckTestBase
|
||||
{
|
||||
|
||||
private static final String CHECK_ID = "module-structure-method-in-regions"; //$NON-NLS-1$
|
||||
private static final String PROJECT_NAME = "ModuleStructureMethodInRegionCheck";
|
||||
|
||||
private static final String COMMON_MODULE_NO_REGION_FILE_NAME =
|
||||
"/src/CommonModules/CommonModuleNoRegion/Module.bsl";
|
||||
private static final String COMMON_MODULE_AFTER_REGION_FILE_NAME =
|
||||
"/src/CommonModules/CommonModuleAfterRegion/Module.bsl";
|
||||
private static final String CATALOG_MODULE_MANAGER_EVENT_OUT_REGION_FILE_NAME =
|
||||
"/src/Catalogs/CatalogOutOfRegion/ManagerModule.bsl";
|
||||
|
||||
private static final String COMMON_MODULE_IN_REGION_FILE_NAME =
|
||||
"/src/CommonModules/CommonModuleInRegion/Module.bsl";
|
||||
private static final String COMMON_MODULE_EXPORT_IN_REGION_FILE_NAME =
|
||||
"/src/CommonModules/CommonModuleExportInRegion/Module.bsl";
|
||||
private static final String COMMON_MODULE_EXPORT_IN_NON_INTERFACE_REGION_FILE_NAME =
|
||||
"/src/CommonModules/CommonModuleInNonInterfaceRegion/Module.bsl";
|
||||
private static final String COMMAND_MODULE_OUT_OF_REGION_FILE_NAME =
|
||||
"/src/CommonCommands/CommonCommand/CommandModule.bsl";
|
||||
private static final String FORM_MODULE_OUT_OF_REGION_FILE_NAME =
|
||||
"/src/Catalogs/CatalogOutOfRegion/Forms/ItemForm/Module.bsl";
|
||||
private static final Object MULTILEVEL_NESTING_OF_REGIONS = "multilevelNestingOfRegions";
|
||||
private static final String COMMON_MODULE_OUT_OF_MULTI_REGION_FILE_NAME =
|
||||
"/src/CommonModules/CommonModulMultiLevel/Module.bsl";
|
||||
private static final String COMMON_MODULE_OUT_OF_MULTI_REGION_NONCOMPLIENT_FILE_NAME =
|
||||
"/src/CommonModules/CommonModuleMultiLevel1/Module.bsl";
|
||||
|
||||
@Override
|
||||
protected String getTestConfigurationName()
|
||||
{
|
||||
return PROJECT_NAME;
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setSettings()
|
||||
{
|
||||
IDtProject dtProject = getProject();
|
||||
IProject project = dtProject.getWorkspaceProject();
|
||||
ICheckSettings settings = checkRepository.getSettings(new CheckUid(CHECK_ID, BslPlugin.PLUGIN_ID), project);
|
||||
settings.getParameters().get(MULTILEVEL_NESTING_OF_REGIONS).setValue(Boolean.toString(Boolean.TRUE));
|
||||
checkRepository.applyChanges(Collections.singleton(settings), project);
|
||||
waitForDD(dtProject);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoRegion() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_NO_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("1", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodAfterRegion() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_AFTER_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("5", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEventModuleManagerOutOfRegion() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(CATALOG_MODULE_MANAGER_EVENT_OUT_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("10", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExportMethodInNonInterfaceRegion() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_EXPORT_IN_NON_INTERFACE_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("3", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodInRegion() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_IN_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("3", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExportMethodInRegion() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_EXPORT_IN_REGION_FILE_NAME);
|
||||
assertEquals(0, markers.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodOutOfRegionInForm() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(FORM_MODULE_OUT_OF_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("2", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodOutOfRegionInCommand() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMAND_MODULE_OUT_OF_REGION_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("3", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodOutOfNonMultiRegionOption() throws Exception
|
||||
{
|
||||
IDtProject dtProject = getProject();
|
||||
IProject project = dtProject.getWorkspaceProject();
|
||||
ICheckSettings settings = checkRepository.getSettings(new CheckUid(CHECK_ID, BslPlugin.PLUGIN_ID), project);
|
||||
settings.getParameters().get(MULTILEVEL_NESTING_OF_REGIONS).setValue(Boolean.toString(Boolean.FALSE));
|
||||
checkRepository.applyChanges(Collections.singleton(settings), project);
|
||||
waitForDD(dtProject);
|
||||
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_OUT_OF_MULTI_REGION_FILE_NAME);
|
||||
assertEquals(0, markers.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodOutOfNonMultiRegionOptionNonComplient() throws Exception
|
||||
{
|
||||
IDtProject dtProject = getProject();
|
||||
IProject project = dtProject.getWorkspaceProject();
|
||||
ICheckSettings settings = checkRepository.getSettings(new CheckUid(CHECK_ID, BslPlugin.PLUGIN_ID), project);
|
||||
settings.getParameters().get(MULTILEVEL_NESTING_OF_REGIONS).setValue(Boolean.toString(Boolean.FALSE));
|
||||
checkRepository.applyChanges(Collections.singleton(settings), project);
|
||||
waitForDD(dtProject);
|
||||
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_OUT_OF_MULTI_REGION_NONCOMPLIENT_FILE_NAME);
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
assertEquals("6", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodOutOfMultiRegionOption() throws Exception
|
||||
{
|
||||
List<Marker> markers = getMarkers(COMMON_MODULE_OUT_OF_MULTI_REGION_FILE_NAME);
|
||||
assertEquals(0, markers.size());
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>ModuleStructureMethodInRegionCheck</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>
|
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
@ -0,0 +1,2 @@
|
||||
Manifest-Version: 1.0
|
||||
Runtime-Version: 8.3.19
|
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="455d05d5-df0a-4930-bcaa-96fa060a66a4">
|
||||
<producedTypes>
|
||||
<objectType typeId="e139fc3a-546a-453f-a846-faaef7b1dd65" valueTypeId="e780f751-3b85-4010-92b2-c68fd33f5016"/>
|
||||
<refType typeId="a886f0ea-88a3-42a5-aca5-352703c4e2de" valueTypeId="c9403923-f233-4e51-8450-41965fddd4e5"/>
|
||||
<selectionType typeId="ec53fee4-3fbd-40a7-b5c5-13d177b92428" valueTypeId="b0531e68-dfcb-4d0a-bc68-d3223b871d34"/>
|
||||
<listType typeId="17c20a4b-8f31-4756-9ad2-a48ded24e21d" valueTypeId="f5898cbd-b1cd-4dcf-9310-c15945c9bfc4"/>
|
||||
<managerType typeId="54ee0ec3-c09e-4e95-83d1-b0686029fbae" valueTypeId="9b83bae2-1a84-41b2-a69b-917986ad93db"/>
|
||||
</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>
|
||||
<defaultObjectForm>Catalog.CatalogOutOfRegion.Form.ItemForm</defaultObjectForm>
|
||||
<forms uuid="c73c9f63-9a7b-4837-9c04-dcf1f4b51999">
|
||||
<name>ItemForm</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Item form</value>
|
||||
</synonym>
|
||||
<usePurposes>PersonalComputer</usePurposes>
|
||||
<usePurposes>MobileDevice</usePurposes>
|
||||
</forms>
|
||||
</mdclass:Catalog>
|
@ -0,0 +1,143 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
|
||||
<items xsi:type="form:FormField">
|
||||
<name>Code</name>
|
||||
<id>1</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>Object.Code</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>CodeExtendedTooltip</name>
|
||||
<id>3</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>CodeContextMenu</name>
|
||||
<id>2</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>InputField</type>
|
||||
<editMode>EnterOnInput</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:InputFieldExtInfo">
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<wrap>true</wrap>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textEdit>true</textEdit>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>Description</name>
|
||||
<id>4</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>Object.Description</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>DescriptionExtendedTooltip</name>
|
||||
<id>6</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>DescriptionContextMenu</name>
|
||||
<id>5</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>InputField</type>
|
||||
<editMode>EnterOnInput</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:InputFieldExtInfo">
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<wrap>true</wrap>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textEdit>true</textEdit>
|
||||
</extInfo>
|
||||
</items>
|
||||
<autoCommandBar>
|
||||
<name>FormCommandBar</name>
|
||||
<id>-1</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
<autoFill>true</autoFill>
|
||||
</autoCommandBar>
|
||||
<windowOpeningMode>LockOwnerWindow</windowOpeningMode>
|
||||
<autoTitle>true</autoTitle>
|
||||
<autoUrl>true</autoUrl>
|
||||
<group>Vertical</group>
|
||||
<autoFillCheck>true</autoFillCheck>
|
||||
<allowFormCustomize>true</allowFormCustomize>
|
||||
<enabled>true</enabled>
|
||||
<showTitle>true</showTitle>
|
||||
<showCloseButton>true</showCloseButton>
|
||||
<attributes>
|
||||
<name>Object</name>
|
||||
<id>1</id>
|
||||
<valueType>
|
||||
<types>CatalogObject.CatalogOutOfRegion</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
<main>true</main>
|
||||
<savedData>true</savedData>
|
||||
</attributes>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar/>
|
||||
</commandInterface>
|
||||
<extInfo xsi:type="form:CatalogFormExtInfo"/>
|
||||
</form:Form>
|
@ -0,0 +1,4 @@
|
||||
|
||||
Procedure UnComplient()
|
||||
|
||||
EndProcedure
|
@ -0,0 +1,21 @@
|
||||
|
||||
#Region Public
|
||||
// Enter code here.
|
||||
#EndRegion
|
||||
|
||||
#Region EventHandlers
|
||||
|
||||
#EndRegion
|
||||
|
||||
Procedure FormGetProcessing(FormType, Parameters, SelectedForm, AdditionalInformation, StandardProcessing)
|
||||
//TODO: Insert the handler content
|
||||
EndProcedure
|
||||
|
||||
#Region Internal
|
||||
// Enter code here.
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
// Enter code here.
|
||||
#EndRegion
|
||||
|
@ -0,0 +1,7 @@
|
||||
|
||||
&AtClient
|
||||
Procedure CommandProcessing(CommandParameter, CommandExecuteParameters)
|
||||
//TODO: Paste handler content.
|
||||
//FormParameters = New Structure("", );
|
||||
//OpenForm("CommonForm.", FormParameters, CommandExecuteParameters.Source, CommandExecuteParameters.Uniqueness, CommandExecuteParameters.Window, CommandExecuteParameters.URL);
|
||||
EndProcedure
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonCommand xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ec274abb-481c-4ea9-b431-6952f7e6e9ad">
|
||||
<name>CommonCommand</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common command</value>
|
||||
</synonym>
|
||||
<group>ActionsPanelTools</group>
|
||||
<representation>Auto</representation>
|
||||
</mdclass:CommonCommand>
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f5d1162e-e7b6-4a08-8e17-cb944d7c82fc">
|
||||
<name>CommonModulMultiLevel</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common modul multi level</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,12 @@
|
||||
|
||||
#Region Public
|
||||
|
||||
#Region SecondLevel
|
||||
|
||||
#EndRegion
|
||||
|
||||
Procedure Complient() Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9a18ed1a-a7f9-4d19-8058-3289bcc24ce0">
|
||||
<name>CommonModuleAfterRegion</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common module after region</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,7 @@
|
||||
#Region Public
|
||||
|
||||
#EndRegion
|
||||
|
||||
Procedure NonComplient()
|
||||
|
||||
EndProcedure
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7029f3d4-de6f-459f-9923-bf1d870af4ee">
|
||||
<name>CommonModuleExportInRegion</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common module export in region</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,8 @@
|
||||
#Region Public
|
||||
|
||||
Procedure Complient() Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="21389003-9e6b-4436-9cd6-632572dfeeea">
|
||||
<name>CommonModuleInNonInterfaceRegion</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common module in non interface region</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,8 @@
|
||||
#Region NonComplient
|
||||
|
||||
Procedure NonComplient() Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ce0ad85f-b5ee-4f59-b409-f50ddd0539bd">
|
||||
<name>CommonModuleInRegion</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common module in region</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,8 @@
|
||||
#Region Public
|
||||
|
||||
Procedure NonComplient()
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="78b735dc-2bde-40f1-aa86-e0c8b7be24ae">
|
||||
<name>CommonModuleMultiLevel1</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common module multi level1</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,12 @@
|
||||
|
||||
#Region Public
|
||||
|
||||
#Region SecondLevel
|
||||
|
||||
Procedure NonComplient() Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="53ce0678-7770-4cc4-b995-b043254e7dfa">
|
||||
<name>CommonModuleNoRegion</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Common module no region</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,3 @@
|
||||
Procedure NonComplient()
|
||||
|
||||
EndProcedure
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="da3da622-85c7-4a68-9cb7-0ee5aa7448e7">
|
||||
<name>StructureModule</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Structure module</value>
|
||||
</synonym>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="11fab9f4-1ac8-4b90-974c-148dd1f1ee29"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="23524e35-34a7-4bc8-94d1-c314704aad64"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="bf5898bf-f470-4416-bbdf-78425a7ed95d"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="b1d7c42c-2468-422c-aae9-22ca0f17d470"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="95b2fb6a-d0b0-4bba-933f-f25846ff134c"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="212dac74-8939-4083-bd96-464aef7f5c0a"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="536422e3-5396-4bae-99a5-bdb058bfc993"/>
|
||||
<configurationExtensionCompatibilityMode>8.3.20</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.20</compatibilityMode>
|
||||
<languages uuid="52ec6aa9-b177-434c-b409-1c456749c996">
|
||||
<name>English</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>English</value>
|
||||
</synonym>
|
||||
<languageCode>en</languageCode>
|
||||
</languages>
|
||||
<commonModules>CommonModule.CommonModuleAfterRegion</commonModules>
|
||||
<commonModules>CommonModule.CommonModuleExportInRegion</commonModules>
|
||||
<commonModules>CommonModule.CommonModuleInNonInterfaceRegion</commonModules>
|
||||
<commonModules>CommonModule.CommonModuleInRegion</commonModules>
|
||||
<commonModules>CommonModule.CommonModuleNoRegion</commonModules>
|
||||
<commonModules>CommonModule.CommonModulMultiLevel</commonModules>
|
||||
<commonModules>CommonModule.CommonModuleMultiLevel1</commonModules>
|
||||
<commonCommands>CommonCommand.CommonCommand</commonCommands>
|
||||
<catalogs>Catalog.CatalogOutOfRegion</catalogs>
|
||||
</mdclass:Configuration>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
Loading…
Reference in New Issue
Block a user