mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2024-11-28 09:33:06 +02:00
* #319 Метод или переменная доступны на Клиенте
This commit is contained in:
parent
5867c7707e
commit
1bdb27b7d9
@ -63,6 +63,7 @@
|
||||
- Использование директив компиляции модуля формы
|
||||
- Всегда использовать директивы компиляции в модуле формы
|
||||
- Описание оповещения на серверную процедуру
|
||||
- Метод или переменная доступны НаКлиенте
|
||||
|
||||
#### Запросы
|
||||
|
||||
|
@ -0,0 +1,53 @@
|
||||
# Method or variable accessible AtClient
|
||||
|
||||
Method or variable accessible AtClient in manager or object module
|
||||
|
||||
## Noncompliant Code Example
|
||||
|
||||
```bsl
|
||||
|
||||
Var moduleVar;
|
||||
|
||||
Procedure BeforeDelete(Cancel)
|
||||
// Non-compliant
|
||||
EndProcedure
|
||||
|
||||
|
||||
Procedure Noncompiant() Export
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
moduleVar = Undefined;
|
||||
|
||||
```
|
||||
|
||||
## Compliant Solution
|
||||
|
||||
```bsl
|
||||
|
||||
#If Server Or ThickClientOrdinaryApplication Or ExternalConnection Then
|
||||
|
||||
Var moduleVar;
|
||||
|
||||
Procedure BeforeDelete(Cancel)
|
||||
// Compliant
|
||||
EndProcedure
|
||||
|
||||
Procedure Compiant() Export
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
|
||||
moduleVar = Undefined;
|
||||
|
||||
#Else
|
||||
Raise NStr("en = 'Invalid object call on the client.'");
|
||||
#EndIf
|
||||
|
||||
```
|
||||
|
||||
## See
|
||||
|
||||
- [Thick client support in managed applications that run in the client/server mode](https://1c-dn.com/library/thick_client_support_in_managed_applications_that_run_in_the_client_server_mode/)
|
||||
- [Thick client support, managed application, client-server](https://support.1ci.com/hc/en-us/articles/360010988300-Thick-client-support-managed-application-client-server)
|
||||
- [PresentationGetProcessing() and PresentationFieldsGetProcessing() event handlers](https://support.1ci.com/hc/en-us/articles/360011001340-PresentationGetProcessing-and-PresentationFieldsGetProcessing-event-handlers)
|
@ -0,0 +1,48 @@
|
||||
# Метод или переменная доступны НаКлиенте
|
||||
|
||||
Метод или переменная доступны НаКлиенте в модулях менеджера или объекта
|
||||
|
||||
## Неправильно
|
||||
|
||||
```bsl
|
||||
|
||||
Перем ПеременнаяМодуля;
|
||||
|
||||
Процедура ПередУдалением(Отказ)
|
||||
// Неправильно
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Неправильно() Экспорт
|
||||
// пусто
|
||||
КонецПроцедуры
|
||||
|
||||
ПеременнаяМодуля = Неопределено;
|
||||
|
||||
```
|
||||
|
||||
## Правильно
|
||||
|
||||
```bsl
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
|
||||
Перем ПеременнаяМодуля;
|
||||
|
||||
Процедура ПередУдалением(Отказ)
|
||||
// Неправильно
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Правильно() Экспорт
|
||||
// пусто
|
||||
КонецПроцедуры
|
||||
|
||||
ПеременнаяМодуля = Неопределено;
|
||||
|
||||
#Иначе
|
||||
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
|
||||
#КонецЕсли
|
||||
```
|
||||
|
||||
## См.
|
||||
|
||||
- [Поддержка толстого клиента, управляемое приложение, клиент-сервер](https://its.1c.ru/db/v8std#content:680:hdoc:2)
|
||||
- [Обработчики событий ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления](https://its.1c.ru/db/v8std#content:746:hdoc)
|
@ -30,6 +30,10 @@
|
||||
id="com.e1c.v8codestyle.bsl.strict"
|
||||
title="%category.bsl.strict.title">
|
||||
</category>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.bsl"
|
||||
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.AccessibilityAtClientInObjectModuleCheck">
|
||||
</check>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.bsl"
|
||||
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.StructureCtorTooManyKeysCheck">
|
||||
|
@ -0,0 +1,169 @@
|
||||
/*******************************************************************************
|
||||
* 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
|
||||
*******************************************************************************/
|
||||
package com.e1c.v8codestyle.bsl.check;
|
||||
|
||||
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.DECLARE_STATEMENT;
|
||||
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.DECLARE_STATEMENT__VARIABLES;
|
||||
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.METHOD;
|
||||
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.NAMED_ELEMENT__NAME;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.xtext.EcoreUtil2;
|
||||
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.DeclareStatement;
|
||||
import com._1c.g5.v8.dt.bsl.model.Method;
|
||||
import com._1c.g5.v8.dt.bsl.model.Module;
|
||||
import com._1c.g5.v8.dt.bsl.model.ModuleType;
|
||||
import com._1c.g5.v8.dt.bsl.model.Preprocessor;
|
||||
import com._1c.g5.v8.dt.lcore.util.CaseInsensitiveString;
|
||||
import com._1c.g5.v8.dt.mcore.Environmental;
|
||||
import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
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.google.inject.Inject;
|
||||
|
||||
/**
|
||||
* Checks that method or declared variables accessible &AtClient in manager or object module.
|
||||
*
|
||||
* @author Dmitriy Marmyshev
|
||||
* @author Victor Golubev
|
||||
*/
|
||||
public class AccessibilityAtClientInObjectModuleCheck
|
||||
extends BasicCheck
|
||||
{
|
||||
private static final String CHECK_ID = "module-accessibility-at-client"; //$NON-NLS-1$
|
||||
|
||||
//@formatter:off
|
||||
private static final Collection<CaseInsensitiveString> MANAGER_EVENT_EXCEPTION_NAMES = Set.of(
|
||||
new CaseInsensitiveString("PresentationFieldsGetProcessing"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("ОбработкаПолученияПолейПредставления"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("PresentationGetProcessing"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("ОбработкаПолученияПредставления"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("FormGetProcessing"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("ОбработкаПолученияФормы"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("AfterWriteDataHistoryVersionsProcessing"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("ОбработкаПослеЗаписиВерсийИсторииДанных"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("ChoiceDataGetProcessing"), //$NON-NLS-1$
|
||||
new CaseInsensitiveString("ОбработкаПолученияДанныхВыбора")); //$NON-NLS-1$
|
||||
//@formatter:on
|
||||
|
||||
private final IBslPreferences bslPreferences;
|
||||
|
||||
/**
|
||||
* Instantiates a new accessibility at client in object module check.
|
||||
*
|
||||
* @param bslPreferences the BSL preferences service, cannot be {@code null}.
|
||||
*/
|
||||
@Inject
|
||||
public AccessibilityAtClientInObjectModuleCheck(IBslPreferences bslPreferences)
|
||||
{
|
||||
super();
|
||||
this.bslPreferences = bslPreferences;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCheckId()
|
||||
{
|
||||
return CHECK_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureCheck(CheckConfigurer builder)
|
||||
{
|
||||
builder.title(Messages.AccessibilityAtClientInObjectModuleCheck_title)
|
||||
.description(Messages.AccessibilityAtClientInObjectModuleCheck_description)
|
||||
.complexity(CheckComplexity.NORMAL)
|
||||
.severity(IssueSeverity.MINOR)
|
||||
.issueType(IssueType.PORTABILITY)
|
||||
.module()
|
||||
.checkedObjectType(METHOD, DECLARE_STATEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
{
|
||||
EObject eObject = (EObject)object;
|
||||
|
||||
if (eObject instanceof DeclareStatement
|
||||
&& (eObject instanceof Preprocessor || EcoreUtil2.getContainerOfType(eObject, Method.class) != null))
|
||||
{
|
||||
// Skip preprocessor declare statement or declared variables in method
|
||||
return;
|
||||
}
|
||||
|
||||
Module module = EcoreUtil2.getContainerOfType(eObject, Module.class);
|
||||
|
||||
if (!isValidModule(module) || monitor.isCanceled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Environmental environmental = EcoreUtil2.getContainerOfType(eObject, Environmental.class);
|
||||
Environments enivronmetsObject = environmental.environments();
|
||||
Environments checkingEnvs = bslPreferences.getLoadEnvs(eObject).intersect(Environments.MNG_CLIENTS);
|
||||
|
||||
boolean isClientEvent = isClientEvent(eObject, module);
|
||||
boolean isAccessibleAtClient = enivronmetsObject.containsAny(checkingEnvs);
|
||||
|
||||
if (isClientEvent && !isAccessibleAtClient)
|
||||
{
|
||||
resultAceptor.addIssue(
|
||||
Messages.AccessibilityAtClientInObjectModuleCheck_Event_handler_should_be_accessible_AtClient, eObject,
|
||||
NAMED_ELEMENT__NAME);
|
||||
}
|
||||
else if (!isAccessibleAtClient || isClientEvent || monitor.isCanceled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (eObject instanceof Method)
|
||||
{
|
||||
resultAceptor.addIssue(Messages.AccessibilityAtClientInObjectModuleCheck_Method_accessible_AtClient,
|
||||
eObject, NAMED_ELEMENT__NAME);
|
||||
}
|
||||
else if (eObject instanceof DeclareStatement)
|
||||
{
|
||||
resultAceptor.addIssue(
|
||||
Messages.AccessibilityAtClientInObjectModuleCheck_Declared_variable_accessible_AtClient, eObject,
|
||||
DECLARE_STATEMENT__VARIABLES);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidModule(Module module)
|
||||
{
|
||||
ModuleType type = module.getModuleType();
|
||||
return type == ModuleType.SESSION_MODULE || type == ModuleType.MANAGER_MODULE
|
||||
|| type == ModuleType.OBJECT_MODULE || type == ModuleType.RECORDSET_MODULE;
|
||||
}
|
||||
|
||||
private boolean isClientEvent(EObject object, Module module)
|
||||
{
|
||||
if (object instanceof Method && module.getModuleType() == ModuleType.MANAGER_MODULE)
|
||||
{
|
||||
Method method = (Method)object;
|
||||
CaseInsensitiveString name = new CaseInsensitiveString(method.getName());
|
||||
return MANAGER_EVENT_EXCEPTION_NAMES.contains(name);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@ -24,6 +24,15 @@ final class Messages
|
||||
{
|
||||
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.check.messages"; //$NON-NLS-1$
|
||||
|
||||
public static String AccessibilityAtClientInObjectModuleCheck_Declared_variable_accessible_AtClient;
|
||||
|
||||
public static String AccessibilityAtClientInObjectModuleCheck_description;
|
||||
|
||||
public static String AccessibilityAtClientInObjectModuleCheck_Event_handler_should_be_accessible_AtClient;
|
||||
|
||||
public static String AccessibilityAtClientInObjectModuleCheck_Method_accessible_AtClient;
|
||||
|
||||
public static String AccessibilityAtClientInObjectModuleCheck_title;
|
||||
public static String CanonicalPragmaCheck_description;
|
||||
public static String CanonicalPragmaCheck_Pragma_0_is_not_written_canonically_correct_spelling_is_1;
|
||||
public static String CanonicalPragmaCheck_title;
|
||||
|
@ -1,3 +1,4 @@
|
||||
|
||||
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
|
||||
###############################################################################
|
||||
# Copyright (C) 2021, 1C-Soft LLC and others.
|
||||
@ -13,6 +14,15 @@
|
||||
# Aleksandr Kapralov - issue #17, #449, #458
|
||||
# Viktor Gukov - issue #394
|
||||
###############################################################################
|
||||
AccessibilityAtClientInObjectModuleCheck_Declared_variable_accessible_AtClient = Declared variable accessible AtClient
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_Event_handler_should_be_accessible_AtClient = Event handler should be accessible AtClient
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_Method_accessible_AtClient = Method accessible AtClient
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_description = Method or variable accessible AtClient in manager or object module
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_title = Method or variable accessible AtClient
|
||||
|
||||
CanonicalPragmaCheck_Pragma_0_is_not_written_canonically_correct_spelling_is_1 = Annotation {0} is not written canonically, correct spelling is {1}
|
||||
|
||||
|
@ -14,6 +14,16 @@
|
||||
# Viktor Gukov - issue #394
|
||||
###############################################################################
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_Declared_variable_accessible_AtClient = Объявленная переменная доступна НаКлиенте
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_Event_handler_should_be_accessible_AtClient = Обработчик события должен быть доступен НаКлиенте
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_Method_accessible_AtClient = Метод доступен НаКлиенте
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_description = Метод или переменная доступны НаКлиенте в модулях менеджера или объекта
|
||||
|
||||
AccessibilityAtClientInObjectModuleCheck_title = Метод или переменная доступны НаКлиенте
|
||||
|
||||
CanonicalPragmaCheck_Pragma_0_is_not_written_canonically_correct_spelling_is_1 = Аннотация {0} написана не канонически, правильное написание {1}
|
||||
|
||||
CanonicalPragmaCheck_description = Проверяет что аннотация метода написана канонически
|
||||
|
@ -0,0 +1,131 @@
|
||||
/*******************************************************************************
|
||||
* 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
|
||||
*******************************************************************************/
|
||||
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.Ignore;
|
||||
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.AccessibilityAtClientInObjectModuleCheck;
|
||||
|
||||
/**
|
||||
* Tests for {@link AccessibilityAtClientInObjectModuleCheck} check.
|
||||
*
|
||||
* @author Dmitriy Marmyshev
|
||||
*/
|
||||
public class AccessibilityAtClientInObjectModuleCheckTest
|
||||
extends AbstractSingleModuleTestBase
|
||||
{
|
||||
|
||||
private static final String PROJECT_NAME = "AccessibilityAtClient";
|
||||
|
||||
private static final String MANAGER_MODULE_FILE_NAME = "/src/Catalogs/Products/ManagerModule.bsl";
|
||||
|
||||
private static final String OBJECT_MODULE_FILE_NAME = "/src/Catalogs/Products/ObjectModule.bsl";
|
||||
|
||||
private static final String SESSION_MODULE_FILE_NAME = "/src/Configuration/SessionModule.bsl";
|
||||
|
||||
public AccessibilityAtClientInObjectModuleCheckTest()
|
||||
{
|
||||
super(AccessibilityAtClientInObjectModuleCheck.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTestConfigurationName()
|
||||
{
|
||||
return PROJECT_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getModuleId()
|
||||
{
|
||||
return Path.ROOT.append(getTestConfigurationName()).append(MANAGER_MODULE_FILE_NAME).toString();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testObjectModule() throws Exception
|
||||
{
|
||||
List<Marker> markers = getObjectModuleMarkers();
|
||||
assertEquals(3, markers.size());
|
||||
|
||||
Marker marker = markers.get(0);
|
||||
assertEquals("5", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
marker = markers.get(1);
|
||||
assertEquals("10", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
|
||||
marker = markers.get(2);
|
||||
assertEquals("2", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testManagerModule() throws Exception
|
||||
{
|
||||
List<Marker> markers = getModuleMarkers();
|
||||
assertEquals(4, markers.size());
|
||||
|
||||
Marker marker = markers.get(0);
|
||||
assertEquals("2", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
marker = markers.get(1);
|
||||
assertEquals("8", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
// FIXME remove this after 2021.3
|
||||
marker = markers.get(2);
|
||||
assertEquals("8", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
marker = markers.get(3);
|
||||
assertEquals("22", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore // all module is server in EDT
|
||||
public void testSessionModule() throws Exception
|
||||
{
|
||||
List<Marker> markers = getSessionModuleMarkers();
|
||||
assertEquals(1, markers.size());
|
||||
|
||||
Marker marker = markers.get(0);
|
||||
assertEquals("10", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY));
|
||||
}
|
||||
|
||||
private List<Marker> getObjectModuleMarkers()
|
||||
{
|
||||
String moduleId = Path.ROOT.append(getTestConfigurationName()).append(OBJECT_MODULE_FILE_NAME).toString();
|
||||
List<Marker> markers = List.of(markerManager.getMarkers(getProject().getWorkspaceProject(), moduleId));
|
||||
|
||||
String chekcId = getCheckId();
|
||||
assertNotNull(chekcId);
|
||||
|
||||
return markers.stream()
|
||||
.filter(m -> chekcId.equals(getCheckIdFromMarker(m, getProject())))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<Marker> getSessionModuleMarkers()
|
||||
{
|
||||
String moduleId = Path.ROOT.append(getTestConfigurationName()).append(SESSION_MODULE_FILE_NAME).toString();
|
||||
List<Marker> markers = List.of(markerManager.getMarkers(getProject().getWorkspaceProject(), moduleId));
|
||||
|
||||
String chekcId = getCheckId();
|
||||
assertNotNull(chekcId);
|
||||
|
||||
return markers.stream()
|
||||
.filter(m -> chekcId.equals(getCheckIdFromMarker(m, getProject())))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>AccessibilityAtClient</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
|
||||
<nature>com._1c.g5.v8.dt.core.V8ConfigurationNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
@ -0,0 +1,2 @@
|
||||
Manifest-Version: 1.0
|
||||
Runtime-Version: 8.3.19
|
@ -0,0 +1,24 @@
|
||||
|
||||
Procedure Noncompiant() Export
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
#If Server Or ThickClientOrdinaryApplication Or ExternalConnection Then
|
||||
|
||||
Procedure ChoiceDataGetProcessing(ChoiceData, Parameters, StandardProcessing)
|
||||
// Non-complaint
|
||||
EndProcedure
|
||||
|
||||
Procedure Compiant() Export
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
#EndIf
|
||||
|
||||
Procedure FormGetProcessing(FormType, Parameters, SelectedForm, AdditionalInformation, StandardProcessing)
|
||||
// Complaint
|
||||
EndProcedure
|
||||
|
||||
Procedure Noncompiant2() Export
|
||||
// empty
|
||||
EndProcedure
|
@ -0,0 +1,29 @@
|
||||
|
||||
Var moduleVar;
|
||||
|
||||
|
||||
Procedure BeforeDelete(Cancel)
|
||||
// Non-compliant
|
||||
EndProcedure
|
||||
|
||||
|
||||
Procedure Noncompiant() Export
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
#If Server Or ThickClientOrdinaryApplication Or ExternalConnection Then
|
||||
|
||||
Procedure OnWrite(Cancel)
|
||||
// Compliant
|
||||
EndProcedure
|
||||
|
||||
Procedure Compiant() Export
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
#Else
|
||||
Raise NStr("en = 'Invalid object call on the client.'");
|
||||
#EndIf
|
||||
|
||||
|
||||
moduleVar = Undefined;
|
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ae2ab0d7-8ff2-47c9-9785-4fc6d9952479">
|
||||
<producedTypes>
|
||||
<objectType typeId="2d3b3c93-0355-4d8a-88f0-223cd16fdd13" valueTypeId="c5b80f0c-a916-4fe7-927f-f03d11570346"/>
|
||||
<refType typeId="f80a1db2-6e25-42d2-8d2d-46e203ceba11" valueTypeId="27b96522-0509-42d1-a9da-3d53f1eebd63"/>
|
||||
<selectionType typeId="fd8d69c7-90c6-4179-8e2b-5e94bc646999" valueTypeId="dcc8de93-1bde-4ca9-b4c1-941bde942174"/>
|
||||
<listType typeId="42114f4b-4c08-4e7b-ac39-ccdc8be6f2b5" valueTypeId="6dcfd1ae-ca57-429f-813b-cd0590001736"/>
|
||||
<managerType typeId="6477b8f1-ad26-46d9-8af2-c530999a0b0f" valueTypeId="1db39cbc-3397-4827-8b71-36f95c5852e7"/>
|
||||
</producedTypes>
|
||||
<name>Products</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Products</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<inputByString>Catalog.Products.StandardAttribute.Code</inputByString>
|
||||
<inputByString>Catalog.Products.StandardAttribute.Description</inputByString>
|
||||
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
|
||||
<createOnInput>Use</createOnInput>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<levelCount>2</levelCount>
|
||||
<foldersOnTop>true</foldersOnTop>
|
||||
<codeLength>9</codeLength>
|
||||
<descriptionLength>25</descriptionLength>
|
||||
<codeType>String</codeType>
|
||||
<codeAllowedLength>Variable</codeAllowedLength>
|
||||
<checkUnique>true</checkUnique>
|
||||
<autonumbering>true</autonumbering>
|
||||
<defaultPresentation>AsDescription</defaultPresentation>
|
||||
<editType>InDialog</editType>
|
||||
<choiceMode>BothWays</choiceMode>
|
||||
</mdclass:Catalog>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dbf807c7-3403-46ec-9438-762f95339f9a">
|
||||
<name>AccessibilityAtClient</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Accessibility at client</value>
|
||||
</synonym>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="1e032eac-af6d-4142-b2db-503007b97787"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="18edc1eb-82c8-4108-b865-48d3eaf60ad5"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="4e1e2046-252a-4dc4-a7e3-9d81d74a8826"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="0d9f0854-b8ca-4f36-ac09-1492932cbe68"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="6d85c977-6f19-43ea-b8da-40abee52f24b"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="d40728f5-9b55-40dc-912f-25a2a1e8b48b"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="a22e504a-45dc-4a29-80a4-b3acca1c431b"/>
|
||||
<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="5671d618-72ac-4af6-beea-0a1feb9a95c4">
|
||||
<name>English</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>English</value>
|
||||
</synonym>
|
||||
<languageCode>en</languageCode>
|
||||
</languages>
|
||||
<catalogs>Catalog.Products</catalogs>
|
||||
</mdclass:Configuration>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,12 @@
|
||||
|
||||
#If Server Or ThickClientOrdinaryApplication Or ExternalConnection Then
|
||||
|
||||
Procedure SessionParametersSetting(RequiredParameters)
|
||||
// empty
|
||||
EndProcedure
|
||||
|
||||
#EndIf
|
||||
|
||||
Procedure Noncompiant() Export
|
||||
// empty
|
||||
EndProcedure
|
Loading…
Reference in New Issue
Block a user