1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2024-12-01 02:32:18 +02:00

#119 Не задан синоним стандартного реквизита "Владелец" или "Родитель" (#854)

This commit is contained in:
Bombin Valentin 2021-11-01 23:32:54 +03:00 committed by GitHub
parent 9c51b2beae
commit 8fa731f0b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 663 additions and 0 deletions

View File

@ -25,6 +25,7 @@
- Клиентский общий модуль должен оканчиваться на суффикс Клиент
- Не заполнено ни представление объекта, ни представление списка
- У предопределенного регламентного задания не должно быть заполнено наименование
- У стандартного свойства 'Владелец' или 'Родитель' должен быть заполнен синоним
#### Формы

View File

@ -0,0 +1,16 @@
# Synonym of the 'Owner' or 'Parent' standard attribute is not specified
1.5. For standard attributes Parent and Owner, always set synonyms different from their default synonyms. For example, a configuration contains the Files catalog with the Owner standard attribute of the CatalogRef.FilesFolders type.
Do not use
* The default synonym Owner of the Owner standard attribute.
Correct example:
* Make sure the synonym reflects its purpose: "Folder" or "File directory".
## See
[Name, synonym, comment](https://support.1ci.com/hc/en-us/articles/360011120439-Name-synonym-comment)

View File

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

View File

@ -54,6 +54,10 @@
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.MdScheduledJobDescriptionCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.MdStandardAttributeSynonymEmpty">
</check>
</extension>
</plugin>

View File

@ -0,0 +1,159 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Bombin Valentin - issue #119
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.BASIC_DB_OBJECT__STANDARD_ATTRIBUTES;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.STANDARD_ATTRIBUTE__SYNONYM;
import org.eclipse.core.runtime.IProgressMonitor;
import com._1c.g5.v8.dt.common.StringUtils;
import com._1c.g5.v8.dt.core.platform.IV8Project;
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
import com._1c.g5.v8.dt.metadata.mdclass.Catalog;
import com._1c.g5.v8.dt.metadata.mdclass.MdObject;
import com._1c.g5.v8.dt.metadata.mdclass.ObjectBelonging;
import com._1c.g5.v8.dt.metadata.mdclass.StandardAttribute;
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.google.inject.Inject;
/**
* The check the {@link MdObject} has specified synonyms for owner and parent
* for default language of the project.
*
* @author Bombin Valentin
*
*/
public class MdStandardAttributeSynonymEmpty
extends BasicCheck
{
private static final String CHECK_ID = "md-standard-attribute-synonym-empty"; //$NON-NLS-1$
private static final String OWNER_NAME = "Owner"; //$NON-NLS-1$
private static final String PARENT_NAME = "Parent"; //$NON-NLS-1$
private final IV8ProjectManager v8ProjectManager;
@Inject
public MdStandardAttributeSynonymEmpty(IV8ProjectManager v8ProjectManager)
{
super();
this.v8ProjectManager = v8ProjectManager;
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.MdOwnerAttributeSynonymEmpty_Title)
.description(Messages.MdOwnerAttributeSynonymEmpty_Description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.UI_STYLE)
.extension(new TopObjectFilterExtension())
.topObject(CATALOG)
.checkTop()
.features(BASIC_DB_OBJECT__STANDARD_ATTRIBUTES, STANDARD_ATTRIBUTE__SYNONYM);
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
MdObject mdObject = (MdObject)object;
if (mdObject.getObjectBelonging() != ObjectBelonging.NATIVE)
{
return;
}
IV8Project project = v8ProjectManager.getProject(mdObject);
String languageCode = project.getDefaultLanguage().getLanguageCode();
if (monitor.isCanceled())
{
return;
}
checkParent((Catalog)object, resultAceptor, languageCode);
checkOwner((Catalog)object, resultAceptor, languageCode);
}
private boolean hasAnyOwner(Catalog catalog)
{
return !catalog.getOwners().isEmpty();
}
private boolean hasParent(Catalog catalog)
{
return catalog.isHierarchical();
}
private StandardAttribute getStandardAttributeByName(Catalog catalog, String attributeName)
{
for (StandardAttribute attribute : catalog.getStandardAttributes())
{
if (attribute.getName().compareTo(attributeName) == 0)
{
return attribute;
}
}
return null;
}
private String getSynonym(StandardAttribute attribute, String languageCode)
{
return attribute.getSynonym().get(languageCode);
}
private void checkParent(Catalog catalog, ResultAcceptor resultAceptor, String languageCode)
{
if (!hasParent(catalog))
{
return;
}
StandardAttribute attribute = getStandardAttributeByName(catalog, PARENT_NAME);
if (attribute == null || StringUtils.isBlank(getSynonym(attribute, languageCode)))
{
resultAceptor.addIssue(Messages.MdOwnerAttributeSynonymEmpty_ErrorMessage,
BASIC_DB_OBJECT__STANDARD_ATTRIBUTES);
}
}
private void checkOwner(Catalog catalog, ResultAcceptor resultAceptor, String languageCode)
{
if (!hasAnyOwner(catalog))
{
return;
}
StandardAttribute attribute = getStandardAttributeByName(catalog, OWNER_NAME);
if (attribute == null || StringUtils.isBlank(getSynonym(attribute, languageCode)))
{
resultAceptor.addIssue(Messages.MdOwnerAttributeSynonymEmpty_ErrorMessage,
BASIC_DB_OBJECT__STANDARD_ATTRIBUTES);
}
}
}

View File

@ -48,6 +48,9 @@ final class Messages
public static String MdListObjectPresentationCheck_decription;
public static String MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled;
public static String MdListObjectPresentationCheck_title;
public static String MdOwnerAttributeSynonymEmpty_Title;
public static String MdOwnerAttributeSynonymEmpty_Description;
public static String MdOwnerAttributeSynonymEmpty_ErrorMessage;
public static String MdScheduledJobDescriptionCheck_title;
public static String MdScheduledJobDescriptionCheck_description;
public static String MdScheduledJobDescriptionCheck_message;

View File

@ -45,6 +45,12 @@ MdObjectNameLength_title = Metadata object name length
MdObjectNameWithoutSuffix_Name_suffix_list_title = Name suffix list, comma separated
MdOwnerAttributeSynonymEmpty_Description = Synonym of the 'Owner' or 'Parent' standard attribute is not specified
MdOwnerAttributeSynonymEmpty_ErrorMessage = Synonym of the 'Owner' or 'Parent' standard attribute is not specified
MdOwnerAttributeSynonymEmpty_Title = Synonym of the 'Owner' or 'Parent' standard attribute is not specified
MdScheduledJobDescriptionCheck_description = The description of the predefine sheduled job is set
MdScheduledJobDescriptionCheck_message = The description of the predefine sheduled job is set

View File

@ -46,6 +46,12 @@ MdObjectNameLength_title = Длина имени объекта метаданн
MdObjectNameWithoutSuffix_Name_suffix_list_title = Список суффиксов имени, разделенный запятой
MdOwnerAttributeSynonymEmpty_Description = Не задан синоним у стандартного свойства 'Владелец' или 'Родитель'
MdOwnerAttributeSynonymEmpty_ErrorMessage = Не задан синоним у стандартного свойства 'Владелец' или 'Родитель'
MdOwnerAttributeSynonymEmpty_Title = Не задан синоним у стандартного свойства 'Владелец' или 'Родитель'
MdScheduledJobDescriptionCheck_description = Задано наименование предопределенного регламентного задания
MdScheduledJobDescriptionCheck_message = Задано наименование предопределенного регламентного задания

View File

@ -0,0 +1,92 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Bombin Valentin - issue #119
*******************************************************************************/
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.MdStandardAttributeSynonymEmpty;
/**
* The test for class {@link MdStandardAttributeSynonymEmpty}.
*
* @author Bombin Valentin
*/
public class MdStandardAttributeSynonymEmptyTest
extends CheckTestBase
{
private static final String CHECK_ID = "md-standard-attribute-synonym-empty"; //$NON-NLS-1$
private static final String PROJECT_NAME = "MdStandardAttributeSynonymEmpty";
/**
* Test MD-Object has synonym property for attribute parent or owner
*
* @throws Exception the exception
*/
@Test
public void testPositiveTest() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
long id = getTopObjectIdByFqn("Catalog.PositiveParentTest", dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
id = getTopObjectIdByFqn("Catalog.PositiveOwnerTest", dtProject);
marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testNegativeParent() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
long id = getTopObjectIdByFqn("Catalog.NegativeOwnerTest", dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
id = getTopObjectIdByFqn("Catalog.NegativeOwnerTestWithComment", dtProject);
marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testNegativeOwner() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
long id = getTopObjectIdByFqn("Catalog.NegativeParentTest", dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
id = getTopObjectIdByFqn("Catalog.NegativeParentTestWithComment", dtProject);
marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d514ac30-f9e9-4f34-9a58-1ce7fe15c81f">
<producedTypes>
<objectType typeId="731d48a6-bd91-4732-8378-d3b180468bf1" valueTypeId="514ca0b8-1b19-40e7-8341-f97ca85ced74"/>
<refType typeId="145f9fd7-4384-4ef7-bade-2ff6f15d4a08" valueTypeId="a1321480-9fe2-4fb5-ad7b-28cb754802c6"/>
<selectionType typeId="cc4373fb-b5b2-43d2-a907-e282316bd07a" valueTypeId="c1dd4de6-d924-4e62-880f-aedeb909a3bd"/>
<listType typeId="3a68875b-f061-4f3f-abea-51fb1792c0c6" valueTypeId="a05ba9a9-5cfa-4b24-9f1d-050ecc9c43a6"/>
<managerType typeId="d3fcac36-af9a-46e1-89ff-b744c11416d2" valueTypeId="d909a819-a65f-4e07-8842-a9ead838e199"/>
</producedTypes>
<name>NegativeOwnerTest</name>
<synonym>
<key>en</key>
<value>Negative owner test</value>
</synonym>
<comment>Есть владелец, но нет синонима у стандартного реквизита Владелец</comment>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.NegativeOwnerTest.StandardAttribute.Code</inputByString>
<inputByString>Catalog.NegativeOwnerTest.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Owner</name>
<comment></comment>
<fillFromFillingValue>true</fillFromFillingValue>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Parent</name>
<synonym>
<key>en</key>
<value>This is parrent</value>
</synonym>
<comment></comment>
<fillFromFillingValue>true</fillFromFillingValue>
<fullTextSearch>Use</fullTextSearch>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>en</key>
<value>Negative owner test</value>
</objectPresentation>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<owners>Catalog.PositiveParentTest</owners>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="975db09f-e93e-4cbe-a54b-fe0fd2c970be">
<producedTypes>
<objectType typeId="8b6aa8f7-688b-44cf-84ee-b616b1add67f" valueTypeId="56ad87b5-213e-4827-9fce-deb763b3bbe1"/>
<refType typeId="2d8ec45f-b0e8-4ae8-868b-69a2791033d3" valueTypeId="772844a9-7c9a-4791-997c-60269bba8bf4"/>
<selectionType typeId="14a058fc-88b8-4e47-bc8a-ef950d598c04" valueTypeId="16c2472b-ca03-46d6-9846-c94f9cea4b13"/>
<listType typeId="7a47d9b4-cbba-4d1a-81c7-0acaa27d8930" valueTypeId="133bb7d4-582d-47cc-94b6-fc0d3aada032"/>
<managerType typeId="2568f78c-e7d7-437a-8b76-707e35f64164" valueTypeId="be2decb8-2ce9-4cf3-9e3e-6897cf66404c"/>
</producedTypes>
<name>NegativeOwnerTestWithComment</name>
<synonym>
<key>en</key>
<value>Negative owner test with comment</value>
</synonym>
<comment>Есть владелец, есть комментарий у свойства &quot;Владелец&quot;, но нет синонима</comment>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.NegativeOwnerTestWithComment.StandardAttribute.Code</inputByString>
<inputByString>Catalog.NegativeOwnerTestWithComment.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Owner</name>
<comment>Comment</comment>
<fillFromFillingValue>true</fillFromFillingValue>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>en</key>
<value>Negative owner test with comment</value>
</objectPresentation>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<owners>Catalog.PositiveParentTest</owners>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f07f2e1b-8932-4c2e-9c76-bf37494ca068">
<producedTypes>
<objectType typeId="0ac55597-f870-4db9-b8bb-140ae87ba58c" valueTypeId="a98d91f3-5d17-4393-922e-31e8a0222bc0"/>
<refType typeId="5d3bc8d1-846c-44b1-9a1f-62aa57bc9489" valueTypeId="0cdb0eb5-7037-4053-acbd-ad4fb43e8df3"/>
<selectionType typeId="8fc220b6-c6a4-4e21-b4c4-f41d180cb9ab" valueTypeId="92c05ccb-4815-49da-a6ba-aa2711128559"/>
<listType typeId="190305b9-d579-47b4-97f9-ad8eea79714a" valueTypeId="fdfa31ba-1d4a-4b27-bdb4-55fd890fe21d"/>
<managerType typeId="228ab753-fe0a-4255-a1d4-c01e490b6b4d" valueTypeId="d612b9aa-b596-4c0b-a0de-4e9de2342d6b"/>
</producedTypes>
<name>NegativeParentTest</name>
<synonym>
<key>en</key>
<value>Negative parent test</value>
</synonym>
<comment>Есть признак иерархии, но у свойства &quot;Родитель&quot; нет синонима</comment>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.NegativeParentTest.StandardAttribute.Code</inputByString>
<inputByString>Catalog.NegativeParentTest.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Parent</name>
<comment>Простой комметарий</comment>
<fillFromFillingValue>true</fillFromFillingValue>
<fullTextSearch>Use</fullTextSearch>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>en</key>
<value>Negative parent test</value>
</objectPresentation>
<hierarchical>true</hierarchical>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d677f499-23ef-4e84-b637-0843eb4e9ae0">
<producedTypes>
<objectType typeId="358dc8ca-6fb0-4c32-b859-9d84a82350f8" valueTypeId="daa0cc50-d414-46e3-b7d3-7437048b5dd8"/>
<refType typeId="b8628a2a-fcfd-440b-99ec-78d14f373930" valueTypeId="eb613d86-bd2a-4133-b037-fe6f5d101539"/>
<selectionType typeId="0f5441ed-2191-49b5-8bc0-5c321be956eb" valueTypeId="1b35ac13-f90d-4b60-b2d8-19464d39082c"/>
<listType typeId="0f6eca1b-2b0e-42f8-b30d-834eb39f6a70" valueTypeId="42640379-7900-4363-96ad-0d138d713572"/>
<managerType typeId="3d53bab7-20fe-4a96-b48a-cee13f06719f" valueTypeId="e8d5b2a7-678b-4dc4-bb38-addc080f1397"/>
</producedTypes>
<name>NegativeParentTestWithComment</name>
<synonym>
<key>en</key>
<value>Negative parent test with comment</value>
</synonym>
<comment>Есть признак иерархии, у свойства &quot;Родитель&quot; есть комментарий, но нет синонима</comment>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.NegativeParentTestWithComment.StandardAttribute.Code</inputByString>
<inputByString>Catalog.NegativeParentTestWithComment.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>en</key>
<value>Negative parent test with comment</value>
</objectPresentation>
<hierarchical>true</hierarchical>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f9b07c72-38b3-438c-954e-c46ab1585762">
<producedTypes>
<objectType typeId="b8820d2f-6a5f-4b90-81e6-06964ae63af5" valueTypeId="4bb10aa3-8ffa-4c6f-81eb-dae5f5708615"/>
<refType typeId="0c6f24a2-8823-4001-9f04-e1c658bcf474" valueTypeId="8c7abfaf-3fb3-4adb-9627-45f03c833020"/>
<selectionType typeId="d640ed2c-af9f-4579-8c65-be893a6336ea" valueTypeId="6c944550-1eaa-48e9-ac85-39fbae8b8457"/>
<listType typeId="9f89bf06-2ad3-4cb3-9fb1-d9c1e26d5036" valueTypeId="a565ecc8-60cf-41a2-8bfa-3991e0dd4458"/>
<managerType typeId="a41a764d-6c34-402b-a5fe-092bf52bb42b" valueTypeId="5d690789-09e2-4ebd-97c1-a5c52219ba32"/>
</producedTypes>
<name>PositiveOwnerTest</name>
<synonym>
<key>en</key>
<value>Positive owner test</value>
</synonym>
<comment>Корректно заполнено свойство Владелец</comment>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.PositiveOwnerTest.StandardAttribute.Code</inputByString>
<inputByString>Catalog.PositiveOwnerTest.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Owner</name>
<synonym>
<key>en</key>
<value>Good synonym</value>
</synonym>
<fillFromFillingValue>true</fillFromFillingValue>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>en</key>
<value>Positive owner test</value>
</objectPresentation>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<owners>Catalog.PositiveParentTest</owners>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e11efc84-1bf1-474f-8243-094b1e7e9d73">
<producedTypes>
<objectType typeId="cb053a13-267b-4721-89d4-bf1c39f7dc68" valueTypeId="c20efe3f-bd85-48f3-a6e2-c92a9f2d3516"/>
<refType typeId="9501e1e8-3510-4131-a088-1826577b1ac8" valueTypeId="78dee52c-cb11-4024-8547-bacd9f16fbce"/>
<selectionType typeId="f7d4e1af-2bb5-42e6-b7e4-120eb00150d5" valueTypeId="35b41bd1-8b69-417d-a4e2-0c611c5ba20e"/>
<listType typeId="4c5d2328-8c79-4e87-b8bf-bc078d405b35" valueTypeId="98ca7cff-2131-4e34-a9e1-85b812bf89e1"/>
<managerType typeId="8e1a6219-c018-48ce-86a9-1b72ce13fd10" valueTypeId="fb8e91b7-ef5c-448b-ba8c-2ca77962103d"/>
</producedTypes>
<name>PositiveParentTest</name>
<synonym>
<key>en</key>
<value>Positive parent test</value>
</synonym>
<comment>Корректно заполнено свойство &quot;Родитель&quot;</comment>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.PositiveParentTest.StandardAttribute.Code</inputByString>
<inputByString>Catalog.PositiveParentTest.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Parent</name>
<synonym>
<key>en</key>
<value>Simple text</value>
</synonym>
<fillFromFillingValue>true</fillFromFillingValue>
<fullTextSearch>Use</fullTextSearch>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>en</key>
<value>Positive parent test</value>
</objectPresentation>
<hierarchical>true</hierarchical>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

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

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="421f1251-5e78-4a48-8cd9-5a0e45d75a8f">
<name>MdPropertySynonymInNotSetForStandartAttributeOwner</name>
<synonym>
<key>en</key>
<value>Md property synonym in not set for standart attribute owner</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="f25666b7-4548-4dc1-822f-26bb21ef44c5"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="6058e7a0-0cc2-4453-953a-29cbbccd40ae"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="c3626634-0484-4100-8c59-1ea9c6915461"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="96816197-b896-42a7-9b26-c31b24628fda"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="3b4745b0-7bfd-4d09-8321-f7b2def70a1b"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="2ef61fd5-8881-40a1-a4ab-1fc53b68a016"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="8061261a-2ca1-4a18-95c5-746bc46fc369"/>
<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="65c3dd05-6b95-40ac-9887-c14325594d93">
<name>English</name>
<synonym>
<key>en</key>
<value>English</value>
</synonym>
<languageCode>en</languageCode>
</languages>
<catalogs>Catalog.NegativeOwnerTest</catalogs>
<catalogs>Catalog.NegativeOwnerTestWithComment</catalogs>
<catalogs>Catalog.NegativeParentTest</catalogs>
<catalogs>Catalog.NegativeParentTestWithComment</catalogs>
<catalogs>Catalog.PositiveOwnerTest</catalogs>
<catalogs>Catalog.PositiveParentTest</catalogs>
</mdclass:Configuration>

View File

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