mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2025-04-04 09:49:40 +02:00
Merge pull request #1152 from 1C-Company/bugfix/1138-parent-type-intersect
Исправление пересечения родительских типов ОМД #1138
This commit is contained in:
commit
dc66530351
@ -100,6 +100,7 @@
|
||||
- Не понятно в какой бинарной операции ошибка ql-constants-in-binary-operation #1143
|
||||
- Возникает NPE при работе проверки form-list-ref-user-visibility-enabled #1146
|
||||
- Проверка: doc-comment-parameter-section не находит ошибку #1087
|
||||
- Исправление пересечения родительских типов ОМД #1138
|
||||
|
||||
## 0.2.0
|
||||
|
||||
|
@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
|
||||
org.eclipse.xtext.builder;bundle-version="[2.18.0,3.0.0)",
|
||||
org.eclipse.xtext.ui;bundle-version="[2.24.0,3.0.0)",
|
||||
org.eclipse.handly;bundle-version="[1.5.0,2.0.0)",
|
||||
org.eclipse.xtext.ui.shared;bundle-version="[2.19.0,3.0.0)"
|
||||
org.eclipse.xtext.ui.shared;bundle-version="[2.19.0,3.0.0)",
|
||||
org.eclipse.jdt.annotation;bundle-version="[2.2.0,3.0.0)";resolution:=optional
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-11
|
||||
Automatic-Module-Name: com.e1c.v8codestyle.bsl
|
||||
Bundle-ActivationPolicy: lazy
|
||||
|
@ -55,9 +55,9 @@ import com._1c.g5.v8.dt.mcore.TypeItem;
|
||||
import com._1c.g5.v8.dt.mcore.TypeSet;
|
||||
import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectDynamicTypeNames;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.v8.dt.check.components.BasicCheck;
|
||||
import com.e1c.v8codestyle.internal.bsl.BslPlugin;
|
||||
|
||||
/**
|
||||
* Abstract check of types in module objects. Allows to compute types respecting system enums,
|
||||
@ -68,14 +68,6 @@ import com.e1c.g5.v8.dt.check.components.BasicCheck;
|
||||
public abstract class AbstractTypeCheck
|
||||
extends BasicCheck
|
||||
{
|
||||
|
||||
private static final Collection<String> ALL_REF_TYPE_SET_PARENT_TYPE_NAMES =
|
||||
Set.of(IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME, IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME, IEObjectDynamicTypeNames.COC_REF_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.COA_REF_TYPE_NAME, IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.BP_REF_TYPE_NAME, IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME, IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME);
|
||||
|
||||
private static final String COMMON_MODULE = "CommonModule"; //$NON-NLS-1$
|
||||
|
||||
private static final QualifiedName QN_COMMON_MODULE = QualifiedName.create(COMMON_MODULE);
|
||||
@ -101,6 +93,8 @@ public abstract class AbstractTypeCheck
|
||||
/** The comment provider service. */
|
||||
protected final BslMultiLineCommentDocumentationProvider commentProvider;
|
||||
|
||||
private final InternalTypeNameRegistry internalTypeNameRegistry;
|
||||
|
||||
/**
|
||||
* Instantiates a new abstract type check.
|
||||
*
|
||||
@ -121,6 +115,9 @@ public abstract class AbstractTypeCheck
|
||||
this.scopeProvider = rsp.get(IScopeProvider.class);
|
||||
this.commentProvider = rsp.get(BslMultiLineCommentDocumentationProvider.class);
|
||||
this.qualifiedNameConverter = qualifiedNameConverter;
|
||||
this.internalTypeNameRegistry =
|
||||
BslPlugin.getDefault().getInjector().getInstance(InternalTypeNameRegistry.class);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -316,7 +313,7 @@ public abstract class AbstractTypeCheck
|
||||
return parentTypes;
|
||||
}
|
||||
|
||||
private static Collection<String> getTypeNames(Collection<TypeItem> parentTypes, EObject context)
|
||||
private Collection<String> getTypeNames(Collection<TypeItem> parentTypes, EObject context)
|
||||
{
|
||||
Set<String> typeNames = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
|
||||
for (TypeItem type : parentTypes)
|
||||
@ -326,6 +323,11 @@ public abstract class AbstractTypeCheck
|
||||
if (typeName != null)
|
||||
{
|
||||
typeNames.add(typeName);
|
||||
String parentTypeName = getTypeSetItemParentTypeName(typeName);
|
||||
if (parentTypeName != null)
|
||||
{
|
||||
typeNames.add(parentTypeName);
|
||||
}
|
||||
}
|
||||
if (type instanceof TypeSet && typeName != null)
|
||||
{
|
||||
@ -337,48 +339,16 @@ public abstract class AbstractTypeCheck
|
||||
|
||||
if (IEObjectTypeNames.ANY_REF.equals(typeName))
|
||||
{
|
||||
typeNames.addAll(ALL_REF_TYPE_SET_PARENT_TYPE_NAMES);
|
||||
}
|
||||
else
|
||||
{
|
||||
String parentTypeName = getTypeSetItemParentTypeName(typeName);
|
||||
if (parentTypeName != null)
|
||||
{
|
||||
typeNames.add(parentTypeName);
|
||||
}
|
||||
typeNames.addAll(internalTypeNameRegistry.allRefTypeSetParentTypeNames());
|
||||
}
|
||||
}
|
||||
}
|
||||
return typeNames;
|
||||
}
|
||||
|
||||
private static String getTypeSetItemParentTypeName(String typeName)
|
||||
private String getTypeSetItemParentTypeName(String typeName)
|
||||
{
|
||||
switch (typeName)
|
||||
{
|
||||
case IEObjectTypeNames.CATALOG_REF:
|
||||
return IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.DOCUMENT_REF:
|
||||
return IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.ENUM_REF:
|
||||
return IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_REF:
|
||||
return IEObjectDynamicTypeNames.COC_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.CHART_OF_ACCOUNTS_REF:
|
||||
return IEObjectDynamicTypeNames.COA_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_REF:
|
||||
return IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.BUSINESS_PROCESS_REF:
|
||||
return IEObjectDynamicTypeNames.BP_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.BUSINESS_PROCESS_ROUTE_POINT_REF:
|
||||
return IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME;
|
||||
case IEObjectTypeNames.TASK_REF:
|
||||
return IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME;
|
||||
case IEObjectTypeNames.EXCHANGE_PLAN_REF:
|
||||
return IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return internalTypeNameRegistry.getInternalTypeName(typeName);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,304 @@
|
||||
/*******************************************************************************
|
||||
* 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.strict.check;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
|
||||
import com._1c.g5.v8.dt.platform.IEObjectDynamicTypeNames;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
/**
|
||||
* The registry of internal type name.
|
||||
*
|
||||
* @author Dmitriy Marmyshev
|
||||
*/
|
||||
@Singleton
|
||||
public class InternalTypeNameRegistry
|
||||
{
|
||||
private Map<String, String> typeToInternalTypeNames;
|
||||
|
||||
private Collection<String> allRefTypeSetParentTypeNames;
|
||||
|
||||
/**
|
||||
* Gets the internal type name by the given public type name.
|
||||
*
|
||||
* @param typeName the public type name
|
||||
* @return the internal type name
|
||||
*/
|
||||
@Nullable
|
||||
public String getInternalTypeName(String typeName)
|
||||
{
|
||||
if (typeName == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (typeToInternalTypeNames == null)
|
||||
{
|
||||
init();
|
||||
}
|
||||
return typeToInternalTypeNames.get(typeName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide set of all reference type names of parent types.
|
||||
*
|
||||
* @return the collection of all reference type names of parent types.
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public Collection<String> allRefTypeSetParentTypeNames()
|
||||
{
|
||||
if (allRefTypeSetParentTypeNames == null)
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
return allRefTypeSetParentTypeNames;
|
||||
}
|
||||
|
||||
private synchronized void init()
|
||||
{
|
||||
if (typeToInternalTypeNames != null && allRefTypeSetParentTypeNames != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, String> internalTypeNames = new HashMap<>();
|
||||
internalTypeNames.put(IEObjectTypeNames.CATALOG_OBJ, IEObjectDynamicTypeNames.CATALOG_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CATALOG_REF, IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CATALOG_SELECTION,
|
||||
IEObjectDynamicTypeNames.CATALOG_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CATALOG_LIST, IEObjectDynamicTypeNames.CATALOG_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CATALOG_MANAGER, IEObjectDynamicTypeNames.CATALOG_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_OBJ, IEObjectDynamicTypeNames.DOCUMENT_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_REF, IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_SELECTION,
|
||||
IEObjectDynamicTypeNames.DOCUMENT_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_LIST, IEObjectDynamicTypeNames.DOCUMENT_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_MANAGER, IEObjectDynamicTypeNames.DOCUMENT_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_OBJ,
|
||||
IEObjectDynamicTypeNames.COC_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_REF,
|
||||
IEObjectDynamicTypeNames.COC_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_SELECTION,
|
||||
IEObjectDynamicTypeNames.COC_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_LIST,
|
||||
IEObjectDynamicTypeNames.COC_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_MANAGER,
|
||||
IEObjectDynamicTypeNames.COC_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_OBJ, IEObjectDynamicTypeNames.COA_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_REF, IEObjectDynamicTypeNames.COA_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_SELECTION,
|
||||
IEObjectDynamicTypeNames.COA_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_LIST, IEObjectDynamicTypeNames.COA_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_MANAGER,
|
||||
IEObjectDynamicTypeNames.COA_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_EXT_DIMENSION_TYPES,
|
||||
IEObjectDynamicTypeNames.COA_EXT_DIM_TYPE_NAME);
|
||||
internalTypeNames.put("ChartOfAccountsExtDimensionTypesRow", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.COA_EXT_DIM_ROW_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_OBJ,
|
||||
IEObjectDynamicTypeNames.CHART_OF_CALCULATION_TYPES_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_MANAGER,
|
||||
IEObjectDynamicTypeNames.CHART_OF_CALCULATION_TYPES_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECORD,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_SELECTION,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_LIST,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_MANAGER,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECORD_KEY,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECORD_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECALCS,
|
||||
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECALCS_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.RECALCULATION_RECORD,
|
||||
IEObjectDynamicTypeNames.RECALCULATION_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.RECALCULATION_MANAGER,
|
||||
IEObjectDynamicTypeNames.RECALCULATION_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.RECALCULATION_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.RECALCULATION_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_SELECTION,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_LIST,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_MANAGER,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD_KEY,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD_MANAGER,
|
||||
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ENUM_REF, IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ENUM_LIST, IEObjectDynamicTypeNames.ENUM_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ENUM_MANAGER, IEObjectDynamicTypeNames.ENUM_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_SELECTION,
|
||||
IEObjectDynamicTypeNames.ACCUM_REG_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_LIST,
|
||||
IEObjectDynamicTypeNames.ACCUM_REG_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.ACCUM_REG_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_MANAGER,
|
||||
IEObjectDynamicTypeNames.ACCUM_REG_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_RECORD_KEY,
|
||||
IEObjectDynamicTypeNames.ACCUM_REG_RECORD_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_RECORD,
|
||||
IEObjectDynamicTypeNames.ACCUM_REG_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put("AccountingRegisterSelection", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_LIST,
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_MANAGER,
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_RECORD_KEY,
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_RECORD_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_RECORD,
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put("AccountingRegisterExtDimensions", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_EXT_DIMENSIONS_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CONSTANT_MANAGER, IEObjectDynamicTypeNames.CONSTANT_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CONSTANT_VALUE_MANAGER,
|
||||
IEObjectDynamicTypeNames.CONSTANT_VALUE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CONSTANT_VALUE_KEY,
|
||||
IEObjectDynamicTypeNames.CONSTANT_VALUE_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_OBJ,
|
||||
IEObjectDynamicTypeNames.EXCHANGE_PLAN_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_REF,
|
||||
IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_SELECTION,
|
||||
IEObjectDynamicTypeNames.EXCHANGE_PLAN_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_LIST,
|
||||
IEObjectDynamicTypeNames.EXCHANGE_PLAN_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXCHANGE_PLAN_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_OBJ, IEObjectDynamicTypeNames.BP_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_REF, IEObjectDynamicTypeNames.BP_REF_TYPE_NAME);
|
||||
internalTypeNames.put("BusinessProcessSelection", IEObjectDynamicTypeNames.BP_SELECTION_TYPE_NAME); //$NON-NLS-1$
|
||||
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_LIST, IEObjectDynamicTypeNames.BP_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_MANAGER,
|
||||
IEObjectDynamicTypeNames.BP_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_ROUTE_POINT_REF,
|
||||
IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.TASK_OBJ, IEObjectDynamicTypeNames.TASK_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.TASK_REF, IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME);
|
||||
internalTypeNames.put("TaskSelection", IEObjectDynamicTypeNames.TASK_SELECTION_TYPE_NAME); //$NON-NLS-1$
|
||||
internalTypeNames.put(IEObjectTypeNames.TASK_LIST, IEObjectDynamicTypeNames.TASK_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.TASK_MANAGER, IEObjectDynamicTypeNames.TASK_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.SEQUENCE_RECORD, IEObjectDynamicTypeNames.SEQUENCE_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.SEQUENCE_MANAGER, IEObjectDynamicTypeNames.SEQUENCE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.SEQUENCE_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.SEQUENCE_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put("DocumentJournalSelection", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.DOCUMENT_JOURNAL_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_JOURNAL_LIST,
|
||||
IEObjectDynamicTypeNames.DOCUMENT_JOURNAL_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_JOURNAL_MANAGER,
|
||||
IEObjectDynamicTypeNames.DOCUMENT_JOURNAL_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.REPORT_OBJ, IEObjectDynamicTypeNames.REPORT_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.REPORT_MANAGER, IEObjectDynamicTypeNames.REPORT_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DATA_PROCESSOR_OBJ,
|
||||
IEObjectDynamicTypeNames.DATA_PROCESSOR_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.DATA_PROCESSOR_MANAGER,
|
||||
IEObjectDynamicTypeNames.DATA_PROCESSOR_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.FILTER_CRITERION_LIST,
|
||||
IEObjectDynamicTypeNames.FILTER_CRITERION_LIST_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.FILTER_CRITERION_MANAGER,
|
||||
IEObjectDynamicTypeNames.FILTER_CRITERION_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put("WSReferenceManager", IEObjectDynamicTypeNames.WS_REFERENCE_MANAGER_TYPE_NAME); //$NON-NLS-1$
|
||||
internalTypeNames.put(IEObjectTypeNames.SETTINGS_STORAGE_MANAGER,
|
||||
IEObjectDynamicTypeNames.SETTINGS_STORAGE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_REF,
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_SELECTION,
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_SELECTION_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_LIST,
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_LIST_TYPE_NAME);
|
||||
internalTypeNames.put("DisplacingCalculationTypes", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_DISPLACING_CALCULATION_TYPES);
|
||||
internalTypeNames.put("DisplacingCalculationTypesRow", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_DISPLACING_CALCULATION_TYPES_ROW);
|
||||
internalTypeNames.put("BaseCalculationTypes", IEObjectDynamicTypeNames.CALCULATION_TYPE_BASE_CALCULATION_TYPES); //$NON-NLS-1$
|
||||
internalTypeNames.put("BaseCalculationTypesRow", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_BASE_CALCULATION_TYPES_ROW);
|
||||
internalTypeNames.put("LeadingCalculationTypes", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_LEADING_CALCULATION_TYPES);
|
||||
internalTypeNames.put("LeadingCalculationTypesRow", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.CALCULATION_TYPE_LEADING_CALCULATION_TYPES_ROW);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put("ExternalDataSourceTablesManager", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLES_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put("ExternalDataSourceCubesManager", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBES_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_KEY,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put("ExternalDataSourceCubeDimensionsTablesManager", //$NON-NLS-1$
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLES_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLE_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_DIMENSION_TABLE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLE_OBJECT,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_DIMENSION_TABLE_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLE_REF,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_DIMENSION_TABLE_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_OBJECT,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_OBJECT_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_REF,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_REF_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_SET,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_SET_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_KEY,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_KEY_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_MANAGER,
|
||||
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INTEGRATION_SERVICE_MANAGER,
|
||||
IEObjectDynamicTypeNames.INTEGRATION_SERVICE_MANAGER_TYPE_NAME);
|
||||
internalTypeNames.put(IEObjectTypeNames.INTEGRATION_SERVICE_MANAGER_CHANNEL,
|
||||
IEObjectDynamicTypeNames.INTEGRATION_SERVICE_CHANNEL_MANAGER_TYPE_NAME);
|
||||
|
||||
typeToInternalTypeNames = Map.copyOf(internalTypeNames);
|
||||
|
||||
allRefTypeSetParentTypeNames =
|
||||
Set.of(IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME, IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME, IEObjectDynamicTypeNames.COC_REF_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.COA_REF_TYPE_NAME, IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.BP_REF_TYPE_NAME, IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME,
|
||||
IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME, IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME);
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
// @strict-types
|
||||
|
||||
Procedure OnWrite()
|
||||
|
||||
Test(ThisObject);
|
||||
|
||||
EndProcedure
|
||||
|
||||
// Parameters:
|
||||
// ObjectOfCatalog - CatalogObject - Объект справочника
|
||||
//
|
||||
Procedure Test(ObjectOfCatalog)
|
||||
|
||||
|
||||
EndProcedure
|
@ -0,0 +1,63 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package com.e1c.v8codestyle.bsl.strict.check.itests;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com._1c.g5.v8.dt.validation.marker.Marker;
|
||||
import com.e1c.v8codestyle.bsl.check.itests.AbstractSingleModuleTestBase;
|
||||
import com.e1c.v8codestyle.bsl.strict.check.InvocationParamIntersectionCheck;
|
||||
|
||||
/**
|
||||
* Tests for {@link InvocationParamIntersectionCheck} check.
|
||||
*
|
||||
* @author Dmitriy Marmyshev
|
||||
*/
|
||||
public class InvocationParamIntersectionCheckTest
|
||||
extends AbstractSingleModuleTestBase
|
||||
{
|
||||
|
||||
private static final String PROJECT_NAME = "CatalogModules";
|
||||
|
||||
private static final String MODULE_FILE_NAME = "/src/Catalogs/TestCatalog/ObjectModule.bsl";
|
||||
|
||||
/**
|
||||
* Instantiates a new invocation parameter intersection check test.
|
||||
*/
|
||||
public InvocationParamIntersectionCheckTest()
|
||||
{
|
||||
super(InvocationParamIntersectionCheck.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test invocation intersection of type {@code CatalogObject.TestCatalog} with parent type {@code CatalogObject}.
|
||||
*
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
@Test
|
||||
public void testInvocationIntersectionWithParentType() throws Exception
|
||||
{
|
||||
updateModule(FOLDER_RESOURCE + "strict/invocation-parameter-type-intersect-catalog-object.bsl");
|
||||
|
||||
List<Marker> markers = getModuleMarkers();
|
||||
assertTrue(markers.isEmpty());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTestConfigurationName()
|
||||
{
|
||||
return PROJECT_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getModuleFileName()
|
||||
{
|
||||
return MODULE_FILE_NAME;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>CatalogModules</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,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c385d3fb-a7bc-406e-bed2-11bdb2cd13a4">
|
||||
<producedTypes>
|
||||
<objectType typeId="8d58b655-f6f9-4608-957d-eeb265a3fe80" valueTypeId="2c6541c1-eeda-4cc7-af1c-197e7c63c402"/>
|
||||
<refType typeId="0cdedb23-d7ed-4588-ad2d-647689dd9655" valueTypeId="40668cde-2109-491f-b5e5-9d0e3cb4b8b0"/>
|
||||
<selectionType typeId="e3b17a28-d01c-40ef-8231-445bab2a0e82" valueTypeId="1271498d-d446-46d5-a206-530f334719f6"/>
|
||||
<listType typeId="cad34e92-28f6-4752-87e1-63b181a8e659" valueTypeId="947457d7-a864-4efa-acab-b76dcd6394fa"/>
|
||||
<managerType typeId="10df9a48-cb06-4bc3-80c2-3e5361727165" valueTypeId="d5a46756-6a6d-41d0-abb2-a691b831726e"/>
|
||||
</producedTypes>
|
||||
<name>TestCatalog</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Test catalog</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<inputByString>Catalog.TestCatalog.StandardAttribute.Code</inputByString>
|
||||
<inputByString>Catalog.TestCatalog.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>
|
@ -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,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="48f9df0f-3822-4857-b015-2cfbfccf2f0f">
|
||||
<name>CatalogModules</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Catalog modules</value>
|
||||
</synonym>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="77bb3ac6-59b2-4f92-ae1c-41d80aa7bf2d"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="3bbde361-d486-4d63-a131-13726bc8e6a6"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5217b349-47f7-44c9-b82d-04cadbbba76b"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="ae4ef44f-a54e-475c-9e11-de9fb795c61a"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="decbf819-e39e-4217-80dc-13e7efda496d"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5bc8a76c-dbb1-4237-9986-52808a7eeb81"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="3df3aeb6-9577-40dc-b8e4-2b71a4dc593a"/>
|
||||
<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="a0f37188-f580-4409-971b-f72f6c603bac">
|
||||
<name>English</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>English</value>
|
||||
</synonym>
|
||||
<languageCode>en</languageCode>
|
||||
</languages>
|
||||
<catalogs>Catalog.TestCatalog</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…
x
Reference in New Issue
Block a user