1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-07-17 13:07:50 +02:00

#133 Проверка реквизита "Комментарий" у объектов метаданных (#1254)

Реализована проверка реквизита "Комментарий" у документов и справочников
(стандарт 531). Проверка типа: Строка неограниченной длинны, многострочная.
This commit is contained in:
Vadim Goncharov
2023-03-13 23:40:55 +03:00
committed by GitHub
parent 5eba8cf466
commit 31e07167fc
24 changed files with 672 additions and 0 deletions

View File

@ -11,6 +11,7 @@
#### Метаданные
- Документ не имеет реквизита "Комментарий"
- Реквизит "Комментарий" имеет корректный тип
#### Формы

View File

@ -0,0 +1,18 @@
# Attribute "Comment" for documents
For all documents, it is recommended to create the Comment attribute (string of unlimited length).
In this attribute, users can write down various notes of an official nature on the document
that are not related to the application specifics of the document (for example, the reason for marking for deletion, etc.).
Access to the attribute for users must be configured in the same way as to the document itself
(if the document is read-only, then the comment is read-only; if there is write access to the document,
then the value of the attribute can also be changed).
Multiline edit must be enabled.
## Noncompliant Code Example
## Compliant Solution
## See
[Attribute "Comment" for documents](https://its.1c.ru/db/v8std#content:531:hdoc:1)

View File

@ -0,0 +1,21 @@
# Реквизит «Комментарий» у документов
Для всех документов рекомендуется создавать реквизит Комментарий
(строка неограниченной длины). В этом реквизите пользователи могут
записывать по документу различные заметки служебного характера, которые
не относятся к прикладной специфике документа (например, причина пометки
на удаления и т.п.). Доступ к реквизиту для пользователей должен быть
настроен также как и к самому документу (если документ доступен только
для чтения, то и комментарий – только для чтения; если же есть право
записи документа, то и значение реквизита также можно изменять).
Свойство "Многострочный режим" у реквизита должно быть включено.
быть включено.
## Неправильно
## Правильно
## См.
[Реквизит «Комментарий» у документов](https://its.1c.ru/db/v8std#content:531:hdoc:1)

View File

@ -110,6 +110,10 @@
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.ExtensionMdObjectNamePrefixCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.MdObjectAttributeCommentCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.MdObjectAttributeCommentNotExistCheck">

View File

@ -0,0 +1,214 @@
/*******************************************************************************
* Copyright (C) 2023, 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
* Vadim Goncharov - issue #133
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.BASIC_FEATURE__MULTI_LINE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.BASIC_FEATURE__TYPE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG_ATTRIBUTE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT_ATTRIBUTE;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import com._1c.g5.v8.dt.mcore.StringQualifiers;
import com._1c.g5.v8.dt.mcore.TypeDescription;
import com._1c.g5.v8.dt.mcore.TypeItem;
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
import com._1c.g5.v8.dt.metadata.mdclass.BasicFeature;
import com._1c.g5.v8.dt.metadata.mdclass.CatalogAttribute;
import com._1c.g5.v8.dt.metadata.mdclass.DefinedType;
import com._1c.g5.v8.dt.metadata.mdclass.DocumentAttribute;
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.BasicCheck;
import com.e1c.g5.v8.dt.check.components.TopObjectFilterExtension;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
/**
* Check attributes of catalogs and documents that named "Comment".
* The attribute must be of the unlimited string type. Multiline edit must be enabled.
*
* @author Vadim Goncharov
*/
public class MdObjectAttributeCommentCheck
extends BasicCheck
{
private static final String CHECK_ID = "md-object-attribute-comment-incorrect-type"; //$NON-NLS-1$
public static final String PARAM_CHECK_DOCUMENTS = "checkDocuments"; //$NON-NLS-1$
public static final String PARAM_CHECK_CATALOGS = "checkCatalogs"; //$NON-NLS-1$
public static final String PARAM_ATTRIBUTES_LIST = "attributesList"; //$NON-NLS-1$
public static final String DEFAULT_CHECK_DOCUMENTS = Boolean.toString(true);
public static final String DEFAULT_CHECK_CATALOGS = Boolean.toString(false);
private static final Set<String> COMMENT_ATTRIBUTES_LIST = Set.of("Комментарий", //$NON-NLS-1$
"Comment"); //$NON-NLS-1$
private static final String DELIMITER = ","; //$NON-NLS-1$
public static final String DEFAULT_ATTRIBUTES_LIST = String.join(DELIMITER, COMMENT_ATTRIBUTES_LIST);
private static final String DEFAULT_CHECK_MESSAGE = Messages.MdObjectAttributeCommentCheck_Default_check_message;
public MdObjectAttributeCommentCheck()
{
super();
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.MdObjectAttributeCommentCheck_title)
.description(Messages.MdObjectAttributeCommentCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.UI_STYLE)
.extension(new StandardCheckExtension(531, getCheckId(), CorePlugin.PLUGIN_ID))
.extension(new SkipAdoptedInExtensionMdObjectExtension())
.extension(new TopObjectFilterExtension())
.parameter(PARAM_ATTRIBUTES_LIST, String.class, DEFAULT_ATTRIBUTES_LIST,
Messages.MdObjectAttributeCommentCheck_Attribute_list);
builder.topObject(CATALOG)
.containment(CATALOG_ATTRIBUTE)
.features(BASIC_FEATURE__TYPE, BASIC_FEATURE__MULTI_LINE)
.parameter(PARAM_CHECK_CATALOGS, Boolean.class, DEFAULT_CHECK_CATALOGS,
Messages.MdObjectAttributeCommentCheck_Check_catalogs_param);
builder.topObject(DOCUMENT)
.containment(DOCUMENT_ATTRIBUTE)
.features(BASIC_FEATURE__TYPE, BASIC_FEATURE__MULTI_LINE)
.parameter(PARAM_CHECK_DOCUMENTS, Boolean.class, DEFAULT_CHECK_DOCUMENTS,
Messages.MdObjectAttributeCommentCheck_Check_documents_param);
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
boolean checkCatalogs = parameters.getBoolean(PARAM_CHECK_CATALOGS);
boolean checkDocuments = parameters.getBoolean(PARAM_CHECK_DOCUMENTS);
Set<String> attributeList = getListOfAttributes(parameters);
BasicFeature attribute = (BasicFeature)object;
String attributeName = attribute.getName();
if (!attributeList.contains(attributeName))
{
return;
}
if (!monitor.isCanceled() && checkDocuments && isDocumentAttribute(object))
{
checkAttribute(attribute, resultAceptor);
}
if (!monitor.isCanceled() && checkCatalogs && isCatalogAttribute(object))
{
checkAttribute(attribute, resultAceptor);
}
}
private void checkAttribute(BasicFeature attribute, ResultAcceptor resultAceptor)
{
checkAttritubeType(attribute, resultAceptor);
checkAttributeIsMultiline(attribute, resultAceptor);
}
private void checkAttritubeType(BasicFeature attribute, ResultAcceptor resultAceptor)
{
TypeDescription typeDesc = attribute.getType();
if (McoreUtil.isCompoundType(typeDesc))
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
return;
}
TypeItem item = typeDesc.getTypes().get(0);
if (IEObjectTypeNames.DEFINED_TYPE.equals(McoreUtil.getTypeCategory(item)))
{
EObject definedType = item.eContainer();
while (definedType != null && !(definedType instanceof DefinedType))
{
definedType = definedType.eContainer();
}
if (definedType instanceof DefinedType)
{
typeDesc = ((DefinedType)definedType).getType();
}
}
StringQualifiers qualifiers = typeDesc.getStringQualifiers();
if (qualifiers == null)
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
return;
}
if (qualifiers.getLength() != 0)
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
}
}
private void checkAttributeIsMultiline(BasicFeature attribute, ResultAcceptor resultAceptor)
{
if (!attribute.isMultiLine())
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__MULTI_LINE);
}
}
private Set<String> getListOfAttributes(ICheckParameters parameters)
{
Set<String> attributes = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
String paramAttributesString = parameters.getString(PARAM_ATTRIBUTES_LIST);
Set<String> paramsAttributes = Set.of(paramAttributesString.replace(" ", "").split(DELIMITER)); //$NON-NLS-1$ //$NON-NLS-2$
attributes.addAll(paramsAttributes);
return attributes;
}
private boolean isCatalogAttribute(Object object)
{
return object instanceof CatalogAttribute;
}
private boolean isDocumentAttribute(Object object)
{
return object instanceof DocumentAttribute;
}
}

View File

@ -27,6 +27,12 @@ final class Messages
public static String DbObjectRefNonRefTypesCheck_Description;
public static String DbObjectRefNonRefTypesCheck_Ref_and_other;
public static String DbObjectRefNonRefTypesCheck_Title;
public static String MdObjectAttributeCommentCheck_Attribute_list;
public static String MdObjectAttributeCommentCheck_Check_catalogs_param;
public static String MdObjectAttributeCommentCheck_Check_documents_param;
public static String MdObjectAttributeCommentCheck_Default_check_message;
public static String MdObjectAttributeCommentCheck_description;
public static String MdObjectAttributeCommentCheck_title;
public static String MdObjectAttributeCommentNotExist_description;
public static String MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist;
public static String MdObjectAttributeCommentNotExist_Param_Check_Catalogs;

View File

@ -71,6 +71,18 @@ MdListObjectPresentationCheck_decription = Neither Object presentation nor List
MdListObjectPresentationCheck_title = Neither Object presentation nor List presentation is not filled
MdObjectAttributeCommentCheck_Attribute_list=Attributes list
MdObjectAttributeCommentCheck_Check_catalogs_param=Check Catalogs
MdObjectAttributeCommentCheck_Check_documents_param=Check Documents
MdObjectAttributeCommentCheck_Default_check_message=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_description=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_title=The attribute "Comment" has an invalid type
MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist = Md Object attribute "Comment" does not exist
MdObjectAttributeCommentNotExist_Param_Attribute_name_list = Attribute name list

View File

@ -72,6 +72,18 @@ MdListObjectPresentationCheck_decription = Не заполнено ни пред
MdListObjectPresentationCheck_title = Не заполнено ни представление объекта, ни представление списка
MdObjectAttributeCommentCheck_Attribute_list = Список реквизитов
MdObjectAttributeCommentCheck_Check_catalogs_param = Проверять справочники
MdObjectAttributeCommentCheck_Check_documents_param = Проверять документы
MdObjectAttributeCommentCheck_Default_check_message = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentCheck_description = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentCheck_title = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist = Объект метаданных не имеет реквизит "Комментарий"
MdObjectAttributeCommentNotExist_Param_Attribute_name_list = Список имен реквизита

View File

@ -0,0 +1,58 @@
package com.e1c.v8codestyle.md.check.itests;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import org.junit.Test;
import com._1c.g5.v8.dt.core.platform.IDtProject;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
import com.e1c.v8codestyle.md.check.MdObjectAttributeCommentCheck;
/**
* Tests for {@link MdObjectAttributeCommentCheck} check
*
* @author Vadim Goncharov
*
*/
public class MdObjectAttributeCommentCheckTest
extends CheckTestBase
{
private static final String CHECK_ID = "md-object-attribute-comment-incorrect-type"; //$NON-NLS-1$
private static final String PROJECT_NAME = "MdObjectAttributeComment"; //$NON-NLS-1$
/**
* Test that md object have attribute Comment of correct type.
*
* @throws Exception the exception
*/
@Test
public void testMdObjectAttributeComment() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
long id = getTopObjectIdByFqn("Document.TestDocument1", dtProject);
Marker marker = getFirstNestedMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
id = getTopObjectIdByFqn("Document.TestDocument2", dtProject);
marker = getFirstNestedMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
id = getTopObjectIdByFqn("Document.TestDocument3", dtProject);
marker = getFirstNestedMarker(CHECK_ID, id, dtProject);
assertNull(marker);
id = getTopObjectIdByFqn("Catalog.TestCatalog1", dtProject);
marker = getFirstNestedMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
id = getTopObjectIdByFqn("Catalog.TestCatalog2", dtProject);
marker = getFirstNestedMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MdObjectAttributeComment</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,10 @@
{
"version": 1,
"settings": {
"md-object-attribute-comment-incorrect-type": {
"properties": {
"checkCatalogs": "true"
}
}
}
}

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
topObjects=true

View File

@ -0,0 +1,3 @@
addModuleStrictTypesAnnotation=false
createModuleStructure=false
eclipse.preferences.version=1

View File

@ -0,0 +1,3 @@
commonChecks=true
eclipse.preferences.version=1
standardChecks=true

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,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="821ea892-8300-41c4-827b-4ac2999f9266">
<producedTypes>
<objectType typeId="61c3e9ee-f4c6-405f-95a1-591d617cfbd9" valueTypeId="14a690ff-bc1f-42ab-b996-2a49fe1b9783"/>
<refType typeId="4ff0a620-4087-4247-8691-57b5e9670d87" valueTypeId="2c9b2c20-0a6b-4751-b81a-1e7d430b6b70"/>
<selectionType typeId="b470752f-e436-4db2-8cea-b93e36d9c3da" valueTypeId="902a98cf-cecd-4d2c-99d3-59b7c39034d7"/>
<listType typeId="fbef7146-8dd2-4067-ba7e-8d2da92c1818" valueTypeId="6f0ed1f3-a7e4-4c3a-9092-eab0f845d06b"/>
<managerType typeId="87d2551d-aace-480e-933f-a982896141af" valueTypeId="48a9287b-9047-45d1-96b4-fb99ed813dce"/>
</producedTypes>
<name>TestCatalog1</name>
<synonym>
<key>en</key>
<value>Test catalog1</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.TestCatalog1.StandardAttribute.Code</inputByString>
<inputByString>Catalog.TestCatalog1.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>
<attributes uuid="2c2b3973-0b9b-4e90-a765-26b86a9a3eb4">
<name>Comment</name>
<synonym>
<key>en</key>
<value>Comment</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>10</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
</mdclass:Catalog>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="03e1d978-57fc-4bc9-b7d7-2f1c41b2b9dd">
<producedTypes>
<objectType typeId="60aefbdf-7113-43db-bd1b-14896f7cc0d9" valueTypeId="d72aba07-1885-4abd-9c3d-a15ef939f666"/>
<refType typeId="ba556745-06f4-4934-9733-3c67f8c0c605" valueTypeId="1f9217f8-9630-41d5-b95c-2b72935ebc1e"/>
<selectionType typeId="357d7af5-ed9d-4221-b2d5-d07de669de6a" valueTypeId="45b23e05-6472-44ee-af7d-b36af0d0f038"/>
<listType typeId="a4038321-48df-4d7f-a431-ac66a9c688b7" valueTypeId="5d1c7bcb-4acb-4640-a99a-97aacaa3c77d"/>
<managerType typeId="06b70ad8-6591-4ec6-a3c2-6d4a8e52704b" valueTypeId="46c0136d-aaaa-4156-9217-ccb301b99f69"/>
</producedTypes>
<name>TestCatalog2</name>
<synonym>
<key>en</key>
<value>Test catalog2</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.TestCatalog2.StandardAttribute.Code</inputByString>
<inputByString>Catalog.TestCatalog2.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>
<attributes uuid="a38192fc-7b44-4e7e-8e30-5cb2c3f76060">
<name>Comment</name>
<synonym>
<key>en</key>
<value>Comment</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<multiLine>true</multiLine>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
</mdclass:Catalog>

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="035707ec-2c57-40a7-b602-4f55b064173e">
<name>MdObjectAttributeComment</name>
<synonym>
<key>en</key>
<value>Md object attribute comment</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="deaf30a2-752a-4118-832d-4e467902607a"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="8beaad50-ecd5-4679-b318-058d055dd752"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="8758847b-6769-4cd8-88dd-138a51028cca"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="fd0a210d-d159-46eb-89ce-84b7d6274e3d"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="118c46b4-f3de-47bc-85ea-1cbe6ebb024b"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="1a4f77a4-b32f-46cd-949e-db6dffef1096"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="8845d1e4-04ab-4255-87cd-530566565ae5"/>
<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="3c219e45-aa35-44c0-b186-fc0d7b44e98c">
<name>English</name>
<synonym>
<key>en</key>
<value>English</value>
</synonym>
<languageCode>en</languageCode>
</languages>
<catalogs>Catalog.TestCatalog1</catalogs>
<catalogs>Catalog.TestCatalog2</catalogs>
<documents>Document.TestDocument1</documents>
<documents>Document.TestDocument2</documents>
<documents>Document.TestDocument3</documents>
</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"/>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5e496d3d-d7f4-45b5-80bc-167592422c71">
<producedTypes>
<objectType typeId="96effc52-36a2-4f11-94a7-6a3f31baf159" valueTypeId="883453c3-ce85-4782-b1fb-63189f481476"/>
<refType typeId="3e0ff7de-5ab2-4c92-b045-27205a455cdc" valueTypeId="3f01d6e8-65e1-4429-ba15-82b1ac374365"/>
<selectionType typeId="e0bee0e3-7834-4499-bc11-fa09b09063e0" valueTypeId="1e1c5018-9f9d-4570-806f-8f50f3d6687f"/>
<listType typeId="c9126348-c482-4018-8c48-c58db232b7df" valueTypeId="f3895c1e-35d7-4ffd-9770-5979f14126d2"/>
<managerType typeId="7b956506-5814-448e-9e76-8ab1616ab5b8" valueTypeId="f4ab6f97-c13b-457d-9e39-44d0e91bc7a5"/>
</producedTypes>
<name>TestDocument1</name>
<synonym>
<key>en</key>
<value>Test document1</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Document.TestDocument1.StandardAttribute.Number</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<numberType>String</numberType>
<numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
<attributes uuid="e247de52-3b2a-4ad6-9a29-3e2184f394ec">
<name>Comment</name>
<synonym>
<key>en</key>
<value>Comment</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>20</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
</mdclass:Document>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1c356b61-dc98-4de4-baea-2524e21ccf9c">
<producedTypes>
<objectType typeId="b96e8735-d159-40d2-8b34-8641c2288039" valueTypeId="6f78b9e1-8f52-4732-b25b-0f38398a6350"/>
<refType typeId="29d35e71-3b62-4f25-ab3e-89c33c204bef" valueTypeId="1f21f92f-89b8-46b0-b31c-1600de8dedb3"/>
<selectionType typeId="d82f0fd5-326f-40f2-b3db-38113fabf4f4" valueTypeId="aace5481-c1fb-45eb-930e-15d3ef39dd38"/>
<listType typeId="e28238e4-1912-4f63-805d-4ba9f9ad94eb" valueTypeId="df5f3e44-5a2a-4e2c-8a8b-2e480fe21662"/>
<managerType typeId="2c1f44a9-3f14-4c66-a130-932003fda8de" valueTypeId="10c6fd95-f554-4f18-8b47-65568f1faecf"/>
</producedTypes>
<name>TestDocument2</name>
<synonym>
<key>en</key>
<value>Test document2</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Document.TestDocument2.StandardAttribute.Number</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<numberType>String</numberType>
<numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
<attributes uuid="c94002ab-5db9-49c6-a8ec-3218fc1c361e">
<name>Comment</name>
<synonym>
<key>en</key>
<value>Comment</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
</mdclass:Document>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e01f0372-047b-49d1-af2b-b1ebd33675bd">
<producedTypes>
<objectType typeId="3ad8323f-1c0c-40ba-b7f6-67b33e0e9de9" valueTypeId="48411148-fb12-42dd-85de-b22f9f448639"/>
<refType typeId="8cb7cd75-98fd-433f-853a-d64e7f5172f1" valueTypeId="1b1a5245-51a5-4861-a804-874825de2816"/>
<selectionType typeId="b00fee0b-3b1e-4053-9bd0-d6d487fbbfb8" valueTypeId="3294eac9-f921-42ad-a55f-ac335f57c19e"/>
<listType typeId="d4955504-d21d-4f34-bbf8-9f0da0594577" valueTypeId="9dbecbfd-5a4d-4e7d-bdbe-dec9f8a1c410"/>
<managerType typeId="bddd27c6-1304-4233-b11f-8a86f35de4e2" valueTypeId="09bdf453-8e3b-4ce8-a4d0-f2d819971850"/>
</producedTypes>
<name>TestDocument3</name>
<synonym>
<key>en</key>
<value>Test document3</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Document.TestDocument3.StandardAttribute.Number</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<numberType>String</numberType>
<numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
<attributes uuid="cd50ccb5-6c96-4111-a907-8e9eed8cc3d8">
<name>Comment</name>
<synonym>
<key>en</key>
<value>Comment</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<multiLine>true</multiLine>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
</mdclass:Document>