From 92fcae7f4bab43684967de8614553bcbacb6187b Mon Sep 17 00:00:00 2001 From: Artem Iliukhin Date: Wed, 5 Jan 2022 14:26:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=8D=D0=BA=D1=81=D0=BF=D0=BE=D1=80=D1=82=D0=BD=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83=D1=80=D0=B0=20=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B2=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B5=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../export-method-in-command-form-module.md | 24 +++ .../export-method-in-command-form-module.md | 25 +++ bundles/com.e1c.v8codestyle.bsl/plugin.xml | 4 + .../ExportMethodInCommandFormModuleCheck.java | 148 ++++++++++++++++ .../e1c/v8codestyle/bsl/check/Messages.java | 8 + .../v8codestyle/bsl/check/messages.properties | 8 + .../bsl/check/messages_ru.properties | 8 + ...ortMethodInCommandFormModuleCheckTest.java | 165 ++++++++++++++++++ .../.project | 18 ++ .../org.eclipse.core.resources.prefs | 2 + .../DT-INF/PROJECT.PMF | 2 + .../Commands/Command/CommandModule.bsl | 10 ++ .../Commands/TestCommand/CommandModule.bsl | 4 + .../Products/Forms/ItemForm/Form.form | 143 +++++++++++++++ .../Products/Forms/ItemForm/Module.bsl | 5 + .../src/Catalogs/Products/Products.mdo | 61 +++++++ .../CommonCommand/CommandModule.bsl | 4 + .../CommonCommand/CommonCommand.mdo | 10 ++ .../CommonCommand1/CommandModule.bsl | 12 ++ .../CommonCommand1/CommonCommand1.mdo | 10 ++ .../src/Configuration/CommandInterface.cmi | 2 + .../src/Configuration/Configuration.mdo | 44 +++++ .../MainSectionCommandInterface.cmi | 2 + 24 files changed, 720 insertions(+) create mode 100644 bundles/com.e1c.v8codestyle.bsl/markdown/export-method-in-command-form-module.md create mode 100644 bundles/com.e1c.v8codestyle.bsl/markdown/ru/export-method-in-command-form-module.md create mode 100644 bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ExportMethodInCommandFormModuleCheck.java create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ExportMethodInCommandFormModuleCheckTest.java create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.project create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.settings/org.eclipse.core.resources.prefs create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/DT-INF/PROJECT.PMF create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/Command/CommandModule.bsl create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/TestCommand/CommandModule.bsl create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Form.form create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Module.bsl create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Products.mdo create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommandModule.bsl create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommonCommand.mdo create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommandModule.bsl create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommonCommand1.mdo create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/CommandInterface.cmi create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/Configuration.mdo create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/MainSectionCommandInterface.cmi diff --git a/CHANGELOG.md b/CHANGELOG.md index 895615e6..835e1c69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,7 @@ 12. Секция возвращаемого значения документирующего комментария содержит корректные типы 13. Определение типа документирующего комментария - Исправлен идентификатор проверки тип в строгой типизации: `doc-comment-field-type` -> `doc-comment-field-type-strict` +- Ограничения на использование экспортных процедур и функций в модулях команд и форм #### Запросы diff --git a/bundles/com.e1c.v8codestyle.bsl/markdown/export-method-in-command-form-module.md b/bundles/com.e1c.v8codestyle.bsl/markdown/export-method-in-command-form-module.md new file mode 100644 index 00000000..02aa1ab0 --- /dev/null +++ b/bundles/com.e1c.v8codestyle.bsl/markdown/export-method-in-command-form-module.md @@ -0,0 +1,24 @@ +# Restrictions on the use of export procedures and functions in a command and form modules + +Do not embed export procedures and functions in modules of commands and forms. +You cannot address such modules from external code, so embedded export procedures and functions become dysfunctional. + +## Noncompliant Code Example + +```bsl +&AtClient +Procedure CommandProcessing(CommandParameter, CommandExecuteParameters) Export +EndProcedure +``` + +## Compliant Solution + +```bsl +&AtClient +Procedure CommandProcessing(CommandParameter, CommandExecuteParameters) +EndProcedure +``` + +## See + +- [Restrictions on the use of export procedures and functions](https://support.1ci.com/hc/en-us/articles/360011002940-Restrictions-on-the-use-of-export-procedures-and-functions) diff --git a/bundles/com.e1c.v8codestyle.bsl/markdown/ru/export-method-in-command-form-module.md b/bundles/com.e1c.v8codestyle.bsl/markdown/ru/export-method-in-command-form-module.md new file mode 100644 index 00000000..2ae8a6af --- /dev/null +++ b/bundles/com.e1c.v8codestyle.bsl/markdown/ru/export-method-in-command-form-module.md @@ -0,0 +1,25 @@ +# Ограничения на использование экспортных процедур и функций в модуле команд и форм + +Не следует размещать экспортные процедуры и функции в модулях команд и +форм. К этим модулям нет возможности обращаться из внешнего по +отношению к ним кода, поэтому экспортные процедуры и функции в этих +модулях не имеют смысла. + +## Неправильно + +```bsl +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Экспорт +КонецПроцедуры +``` + +## Правильно + +```bsl +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) +КонецПроцедуры +``` + +## См. + +- [Ограничения на использование экспортных процедур и функций](https://its.1c.ru/db/v8std#content:544:hdoc) diff --git a/bundles/com.e1c.v8codestyle.bsl/plugin.xml b/bundles/com.e1c.v8codestyle.bsl/plugin.xml index 88df4daa..50a85fa2 100644 --- a/bundles/com.e1c.v8codestyle.bsl/plugin.xml +++ b/bundles/com.e1c.v8codestyle.bsl/plugin.xml @@ -222,6 +222,10 @@ category="com.e1c.v8codestyle.bsl" class="com.e1c.v8codestyle.bsl.check.NewColorCheck"> + + exportMethods = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + for (Method method : module.allMethods()) + { + if (monitor.isCanceled()) + { + return; + } + + if (method.isExport()) + { + exportMethods.put(method.getName(), method); + } + } + + String parameterMethodNames = parameters.getString(PARAMETER_NOTIFY_METHODS_EXCLUSION); + if (!StringUtils.isEmpty(parameterMethodNames)) + { + List list = List.of(parameterMethodNames.split(",\\s*")); //$NON-NLS-1$ + list.forEach(exportMethods::remove); + } + + if (exportMethods.isEmpty()) + { + return; + } + + for (TreeIterator iterator = module.eAllContents(); iterator.hasNext();) + { + if (monitor.isCanceled()) + { + return; + } + + EObject containedObject = iterator.next(); + if (containedObject instanceof OperatorStyleCreator + && TYPE_NAME.equals(McoreUtil.getTypeName(((OperatorStyleCreator)containedObject).getType()))) + { + List params = ((OperatorStyleCreator)containedObject).getParams(); + if (!params.isEmpty() && params.get(0) instanceof StringLiteral) + { + StringLiteral literal = (StringLiteral)params.get(0); + List lines = literal.lines(true); + if (!lines.isEmpty()) + { + exportMethods.remove(lines.get(0)); + if (exportMethods.isEmpty()) + { + return; + } + } + } + } + } + + for (Method method : exportMethods.values()) + { + resultAceptor.addIssue( + Messages.ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_result, method, + BslPackage.Literals.METHOD__EXPORT); + } + } +} diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/Messages.java b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/Messages.java index e78696c9..23515942 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/Messages.java +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/Messages.java @@ -69,6 +69,14 @@ final class Messages public static String EventHandlerBooleanParamCheck_title; + public static String ExportMethodInCommandFormModuleCheck_Notify_description_methods; + + public static String ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_des; + + public static String ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_result; + + public static String ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module; + public static String ModuleStructureTopRegionCheck_description; public static String ModuleStructureTopRegionCheck_error_message; diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages.properties b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages.properties index 7b97253c..c4bd7e74 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages.properties +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages.properties @@ -70,6 +70,14 @@ EventHandlerBooleanParamCheck_description = Use event handler boolean parameter EventHandlerBooleanParamCheck_title = Use event handler boolean parameter +ExportMethodInCommandFormModuleCheck_Notify_description_methods=Comma-separated list of excluded notification method names + +ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_des=Do not embed export procedures and functions in modules of commands and forms. You cannot address such modules from external code, so embedded export procedures and functions become dysfunctional. + +ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_result=Do not embed export procedures and functions in modules of commands and forms. You cannot address such modules from external code, so embedded export procedures and functions become dysfunctional. + +ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module=Restrictions on the use of export procedures and functions + FormModuleMissingPragmaCheck_Missing_compilation_directives = Missing compilation directives FormModuleMissingPragmaCheck_description = Always use compilation pragma in form module diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages_ru.properties b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages_ru.properties index cdf3d2de..ff239d84 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages_ru.properties +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/messages_ru.properties @@ -70,6 +70,14 @@ EventHandlerBooleanParamCheck_description = Использование буле EventHandlerBooleanParamCheck_title = Использование булевого параметра обработчика события +ExportMethodInCommandFormModuleCheck_Notify_description_methods=Список исключаемых имен методов оповещения, разделенные запятой + +ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_des=Не следует размещать экспортные процедуры и функции в модулях команд и форм. К этим модулям нет возможности обращаться из внешнего по отношению к ним кода, поэтому экспортные процедуры и функции в этих модулях не имеют смысла. + +ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_result=Не следует размещать экспортные процедуры и функции в модулях команд и форм. К этим модулям нет возможности обращаться из внешнего по отношению к ним кода, поэтому экспортные процедуры и функции в этих модулях не имеют смысла. + +ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module=Ограничения на использование экспортных процедур и функций + FormModuleMissingPragmaCheck_Missing_compilation_directives = Пропущена директива компиляции FormModuleMissingPragmaCheck_description = Всегда использовать директивы компиляции в модуле формы diff --git a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ExportMethodInCommandFormModuleCheckTest.java b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ExportMethodInCommandFormModuleCheckTest.java new file mode 100644 index 00000000..ffb67a07 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ExportMethodInCommandFormModuleCheckTest.java @@ -0,0 +1,165 @@ +/******************************************************************************* + * Copyright (C) 2022, 1C-Soft LLC and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * 1C-Soft LLC - initial API and implementation + *******************************************************************************/ +package com.e1c.v8codestyle.bsl.check.itests; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; + +import com._1c.g5.v8.bm.core.IBmObject; +import com._1c.g5.v8.dt.bsl.model.Method; +import com._1c.g5.v8.dt.bsl.model.Module; +import com._1c.g5.v8.dt.core.platform.IDtProject; +import com._1c.g5.v8.dt.form.model.Form; +import com._1c.g5.v8.dt.metadata.mdclass.BasicCommand; +import com._1c.g5.v8.dt.metadata.mdclass.Catalog; +import com._1c.g5.v8.dt.validation.marker.Marker; +import com.e1c.g5.v8.dt.testing.check.SingleProjectReadOnlyCheckTestBase; +import com.e1c.v8codestyle.bsl.check.ExportMethodInCommandFormModuleCheck; + +/** + * Tests for {@link ExportMethodInCommandFormModuleCheck} check. + * + * @author Artem Iliukhin + */ +public class ExportMethodInCommandFormModuleCheckTest + extends SingleProjectReadOnlyCheckTestBase +{ + + private static final String CHECK_ID = "export-method-in-command-form-module"; + private static final String MESSAGE = + "Do not embed export procedures and functions in modules of commands and forms. " + + "You cannot address such modules from external code, " + + "so embedded export procedures and functions become dysfunctional."; + private static final String PROJECT_NAME = "ExportMethodInCommandFormModuleCheck"; + private static final String FQN_CATALOG = "Catalog.Products"; + private static final String FQN_CATALOG_FORM = "Catalog.Products.Form.ItemForm.Form"; + private static final String FQN_COMMAND = "CommonCommand.CommonCommand"; + private static final String FQN_COMMAND_NOTIFY = "CommonCommand.CommonCommand1"; + + @Override + protected String getTestConfigurationName() + { + return PROJECT_NAME; + } + + @Test + public void testForm() throws Exception + { + IDtProject dtProject = dtProjectManager.getDtProject(PROJECT_NAME); + assertNotNull(dtProject); + + IBmObject mdObject = getTopObjectByFqn(FQN_CATALOG_FORM, dtProject); + assertTrue(mdObject instanceof Form); + Module module = ((Form)mdObject).getModule(); + assertNotNull(module); + + List methods = module.allMethods(); + assertEquals(1, methods.size()); + + Method noncompliantMethod = methods.get(0); + Marker marker = getFirstMarker(CHECK_ID, noncompliantMethod, dtProject); + assertNotNull(marker); + assertEquals(MESSAGE, marker.getMessage()); + } + + @Test + public void testCommonCommand() throws Exception + { + IDtProject dtProject = dtProjectManager.getDtProject(PROJECT_NAME); + assertNotNull(dtProject); + + IBmObject mdObject = getTopObjectByFqn(FQN_COMMAND, dtProject); + assertTrue(mdObject instanceof BasicCommand); + Module module = ((BasicCommand)mdObject).getCommandModule(); + assertNotNull(module); + + List methods = module.allMethods(); + assertEquals(1, methods.size()); + + Method noncompliantMethod = methods.get(0); + Marker marker = getFirstMarker(CHECK_ID, noncompliantMethod, dtProject); + assertNotNull(marker); + assertEquals(MESSAGE, marker.getMessage()); + } + + @Test + public void testCommonCommandNotify() throws Exception + { + IDtProject dtProject = dtProjectManager.getDtProject(PROJECT_NAME); + assertNotNull(dtProject); + + IBmObject mdObject = getTopObjectByFqn(FQN_COMMAND_NOTIFY, dtProject); + assertTrue(mdObject instanceof BasicCommand); + Module module = ((BasicCommand)mdObject).getCommandModule(); + assertNotNull(module); + + List methods = module.allMethods(); + assertEquals(2, methods.size()); + + Method method = methods.get(1); + Marker marker = getFirstMarker(CHECK_ID, method, dtProject); + assertNull(marker); + } + + @Test + public void testCatalogCommand() throws Exception + { + IDtProject dtProject = dtProjectManager.getDtProject(PROJECT_NAME); + assertNotNull(dtProject); + + IBmObject mdObject = getTopObjectByFqn(FQN_CATALOG, dtProject); + assertTrue(mdObject instanceof Catalog); + assertEquals(2, ((Catalog)mdObject).getCommands().size()); + BasicCommand command = ((Catalog)mdObject).getCommands().get(0); + assertTrue(command instanceof BasicCommand); + Module module = command.getCommandModule(); + assertNotNull(module); + + List methods = module.allMethods(); + assertEquals(1, methods.size()); + + Method noncompliantMethod = methods.get(0); + Marker marker = getFirstMarker(CHECK_ID, noncompliantMethod, dtProject); + assertNotNull(marker); + assertEquals(MESSAGE, marker.getMessage()); + } + + @Test + public void testCatalogCommandNotify() throws Exception + { + IDtProject dtProject = dtProjectManager.getDtProject(PROJECT_NAME); + assertNotNull(dtProject); + + IBmObject mdObject = getTopObjectByFqn(FQN_CATALOG, dtProject); + assertTrue(mdObject instanceof Catalog); + assertEquals(2, ((Catalog)mdObject).getCommands().size()); + BasicCommand command = ((Catalog)mdObject).getCommands().get(1); + assertTrue(command instanceof BasicCommand); + Module module = command.getCommandModule(); + assertNotNull(module); + + List methods = module.allMethods(); + assertEquals(2, methods.size()); + + Method method = methods.get(1); + Marker marker = getFirstMarker(CHECK_ID, method, dtProject); + assertNull(marker); + } + +} diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.project b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.project new file mode 100644 index 00000000..4ab5dca2 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.project @@ -0,0 +1,18 @@ + + + ExportMethodInCommandFormModuleCheck + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + com._1c.g5.v8.dt.core.V8ConfigurationNature + + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.settings/org.eclipse.core.resources.prefs b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..99f26c02 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/DT-INF/PROJECT.PMF b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/DT-INF/PROJECT.PMF new file mode 100644 index 00000000..6835f1cd --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/DT-INF/PROJECT.PMF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 +Runtime-Version: 8.3.19 diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/Command/CommandModule.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/Command/CommandModule.bsl new file mode 100644 index 00000000..4dac7bbb --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/Command/CommandModule.bsl @@ -0,0 +1,10 @@ + +&AtClient +Procedure CommandProcessing(CommandParameter, CommandExecuteParameters) + ShowQueryBox(New NotifyDescription("OfferDiscussionsCompletion", ThisObject), "", QuestionDialogMode.YesNo); +EndProcedure + +&AtClient +Procedure OfferDiscussionsCompletion(Result, Param) Export + //... +EndProcedure diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/TestCommand/CommandModule.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/TestCommand/CommandModule.bsl new file mode 100644 index 00000000..da0b04f9 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Commands/TestCommand/CommandModule.bsl @@ -0,0 +1,4 @@ + +&AtClient +Procedure CommandProcessing(CommandParameter, CommandExecuteParameters) Export +EndProcedure diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Form.form b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Form.form new file mode 100644 index 00000000..91bfdb7e --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Form.form @@ -0,0 +1,143 @@ + + + + Code + 1 + true + true + + true + + + Object.Code + + + CodeExtendedTooltip + 3 + true + true + + true + + Label + true + true + + Left + + + + CodeContextMenu + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Description + 4 + true + true + + true + + + Object.Description + + + DescriptionExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + DescriptionContextMenu + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + FormCommandBar + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Object + 1 + + CatalogObject.Products + + + true + + + true + +
true
+ true +
+ + + + + +
diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Module.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Module.bsl new file mode 100644 index 00000000..f5c7302b --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Forms/ItemForm/Module.bsl @@ -0,0 +1,5 @@ + +&AtClient +Procedure Test() Export + +EndProcedure \ No newline at end of file diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Products.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Products.mdo new file mode 100644 index 00000000..463e6d71 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Catalogs/Products/Products.mdo @@ -0,0 +1,61 @@ + + + + + + + + + + Products + + en + Products + + true + Catalog.Products.StandardAttribute.Code + Catalog.Products.StandardAttribute.Description + DontUse + Use + Managed + Use + 2 + true + 9 + 25 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.Products.Form.ItemForm + + ItemForm + + en + Item form + + PersonalComputer + MobileDevice + + + TestCommand + + en + Test command + + ActionsPanelTools + Auto + + + Command + + en + Command + + ActionsPanelTools + Auto + + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommandModule.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommandModule.bsl new file mode 100644 index 00000000..da0b04f9 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommandModule.bsl @@ -0,0 +1,4 @@ + +&AtClient +Procedure CommandProcessing(CommandParameter, CommandExecuteParameters) Export +EndProcedure diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommonCommand.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommonCommand.mdo new file mode 100644 index 00000000..4e3eef4b --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand/CommonCommand.mdo @@ -0,0 +1,10 @@ + + + CommonCommand + + en + Common command + + ActionsPanelTools + Auto + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommandModule.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommandModule.bsl new file mode 100644 index 00000000..a95d8f65 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommandModule.bsl @@ -0,0 +1,12 @@ + +&AtClient +Procedure CommandProcessing(CommandParameter, CommandExecuteParameters) + NotifyDescription = New NotifyDescription("OfferDiscussionsCompletion", ThisObject); + ShowQueryBox(NotifyDescription, "", QuestionDialogMode.YesNo); +EndProcedure + +&AtClient +Procedure OfferDiscussionsCompletion(Result, Param) Export + //... +EndProcedure + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommonCommand1.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommonCommand1.mdo new file mode 100644 index 00000000..723d064f --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/CommonCommands/CommonCommand1/CommonCommand1.mdo @@ -0,0 +1,10 @@ + + + CommonCommand1 + + en + Common command1 + + ActionsPanelTools + Auto + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/CommandInterface.cmi b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/CommandInterface.cmi new file mode 100644 index 00000000..0cf6de8a --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/CommandInterface.cmi @@ -0,0 +1,2 @@ + + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/Configuration.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/Configuration.mdo new file mode 100644 index 00000000..25a4a8d2 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/Configuration.mdo @@ -0,0 +1,44 @@ + + + ExportMethodInCommandFormModuleCheck + + en + ExportMethodInCommandFormModuleCheck + + + + + + + + + 8.3.21 + ManagedApplication + PersonalComputer + + + true + + + OSBackup + true + + + Language.English + Managed + NotAutoFree + DontUse + DontUse + 8.3.21 + + English + + en + English + + en + + CommonCommand.CommonCommand + CommonCommand.CommonCommand1 + Catalog.Products + diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/MainSectionCommandInterface.cmi b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/MainSectionCommandInterface.cmi new file mode 100644 index 00000000..0cf6de8a --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ExportMethodInCommandFormModuleCheck/src/Configuration/MainSectionCommandInterface.cmi @@ -0,0 +1,2 @@ + +