1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2024-11-28 17:41:06 +02:00

Merge remote-tracking branch 'origin/master' into edt-2023-1

This commit is contained in:
Dmitriy Marmyshev 2023-04-17 23:32:58 -07:00
commit 4bfcb07ecb
50 changed files with 2094 additions and 1 deletions

View File

@ -20,6 +20,7 @@
#### Формы
- Использована ролевая настройка видимости, редактирования, использования для элемента формы
- Проверка на использование условного оформления в динамеческих списках
#### Код модулей
@ -34,6 +35,7 @@
- Обращение к несуществующему параметру формы
- Необязательный параметр процедуры/функции стоит перед обязательным
- Обращение к опциональному параметру формы
- Функция "РольДоступна" ссылается на несуществующие роли
#### Запросы

View File

@ -34,6 +34,7 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com._1c.g5.v8.dt.bsl.util;version="[8.0.0,9.0.0)",
com._1c.g5.v8.dt.bsl.validation;version="[17.0.0,18.0.0)",
com._1c.g5.v8.dt.common;version="[6.0.0,7.0.0)",
com._1c.g5.v8.dt.core.naming;version="[7.0.0,8.0.0)",
com._1c.g5.v8.dt.core.platform;version="[11.0.0,12.0.0)",
com._1c.g5.v8.dt.form.model;version="[11.0.0,12.0.0)",
com._1c.g5.v8.dt.lcore.util;version="[2.0.0,3.0.0)",

View File

@ -0,0 +1,11 @@
# Referring to a non-existent role
In the parameter of the function "IsInRole" must existing role to be specified.
## Noncompliant Code Example
## Compliant Solution
## See

View File

@ -0,0 +1,11 @@
# Обращение к несуществующей роли
В параметре функции "РольДоступна" должна быть указана существующая роль.
## Неправильно
## Правильно
## См.

View File

@ -347,6 +347,10 @@
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.DeprecatedProcedureOutsideDeprecatedRegionCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.IsInRoleMethodRoleExistCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.bsl.check.MethodOptionalParameterBeforeRequiredCheck">

View File

@ -0,0 +1,160 @@
/*******************************************************************************
* 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
*******************************************************************************/
package com.e1c.v8codestyle.bsl.check;
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.INVOCATION;
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.STRING_LITERAL__LINES;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CONFIGURATION__ROLES;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.ROLE;
import java.text.MessageFormat;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.IScopeProvider;
import com._1c.g5.v8.dt.bsl.model.Expression;
import com._1c.g5.v8.dt.bsl.model.Invocation;
import com._1c.g5.v8.dt.bsl.model.StaticFeatureAccess;
import com._1c.g5.v8.dt.bsl.model.StringLiteral;
import com._1c.g5.v8.dt.common.StringUtils;
import com._1c.g5.v8.dt.core.naming.ITopObjectFqnGenerator;
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.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.CommonSenseCheckExtension;
import com.e1c.v8codestyle.internal.bsl.BslPlugin;
import com.google.inject.Inject;
/**
* Check the method IsInRole, that first param contains exists roles.
* @author Vadim Goncharov
*/
public class IsInRoleMethodRoleExistCheck
extends BasicCheck
{
private static final String CHECK_ID = "method-isinrole-role-exist"; //$NON-NLS-1$
private static final String METHOD_ISINROLE_NAME = "IsInRole"; //$NON-NLS-1$
private static final String METHOD_ISINROLE_NAME_RU = "РольДоступна"; //$NON-NLS-1$
private final IScopeProvider scopeProvider;
private final IQualifiedNameConverter qualifiedNameConverter;
private final ITopObjectFqnGenerator topObjectFqnGenerator;
/**
* Instantiates a new invocation role check access exist role check.
*
* @param scopeProvider the scope provider
* @param qualifiedNameConverter the qualified name converter
* @param topObjectFqnGenerator the top object fqn generator
*/
@Inject
public IsInRoleMethodRoleExistCheck(IScopeProvider scopeProvider, IQualifiedNameConverter qualifiedNameConverter,
ITopObjectFqnGenerator topObjectFqnGenerator)
{
super();
this.scopeProvider = scopeProvider;
this.qualifiedNameConverter = qualifiedNameConverter;
this.topObjectFqnGenerator = topObjectFqnGenerator;
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.IsInRoleMethodRoleExistCheck_title)
.description(Messages.IsInRoleMethodRoleExistCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MAJOR)
.issueType(IssueType.WARNING)
.extension(new CommonSenseCheckExtension(getCheckId(), BslPlugin.PLUGIN_ID))
.module()
.checkedObjectType(INVOCATION);
}
@Override
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
Invocation inv = (Invocation)object;
if (monitor.isCanceled() || !isValidInvocation(inv))
{
return;
}
EList<Expression> params = inv.getParams();
if (monitor.isCanceled() || params.isEmpty() || !(params.get(0) instanceof StringLiteral))
{
return;
}
StringLiteral literal = (StringLiteral)params.get(0);
String roleName = literal.lines(true).get(0);
if (StringUtils.isEmpty(roleName))
{
return;
}
IEObjectDescription roleDesc = getRoleDescFromScope(inv, roleName);
if (!monitor.isCanceled() && roleDesc == null)
{
String message = MessageFormat
.format(Messages.IsInRoleMethodRoleExistCheck_Role_named_not_exists_in_configuration, roleName);
resultAcceptor.addIssue(message, literal, STRING_LITERAL__LINES);
}
}
private boolean isValidInvocation(Invocation invocation)
{
if (invocation.getMethodAccess() instanceof StaticFeatureAccess)
{
StaticFeatureAccess sfa = (StaticFeatureAccess)invocation.getMethodAccess();
if (sfa.getName().equalsIgnoreCase(METHOD_ISINROLE_NAME)
|| sfa.getName().equalsIgnoreCase(METHOD_ISINROLE_NAME_RU))
{
return true;
}
}
return false;
}
private IEObjectDescription getRoleDescFromScope(Invocation inv, String roleName)
{
IScope scope = scopeProvider.getScope(inv, CONFIGURATION__ROLES);
String fqn = topObjectFqnGenerator.generateStandaloneObjectFqn(ROLE, roleName);
return scope.getSingleElement(qualifiedNameConverter.toQualifiedName(fqn));
}
}

View File

@ -440,6 +440,12 @@ final class Messages
public static String IsInRoleCheck_Using_IsInRole;
public static String IsInRoleMethodRoleExistCheck_description;
public static String IsInRoleMethodRoleExistCheck_Role_named_not_exists_in_configuration;
public static String IsInRoleMethodRoleExistCheck_title;
public static String ModuleUndefinedVariableCheck_Title;
public static String ModuleUndefinedVariableCheck_Description;
public static String ModuleUndefinedVariable_msg;

View File

@ -216,6 +216,12 @@ IsInRoleCheck_Use_AccessRight_instead_IsInRole = Use the AccessRight() function
IsInRoleCheck_Using_IsInRole = Using "IsInRole" method
IsInRoleMethodRoleExistCheck_Role_named_not_exists_in_configuration=Role named {0} not exists in configuration
IsInRoleMethodRoleExistCheck_description=Referring to a non-existent role
IsInRoleMethodRoleExistCheck_title=Referring to a non-existent role
LockOutOfTry_Checks_for_init_of_the_data_lock = Checks for initialization of the data lock. If the creation of a lock is found, the call of the Lock() method is checked, and the call must be in a try.
LockOutOfTry_Lock_out_of_try = Lock out of Try

View File

@ -216,6 +216,12 @@ IsInRoleCheck_Use_AccessRight_instead_IsInRole = Используйте функ
IsInRoleCheck_Using_IsInRole = Использован не рекомендованный метод "РольДоступна"
IsInRoleMethodRoleExistCheck_Role_named_not_exists_in_configuration = Роль {0} не существует в конфигурации
IsInRoleMethodRoleExistCheck_description = Обращение к несуществующей роли
IsInRoleMethodRoleExistCheck_title = Обращение к несуществующей роли
LockOutOfTry_Checks_for_init_of_the_data_lock = Правило проверяет наличие инициализации блокировки данных. В случае если найдено создание блокировки, проверяется вызов метода "Заблокировать()", при этом вызов должен быть в попытке.
LockOutOfTry_Lock_out_of_try = Метод Заблокировать() вне блока Попытка-Исключение

View File

@ -36,6 +36,7 @@ import com._1c.g5.v8.dt.bsl.resource.ExportMethodProvider;
import com._1c.g5.v8.dt.bsl.resource.TypesComputer;
import com._1c.g5.v8.dt.bsl.services.BslGrammarAccess;
import com._1c.g5.v8.dt.bsl.typesystem.ExportMethodTypeProvider;
import com._1c.g5.v8.dt.core.naming.ITopObjectFqnGenerator;
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
import com._1c.g5.v8.dt.core.platform.IConfigurationProvider;
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
@ -72,6 +73,7 @@ class ExternalDependenciesModule
bind(IBslModuleContextDefService.class).toService();
bind(IBmModelManager.class).toService();
bind(INamingService.class).toService();
bind(ITopObjectFqnGenerator.class).toService();
bind(ICheckRepository.class).toService();
bind(IFixRepository.class).toService();

View File

@ -16,15 +16,18 @@ Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com._1c.g5.v8.bm.core.event;version="[3.0.0,4.0.0)",
com._1c.g5.v8.bm.integration;version="[11.0.0,12.0.0)",
com._1c.g5.v8.dt.common;version="[6.0.0,7.0.0)",
com._1c.g5.v8.dt.core.platform;version="[11.0.0,12.0.0)",
com._1c.g5.v8.dt.dcs.model.core;version="[2.6.0,3.0.0)",
com._1c.g5.v8.dt.dcs.model.schema;version="[2.2.0,3.0.0)",
com._1c.g5.v8.dt.dcs.model.settings;version="[3.2.0,4.0.0)",
com._1c.g5.v8.dt.form.model;version="[11.0.0,12.0.0)",
com._1c.g5.v8.dt.form.model.util;version="[7.2.0,8.0.0)",
com._1c.g5.v8.dt.form.service;version="[7.0.0,8.0.0)",
com._1c.g5.v8.dt.form.service.datasourceinfo;version="[3.0.0,4.0.0)",
com._1c.g5.v8.dt.mcore;version="[7.0.0,8.0.0)",
com._1c.g5.v8.dt.metadata;version="[5.0.0,6.0.0)",
com._1c.g5.v8.dt.metadata.dbview;version="[4.0.0,5.0.0)",
com._1c.g5.v8.dt.metadata.mdclass;version="[8.0.0,9.0.0)",
com._1c.g5.v8.dt.platform.version;version="[2.14.0,3.0.0)",

View File

@ -0,0 +1,7 @@
# Conditional appearance in forms
It is recommended to configure the conditional appearance of forms and dynamic lists in the form code.
## See
- [Conditional appearance in forms](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_Development_Standards/Designing_user_interfaces/Implementation_of_form/Conditional_appearance_in_forms/)

View File

@ -0,0 +1,7 @@
# Условное оформление в формах
Настройку условного оформления рекомендуется делать в коде формы (а не в свойствах формы).
## См.
- [Условное оформление в формах](https://its.1c.ru/db/v8std#content:710:hdoc:2.1)

View File

@ -50,6 +50,10 @@
category="com.e1c.v8codestyle.form"
class="com.e1c.v8codestyle.internal.form.ExecutableExtensionFactory:com.e1c.v8codestyle.form.check.FormCommandsSingleEventHandlerCheck">
</check>
<check
category="com.e1c.v8codestyle.form"
class="com.e1c.v8codestyle.internal.form.ExecutableExtensionFactory:com.e1c.v8codestyle.form.check.DataCompositionConditionalAppearanceUseCheck">
</check>
<check
category="com.e1c.v8codestyle.form"
class="com.e1c.v8codestyle.form.check.FormItemVisibleSettingsByRolesCheck">

View File

@ -0,0 +1,139 @@
/*******************************************************************************
* 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 #262
*******************************************************************************/
package com.e1c.v8codestyle.form.check;
import static com._1c.g5.v8.dt.dcs.model.settings.DcsPackage.Literals.DATA_COMPOSITION_CONDITIONAL_APPEARANCE;
import static com._1c.g5.v8.dt.dcs.model.settings.DcsPackage.Literals.DATA_COMPOSITION_CONDITIONAL_APPEARANCE__ITEMS;
import static com._1c.g5.v8.dt.dcs.model.settings.DcsPackage.Literals.DATA_COMPOSITION_SETTINGS;
import java.text.MessageFormat;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.EcoreUtil2;
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
import com._1c.g5.v8.dt.dcs.model.settings.DataCompositionConditionalAppearance;
import com._1c.g5.v8.dt.form.model.DynamicListExtInfo;
import com._1c.g5.v8.dt.form.model.Form;
import com._1c.g5.v8.dt.form.model.FormAttribute;
import com._1c.g5.v8.dt.metadata.ExternalPropertyManagerProvider;
import com._1c.g5.v8.dt.metadata.IExternalPropertyManager;
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.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.form.CorePlugin;
import com.google.inject.Inject;
/**
* The check find form or form attributes, that use conditional appearance.
* @author Vadim Goncharov
*/
public class DataCompositionConditionalAppearanceUseCheck
extends BasicCheck
{
private static final String CHECK_ID = "data-composition-conditional-appearance-use"; //$NON-NLS-1$
private final IBmModelManager bmModelManager;
/**
* Instantiates a new dynamic list conditional appearance use check.
*
* @param bmModelManager the BmModelManager
*/
@Inject
public DataCompositionConditionalAppearanceUseCheck(IBmModelManager bmModelManager)
{
super();
this.bmModelManager = bmModelManager;
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.DataCompositionConditionalAppearanceUseCheck_title)
.description(Messages.DataCompositionConditionalAppearanceUseCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.UI_STYLE)
.extension(new StandardCheckExtension(710, getCheckId(), CorePlugin.PLUGIN_ID))
.topObject(DATA_COMPOSITION_SETTINGS)
.containment(DATA_COMPOSITION_CONDITIONAL_APPEARANCE)
.features(DATA_COMPOSITION_CONDITIONAL_APPEARANCE__ITEMS);
}
@Override
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
DataCompositionConditionalAppearance dcca = (DataCompositionConditionalAppearance)object;
if (monitor.isCanceled() || dcca.getItems() == null || dcca.getItems().isEmpty())
{
return;
}
IExternalPropertyManager manager =
ExternalPropertyManagerProvider.INSTANCE.getExternalPropertyManager(bmModelManager.getModel(dcca));
if (manager == null)
{
CorePlugin.logError(new IllegalStateException("ExternalPropertyManagerProvider not initialized")); //$NON-NLS-1$
return;
}
EObject eObject = dcca;
DynamicListExtInfo dl = manager.getOwner(eObject, DynamicListExtInfo.class);
if (dl != null)
{
FormAttribute formAttribute = EcoreUtil2.getContainerOfType(dl, FormAttribute.class);
if (monitor.isCanceled() || formAttribute == null)
{
return;
}
resultAcceptor.addIssue(
MessageFormat.format(
Messages.DataCompositionConditionalAppearanceUseCheck_Form_attribute, formAttribute.getName()),
dcca, DATA_COMPOSITION_CONDITIONAL_APPEARANCE__ITEMS);
}
else
{
Form form = manager.getOwner(eObject, Form.class);
if (monitor.isCanceled() || form == null)
{
return;
}
resultAcceptor.addIssue(
MessageFormat.format(
Messages.DataCompositionConditionalAppearanceUseCheck_Form, form.getMdForm().getName()),
dcca, DATA_COMPOSITION_CONDITIONAL_APPEARANCE__ITEMS);
}
}
}

View File

@ -23,6 +23,10 @@ final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.form.check.messages"; //$NON-NLS-1$
public static String DataCompositionConditionalAppearanceUseCheck_description;
public static String DataCompositionConditionalAppearanceUseCheck_Form;
public static String DataCompositionConditionalAppearanceUseCheck_Form_attribute;
public static String DataCompositionConditionalAppearanceUseCheck_title;
public static String DynamicListItemTitleCheck_Description;
public static String DynamicListItemTitleCheck_message;
public static String DynamicListItemTitleCheck_title;

View File

@ -1,4 +1,3 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
###############################################################################
# Copyright (C) 2021-2022, 1C-Soft LLC and others.
@ -13,6 +12,15 @@
# 1C-Soft LLC - initial API and implementation
# Manaev Konstantin - issue #855
###############################################################################
DataCompositionConditionalAppearanceUseCheck_description = Use data composition conditional appearance
DataCompositionConditionalAppearanceUseCheck_Form = Form "{0}" use conditional appearance
DataCompositionConditionalAppearanceUseCheck_Form_attribute = Form attribute "{0}" use conditional appearance
DataCompositionConditionalAppearanceUseCheck_title = Use data composition conditional appearance
DynamicListItemTitleCheck_Description = Dynamic list field title is empty
DynamicListItemTitleCheck_message = Title of field of dynamic list is not filled

View File

@ -13,6 +13,14 @@
# Manaev Konstantin - issue #855
###############################################################################
DataCompositionConditionalAppearanceUseCheck_description = Используется условное оформление компоновки данных
DataCompositionConditionalAppearanceUseCheck_Form = Форма "{0}" использует условное оформление
DataCompositionConditionalAppearanceUseCheck_Form_attribute = Реквизит формы "{0}" использует условное оформление
DataCompositionConditionalAppearanceUseCheck_title = Используется условное оформление компоновки данных
DynamicListItemTitleCheck_Description = Заголовок поля динамического списка пустой
DynamicListItemTitleCheck_message = Не заполнен заголовок поля динамического списка

View File

@ -17,6 +17,7 @@ import org.eclipse.core.runtime.Plugin;
import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.resource.IResourceServiceProvider;
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
import com._1c.g5.v8.dt.form.service.FormItemInformationService;
import com._1c.g5.v8.dt.form.service.datasourceinfo.IDataSourceInfoAssociationService;
@ -48,8 +49,10 @@ public class ExternalDependenciesModule
URI uri = URI.createURI("*.form"); //$NON-NLS-1$
final IResourceServiceProvider rsp = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(uri);
bind(FormItemInformationService.class).toProvider(() -> rsp.get(FormItemInformationService.class));
bind(IV8ProjectManager.class).toService();
bind(IDataSourceInfoAssociationService.class).toService();
bind(IBmModelManager.class).toService();
URI qlUri = URI.createURI("*.qldcs"); //$NON-NLS-1$
final IResourceServiceProvider qlRsp =

View File

@ -0,0 +1,74 @@
/*******************************************************************************
* 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
*******************************************************************************/
package com.e1c.v8codestyle.bsl.check.itests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.core.runtime.Path;
import org.junit.Test;
import com._1c.g5.v8.dt.validation.marker.IExtraInfoKeys;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.v8codestyle.bsl.check.IsInRoleMethodRoleExistCheck;
/**
* The test for {@link IsInRoleMethodRoleExistCheck} class.
* @author Vadim Goncharov
*/
public class IsInRoleMethodRoleExistCheckTest
extends AbstractSingleModuleTestBase
{
private static final String PROJECT_NAME = "IsInRoleMethodRoleExist"; //$NON-NLS-1$
private static final String COMMON_MODULE_FILE_NAME = "/src/CommonModules/RolesCommonModule/Module.bsl"; //$NON-NLS-1$
public IsInRoleMethodRoleExistCheckTest()
{
super(IsInRoleMethodRoleExistCheck.class);
}
@Override
protected String getTestConfigurationName()
{
return PROJECT_NAME;
}
@Override
protected String getModuleFileName()
{
return COMMON_MODULE_FILE_NAME;
}
/**
* Test invocation role check access exist role check.
*
* @throws Exception the exception
*/
@Test
public void testIsInRoleMethodRoleExistCheck() throws Exception
{
List<Marker> markers = getModuleMarkers();
assertEquals(2, markers.size());
assertEquals("2", markers.get(0).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
assertEquals("9", markers.get(1).getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>IsInRoleMethodRoleExist</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,19 @@
Procedure TestIsInRole()
If IsInRole("TestRole3") Then
EndIf;
If IsInRole("TestRole1") Then
EndIf;
EndProcedure
Процедура ТестРольДоступна()
Если РольДоступна("TestRole3") Тогда
КонецЕсли;
Если РольДоступна("TestRole1") Тогда
КонецЕсли;
КонецПроцедуры
Procedure TestStaff()
If Users.RolesAvailable("TestRole1,TestRole2,TestRole3") Then
Message("Test message");
EndIf;
EndProcedure

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6f749273-bdc4-4395-bcf0-a26399389210">
<name>RolesCommonModule</name>
<synonym>
<key>en</key>
<value>Roles common module</value>
</synonym>
<server>true</server>
</mdclass:CommonModule>

View File

@ -0,0 +1,8 @@
Function RolesAvailable(RolesNames, User = Undefined, ForPrivilegedMode = True) Export
//Some checks
Return True;
EndFunction
Function IsFullUser(User = Undefined) Export
Return True;
EndFunction

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="72701a84-135e-494e-b68f-f287fb81c335">
<name>Users</name>
<synonym>
<key>en</key>
<value>Users</value>
</synonym>
<server>true</server>
</mdclass:CommonModule>

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,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="94ce6be4-4189-4a62-85af-1d9e391d338a">
<name>IsInRoleMethodRoleExist</name>
<synonym>
<key>en</key>
<value>IsInRoleMethodRoleExistCheck</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="cfa3e992-f719-4203-af07-9f7c4f155fb0"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="1976c333-6fbe-408d-99b8-3bdabac4d2ed"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="c2f98eea-d716-482c-8b7d-b3fc30f88f53"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="011b4269-fe6f-4876-b48f-6894315ec46b"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="f87a21ff-82a5-40f3-8c45-0b72448175de"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="4206d029-9520-4b4e-a4ce-24b61c5f219b"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="305fd434-af42-4e89-ad3d-c2c8d426eeba"/>
<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="e486c146-37cf-4259-b763-c572f1a9343f">
<name>English</name>
<synonym>
<key>en</key>
<value>English</value>
</synonym>
<languageCode>en</languageCode>
</languages>
<roles>Role.TestRole1</roles>
<commonModules>CommonModule.RolesCommonModule</commonModules>
<commonModules>CommonModule.Users</commonModules>
</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,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>Configuration.IsInRoleMethodRoleExist</name>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Role xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f34da7cf-73e2-4936-a972-c6f281dcf791">
<name>TestRole1</name>
<synonym>
<key>en</key>
<value>Test role1</value>
</synonym>
</mdclass:Role>

View File

@ -0,0 +1,103 @@
package com.e1c.v8codestyle.form.check.itests;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com._1c.g5.v8.bm.core.IBmObject;
import com._1c.g5.v8.dt.core.platform.IDtProject;
import com._1c.g5.v8.dt.dcs.model.settings.DataCompositionConditionalAppearance;
import com._1c.g5.v8.dt.dcs.model.settings.DataCompositionSettings;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
import com.e1c.v8codestyle.form.check.DataCompositionConditionalAppearanceUseCheck;
/**
* Tests for {@link DataCompositionConditionalAppearanceUseCheck} check.
*
* @author Vadim Goncharov
*/
public class DataCompositionConditionalAppearanceUseCheckTest
extends CheckTestBase
{
private static final String CHECK_ID = "data-composition-conditional-appearance-use";
private static final String PROJECT_NAME = "DataCompositionConditionalAppearanceUse";
private static final String FQN_DL1 =
"Catalog.TestCatalog1.Form.ListForm.Form.Attributes.List.ExtInfo.ListSettings";
private static final String FQN_DL2 =
"Catalog.TestCatalog2.Form.ListForm.Form.Attributes.List.ExtInfo.ListSettings";
private static final String FQN_FORM1 = "Catalog.TestCatalog3.Form.ItemForm.Form.ConditionalAppearance";
private static final String FQN_FORM2 = "Catalog.TestCatalog4.Form.ItemForm.Form.ConditionalAppearance";
/**
* Test the Dynamic List use the conditional appearance.
*
* @throws Exception the exception
*/
@Test
public void testDynamicListUseConditionalAppearance() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
IBmObject object = getTopObjectByFqn(FQN_DL1, dtProject);
assertTrue(object instanceof DataCompositionSettings);
Marker marker = getFirstNestedMarker(CHECK_ID, object.bmGetId(), dtProject);
assertNotNull(marker);
}
/**
* Test the Dynamic List do not use the conditional appearance.
*
* @throws Exception the exception
*/
@Test
public void testDynamicListDoNotUseConditionalAppearance() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
IBmObject object = getTopObjectByFqn(FQN_DL2, dtProject);
assertTrue(object instanceof DataCompositionSettings);
Marker marker = getFirstNestedMarker(CHECK_ID, object.bmGetId(), dtProject);
assertNull(marker);
}
/**
* Test the form use the conditional appearance.
*
* @throws Exception the exception
*/
@Test
public void testFormUseConditionalAppearance() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
IBmObject object = getTopObjectByFqn(FQN_FORM1, dtProject);
assertTrue(object instanceof DataCompositionConditionalAppearance);
Marker marker = getFirstNestedMarker(CHECK_ID, object.bmGetId(), dtProject);
assertNotNull(marker);
}
/**
* Test the form don't use the conditional appearance.
*
* @throws Exception the exception
*/
@Test
public void testFormDontUseConditionalAppearance() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
IBmObject object = getTopObjectByFqn(FQN_FORM2, dtProject);
assertNull(object);
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DataCompositionConditionalAppearanceUse</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,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core">
<filter>
<viewMode>Normal</viewMode>
<userSettingID>0ba244f8-347c-4879-8818-804f99e1b947</userSettingID>
</filter>
<order>
<viewMode>Normal</viewMode>
<userSettingID>b2180f1e-00e6-4ddd-b884-17f325769653</userSettingID>
</order>
<conditionalAppearance>
<item>
<selection>
<item>
<field>Code</field>
</item>
</selection>
<filter/>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>Visible</dcscor:parameter>
<dcscor:value xsi:type="xs:boolean">false</dcscor:value>
</dcscor:item>
</appearance>
</item>
<viewMode>Normal</viewMode>
<userSettingID>2182c1c8-8657-4646-bf81-230ed595bf58</userSettingID>
<userSettingPresentation xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Code visibility</v8:content>
</v8:item>
</userSettingPresentation>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>c4db2142-65c3-43e4-8bbc-c011c9e3103f</itemsUserSettingID>
</Settings>

View File

@ -0,0 +1,380 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>ListSettingsComposerUserSettings</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>en</key>
<value>User settings group</value>
</title>
<verticalStretch>false</verticalStretch>
<extendedTooltip>
<name>ListSettingsComposerUserSettingsExtendedTooltip</name>
<id>2</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>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>List</name>
<id>3</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>List</segments>
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<items xsi:type="form:FormField">
<name>Code</name>
<id>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>List.Code</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>CodeExtendedTooltip</name>
<id>18</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>17</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Description</name>
<id>19</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>List.Description</segments>
</dataPath>
<extendedTooltip>
<name>DescriptionExtendedTooltip</name>
<id>21</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>20</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>ListCommandBar</name>
<id>5</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<searchStringAddition>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ListSearchString</name>
<id>7</id>
<extendedTooltip>
<name>ListSearchStringExtendedTooltip</name>
<id>9</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>ListSearchStringContextMenu</name>
<id>8</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<source>ListSearchString</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ListViewStatus</name>
<id>10</id>
<extendedTooltip>
<name>ListViewStatusExtendedTooltip</name>
<id>12</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>ListViewStatusContextMenu</name>
<id>11</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>ListViewStatus</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ListSearchControl</name>
<id>13</id>
<extendedTooltip>
<name>ListSearchControlExtendedTooltip</name>
<id>15</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>ListSearchControlContextMenu</name>
<id>14</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>ListSearchControl</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>ListExtendedTooltip</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>ListContextMenu</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<useAlternationRowColor>true</useAlternationRowColor>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<initialTreeView>ExpandTopLevel</initialTreeView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<fileDragMode>AsFileRef</fileDragMode>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>List.DefaultPicture</segments>
</rowPictureDataPath>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
<endDate>0001-01-01T00:00:00</endDate>
</period>
<topLevelParent xsi:type="core:UndefinedValue"/>
<showRoot>true</showRoot>
<userSettingsGroup>ListSettingsComposerUserSettings</userSettingsGroup>
</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>
<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>List</name>
<id>1</id>
<valueType>
<types>DynamicList</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<mainTable>Catalog.TestCatalog1</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:DynamicListFormExtInfo"/>
</form:Form>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7e3d5d6e-65c3-4c28-aa2c-845f70468f6d">
<producedTypes>
<objectType typeId="dda02ef1-67d6-4843-b65d-0cddbb1c6276" valueTypeId="2e6f7766-b796-4741-b893-539139a5ed5e"/>
<refType typeId="14eded87-8381-4e9f-bd35-862624d9d3d8" valueTypeId="637ba114-8972-4dc1-b9a4-ace7b16297f8"/>
<selectionType typeId="4df10721-911f-4c75-8dce-a348e7ea81f7" valueTypeId="462d3c1d-70e4-401c-b5dc-9a100ac4e705"/>
<listType typeId="9e4320ba-658d-4b2c-88fb-5684ae894633" valueTypeId="f37ee675-5d4f-49d3-8f1d-74e30513ebf2"/>
<managerType typeId="af07c925-6995-422d-a3f7-8c47b407c65f" valueTypeId="e4a9d8c7-9b75-48cf-87cd-36e0964b0a81"/>
</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>
<defaultListForm>Catalog.TestCatalog1.Form.ListForm</defaultListForm>
<forms uuid="d0e918bd-d593-4dc6-b42f-d2151f32738a">
<name>ListForm</name>
<synonym>
<key>en</key>
<value>List form</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core">
<filter>
<viewMode>Normal</viewMode>
<userSettingID>29852e17-a948-4760-ad5b-96f652ae6385</userSettingID>
</filter>
<order>
<viewMode>Normal</viewMode>
<userSettingID>5a49d25f-e3a1-4d9b-b77c-8ca7e4993f4d</userSettingID>
</order>
<conditionalAppearance>
<viewMode>Normal</viewMode>
<userSettingID>99b3d6c7-3b0a-4747-8f19-e6dfde297050</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>8ec81508-4f51-4983-b1ef-98f3864d4768</itemsUserSettingID>
</Settings>

View File

@ -0,0 +1,380 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>ListSettingsComposerUserSettings</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>en</key>
<value>User settings group</value>
</title>
<verticalStretch>false</verticalStretch>
<extendedTooltip>
<name>ListSettingsComposerUserSettingsExtendedTooltip</name>
<id>2</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>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>List</name>
<id>3</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>List</segments>
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<items xsi:type="form:FormField">
<name>Code</name>
<id>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>List.Code</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>CodeExtendedTooltip</name>
<id>18</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>17</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Description</name>
<id>19</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>List.Description</segments>
</dataPath>
<extendedTooltip>
<name>DescriptionExtendedTooltip</name>
<id>21</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>20</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>ListCommandBar</name>
<id>5</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<searchStringAddition>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ListSearchString</name>
<id>7</id>
<extendedTooltip>
<name>ListSearchStringExtendedTooltip</name>
<id>9</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>ListSearchStringContextMenu</name>
<id>8</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<source>ListSearchString</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ListViewStatus</name>
<id>10</id>
<extendedTooltip>
<name>ListViewStatusExtendedTooltip</name>
<id>12</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>ListViewStatusContextMenu</name>
<id>11</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>ListViewStatus</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ListSearchControl</name>
<id>13</id>
<extendedTooltip>
<name>ListSearchControlExtendedTooltip</name>
<id>15</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>ListSearchControlContextMenu</name>
<id>14</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>ListSearchControl</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>ListExtendedTooltip</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>ListContextMenu</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<useAlternationRowColor>true</useAlternationRowColor>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<initialTreeView>ExpandTopLevel</initialTreeView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<fileDragMode>AsFileRef</fileDragMode>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>List.DefaultPicture</segments>
</rowPictureDataPath>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
<endDate>0001-01-01T00:00:00</endDate>
</period>
<topLevelParent xsi:type="core:UndefinedValue"/>
<showRoot>true</showRoot>
<userSettingsGroup>ListSettingsComposerUserSettings</userSettingsGroup>
</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>
<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>List</name>
<id>1</id>
<valueType>
<types>DynamicList</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<mainTable>Catalog.TestCatalog2</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:DynamicListFormExtInfo"/>
</form:Form>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="61584c1b-8e4e-4ace-8c2d-512db4c4931d">
<producedTypes>
<objectType typeId="7a868afc-e9c5-4e71-bd9f-16582791fe09" valueTypeId="a5d09158-ccd5-4236-b01e-f24d67553817"/>
<refType typeId="8a311f12-9854-4c3b-883d-afdcc3cb13ec" valueTypeId="ef24a5bb-1506-4858-ac16-9c8e8892cf1b"/>
<selectionType typeId="6f27143a-1d6b-44fa-af49-0c1d71dc304b" valueTypeId="495435f5-5694-4c40-8fcb-25eaaf1a00e0"/>
<listType typeId="f025d2cc-8ee6-4e91-879a-4d2cc27faa9a" valueTypeId="ffc616fe-e7f3-4db8-9113-228efc86cf19"/>
<managerType typeId="7366030c-925c-410a-b97a-fea4c13eed4f" valueTypeId="2f4724a6-5826-47c9-afeb-b6f427644a01"/>
</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>
<defaultListForm>Catalog.TestCatalog2.Form.ListForm</defaultListForm>
<forms uuid="9550db60-c131-4b86-bd94-df3bdfbbf4f9">
<name>ListForm</name>
<synonym>
<key>en</key>
<value>List form</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<ConditionalAppearance xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
<item>
<selection/>
<filter/>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>TextColor</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">#000000</dcscor:value>
</dcscor:item>
</appearance>
</item>
</ConditionalAppearance>

View File

@ -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.TestCatalog3</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>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ff1c1223-3fad-415c-998e-7ea1f59920bb">
<producedTypes>
<objectType typeId="43b73541-01f4-4487-a647-18bbb9a3ec2b" valueTypeId="3d9333f0-f3bb-4eef-a8af-05dd982a7364"/>
<refType typeId="b9ab2eed-9548-4394-ba72-3e1cc9a9c933" valueTypeId="ba5e8691-d694-4779-8974-b6e3eea4aa76"/>
<selectionType typeId="051f2af7-2546-4225-b0d9-2be466674503" valueTypeId="89ee9d2a-71d3-4780-930c-047cc0c63afa"/>
<listType typeId="585f28a6-7be8-4279-bca7-3048337613b8" valueTypeId="830ae9a1-3494-4a07-8dc7-eb8822bf38c8"/>
<managerType typeId="8347d830-9ed8-42bb-aa7d-989e83fb7a18" valueTypeId="c86f7bb0-bfb3-4b3e-886d-84e86245b848"/>
</producedTypes>
<name>TestCatalog3</name>
<synonym>
<key>en</key>
<value>Test catalog3</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.TestCatalog3.StandardAttribute.Code</inputByString>
<inputByString>Catalog.TestCatalog3.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.TestCatalog3.Form.ItemForm</defaultObjectForm>
<forms uuid="3bdf238d-a20f-48db-9d95-ad87da06ebfb">
<name>ItemForm</name>
<synonym>
<key>en</key>
<value>Item form</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>

View File

@ -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.TestCatalog4</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>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f4891537-06c9-4fcf-bd98-d98c745c7c30">
<producedTypes>
<objectType typeId="be5eaf8e-5d59-4da0-9483-164bd971c85f" valueTypeId="09a44527-c885-4d2c-b006-bd1c7412c125"/>
<refType typeId="cc27ab80-9cdc-4364-9667-71f7473e3173" valueTypeId="a461d22a-3a11-4d4a-b7b1-80b0219b03e8"/>
<selectionType typeId="43cf47da-4563-45d3-bf4e-d5bcd6b0437b" valueTypeId="d5470cff-6d76-4956-954e-35cbcb7cd125"/>
<listType typeId="aed1bdc0-7022-4dc3-83e1-5aa050581693" valueTypeId="fd81b56d-b52a-401e-99f2-50a8e0278acb"/>
<managerType typeId="47f98258-cd2c-41f7-9db8-97b36f6c58bf" valueTypeId="4b320dfa-805b-49a5-8060-9e8aa385caaf"/>
</producedTypes>
<name>TestCatalog4</name>
<synonym>
<key>en</key>
<value>Test catalog4</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.TestCatalog4.StandardAttribute.Code</inputByString>
<inputByString>Catalog.TestCatalog4.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.TestCatalog4.Form.ItemForm</defaultObjectForm>
<forms uuid="9700a18d-e0d3-4e4e-b4f5-4cd4bf12f2b7">
<name>ItemForm</name>
<synonym>
<key>en</key>
<value>Item form</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</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,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="be070d86-c318-4fd6-bf9e-4319d4596e58">
<name>DataCompositionConditionalAppearanceUse</name>
<synonym>
<key>en</key>
<value>DataCompositionConditionalAppearanceUse</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="efde72cb-2980-4654-9ef7-4541585b9754"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="9742d1c6-653c-472b-b4e2-997432ed1b0b"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5226f2ea-fc49-411b-b47b-c9024fdddc36"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5a328b19-66b4-48e2-8ce4-41f0b11fc6bd"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="77e83e1e-832a-452a-b1ab-e8f8614555c1"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="6fa0ce71-b7bc-49d3-a928-f53b8b805ef2"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="4bacc51c-20e7-469e-8ea4-739e6e95fd84"/>
<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="b8e13a84-20c0-4f24-a4d0-c8c67f57d68d">
<name>English</name>
<synonym>
<key>en</key>
<value>English</value>
</synonym>
<languageCode>en</languageCode>
</languages>
<catalogs>Catalog.TestCatalog1</catalogs>
<catalogs>Catalog.TestCatalog2</catalogs>
<catalogs>Catalog.TestCatalog3</catalogs>
<catalogs>Catalog.TestCatalog4</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"/>