mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2024-11-28 09:33:06 +02:00
parent
43ba74d159
commit
39169c1581
@ -14,6 +14,7 @@
|
||||
- Реквизит "Комментарий" имеет корректный тип
|
||||
- В документе, предполагающем проведение, не установлен флаг "Привилегированный режим при проведении / отмене проведения"
|
||||
- Проверка наличия буквы "ё" в имени, синониме или комментарии объекта метаданных
|
||||
- В функциональной опции не установлен флаг "Привилегированный режим при получении"
|
||||
|
||||
#### Формы
|
||||
|
||||
|
@ -0,0 +1,19 @@
|
||||
# Functional option don't set flag "Privileged get mode"
|
||||
|
||||
1.8. All functional options must have the "Privileged mode upon receiving"
|
||||
check boxes selected.
|
||||
|
||||
Exception: a configuration can include parameterized functional options, for which developers
|
||||
provide for differences in values obtained by users with different rights.
|
||||
Example: There is a parameterized functional option UseCurrencyUponSettlementsWithPersonnel,
|
||||
which is parameterized by the company. If a user receives its value in the context of their rights,
|
||||
they will not see the Currency field in the document if they do not have a company where currency
|
||||
accounting is applied.
|
||||
|
||||
## Noncompliant Code Example
|
||||
|
||||
## Compliant Solution
|
||||
|
||||
## See
|
||||
|
||||
[Configuring roles and access rights](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_Development_Standards/Setting_data_access_rights/Configuring_roles_and_access_rights/)
|
@ -0,0 +1,21 @@
|
||||
# В функциональной опции не установлен флаг "Привилегированный режим при получении"
|
||||
|
||||
Во всех функциональных опциях должны быть выставлены флаги
|
||||
«Привилегированный режим при получении».
|
||||
|
||||
Исключение: в конфигурации могут быть предусмотрены параметризированные
|
||||
ФО, для которых разработчик специально предусматривает различия в
|
||||
получаемых значениях пользователями с разными правами.
|
||||
Пример: Есть параметризованная ФО
|
||||
ИспользватьВалютуПриРасчетеСПерсоналом, которая параметризуется
|
||||
организацией. Если пользователь будет получать ее значение в контексте
|
||||
своих прав, то он не увидит поле «валюта» в документе, если у него нет
|
||||
ни одной организации, где применяется валютный учет.
|
||||
|
||||
## Неправильно
|
||||
|
||||
## Правильно
|
||||
|
||||
## См.
|
||||
|
||||
[Настройка ролей и прав доступа](https://its.1c.ru/db/v8std#content:689:hdoc:1.8)
|
@ -126,6 +126,10 @@
|
||||
category="com.e1c.v8codestyle.md"
|
||||
class="com.e1c.v8codestyle.md.check.MdObjectAttributeCommentNotExistCheck">
|
||||
</check>
|
||||
<check
|
||||
category="com.e1c.v8codestyle.md"
|
||||
class="com.e1c.v8codestyle.md.check.FunctionalOptionPrivilegedGetModeCheck">
|
||||
</check>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
||||
</plugin>
|
||||
|
@ -0,0 +1,81 @@
|
||||
/*******************************************************************************
|
||||
* 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.md.check;
|
||||
|
||||
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION;
|
||||
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION__PRIVILEGED_GET_MODE;
|
||||
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION__LOCATION;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
|
||||
import com._1c.g5.v8.dt.metadata.mdclass.FunctionalOption;
|
||||
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.md.CorePlugin;
|
||||
|
||||
/**
|
||||
* Check functional option use privileged get mode.
|
||||
* @author Vadim Goncharov
|
||||
*/
|
||||
public class FunctionalOptionPrivilegedGetModeCheck
|
||||
extends BasicCheck
|
||||
{
|
||||
|
||||
private static final String CHECK_ID = "functional-option-privileged-get-mode"; //$NON-NLS-1$
|
||||
|
||||
public FunctionalOptionPrivilegedGetModeCheck()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCheckId()
|
||||
{
|
||||
return CHECK_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureCheck(CheckConfigurer builder)
|
||||
{
|
||||
builder.title(Messages.FunctionalOptionPrivilegedGetModeCheck_title)
|
||||
.description(Messages.FunctionalOptionPrivilegedGetModeCheck_description)
|
||||
.complexity(CheckComplexity.NORMAL)
|
||||
.severity(IssueSeverity.MAJOR)
|
||||
.issueType(IssueType.WARNING)
|
||||
.extension(new StandardCheckExtension(689, getCheckId(), CorePlugin.PLUGIN_ID))
|
||||
.extension(new SkipAdoptedInExtensionMdObjectExtension())
|
||||
.topObject(FUNCTIONAL_OPTION)
|
||||
.checkTop()
|
||||
.features(FUNCTIONAL_OPTION__PRIVILEGED_GET_MODE, FUNCTIONAL_OPTION__LOCATION);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
{
|
||||
|
||||
FunctionalOption fo = (FunctionalOption)object;
|
||||
if (!monitor.isCanceled() && fo.getLocation() != null && !fo.isPrivilegedGetMode())
|
||||
{
|
||||
resultAcceptor.addIssue(Messages.FunctionalOptionPrivilegedGetModeCheck_message, fo,
|
||||
FUNCTIONAL_OPTION__PRIVILEGED_GET_MODE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -72,6 +72,9 @@ final class Messages
|
||||
public static String ExtensionMdObjectNamePrefixCheck_Description;
|
||||
public static String ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix;
|
||||
public static String ExtensionMdObjectNamePrefixCheck_Title;
|
||||
public static String FunctionalOptionPrivilegedGetModeCheck_description;
|
||||
public static String FunctionalOptionPrivilegedGetModeCheck_message;
|
||||
public static String FunctionalOptionPrivilegedGetModeCheck_title;
|
||||
public static String MdObjectNameLength_description;
|
||||
public static String MdObjectNameLength_Maximum_name_length_description;
|
||||
public static String MdObjectNameLength_message;
|
||||
|
@ -73,6 +73,12 @@ ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix = The object "{0}
|
||||
|
||||
ExtensionMdObjectNamePrefixCheck_Title = Extension object name does not have extension prefix
|
||||
|
||||
FunctionalOptionPrivilegedGetModeCheck_message = Functional option don't use privileged get mode
|
||||
|
||||
FunctionalOptionPrivilegedGetModeCheck_description = Functional option don't use privileged get mode
|
||||
|
||||
FunctionalOptionPrivilegedGetModeCheck_title = Functional option don't use privileged get mode
|
||||
|
||||
MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled = Neither Object presentation nor List presentation is not filled
|
||||
|
||||
MdListObjectPresentationCheck_decription = Neither Object presentation nor List presentation is not filled
|
||||
|
@ -60,20 +60,26 @@ DbObjectRefNonRefTypesCheck_Ref_and_other = Реквизиты составно
|
||||
|
||||
DbObjectRefNonRefTypesCheck_Title = Использование составного типа, содержащего ссылочные и не ссылочный тип вместе.
|
||||
|
||||
DocumentPostInPrivilegedModeCheck_title = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
|
||||
|
||||
DocumentPostInPrivilegedModeCheck_description = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
|
||||
|
||||
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении"
|
||||
|
||||
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при отмене проведения"
|
||||
|
||||
DocumentPostInPrivilegedModeCheck_title = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
|
||||
|
||||
ExtensionMdObjectNamePrefixCheck_Description = Имя объекта в расширении не содержит префикс расширения
|
||||
|
||||
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix = Имя объекта "{0}" должно содержать префикс "{1}"
|
||||
|
||||
ExtensionMdObjectNamePrefixCheck_Title = Имя объекта в расширении должно содержать префикс расширения
|
||||
|
||||
FunctionalOptionPrivilegedGetModeCheck_message = В функциональной опции не установлен флаг "Привилегированный режим при получении"
|
||||
|
||||
FunctionalOptionPrivilegedGetModeCheck_description = В функциональной опции не установлен флаг "Привилегированный режим при получении"
|
||||
|
||||
FunctionalOptionPrivilegedGetModeCheck_title = В функциональной опции не установлен флаг "Привилегированный режим при получении"
|
||||
|
||||
MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled = Не заполнено ни представление объекта, ни представление списка
|
||||
|
||||
MdListObjectPresentationCheck_decription = Не заполнено ни представление объекта, ни представление списка
|
||||
|
@ -0,0 +1,63 @@
|
||||
/*******************************************************************************
|
||||
* 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.md.check.itests;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com._1c.g5.v8.dt.core.platform.IDtProject;
|
||||
import com._1c.g5.v8.dt.validation.marker.Marker;
|
||||
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
|
||||
import com.e1c.v8codestyle.md.check.FunctionalOptionPrivilegedGetModeCheck;
|
||||
|
||||
/**
|
||||
* The test class for {@link FunctionalOptionPrivilegedGetModeCheck}
|
||||
* @author Vadim Goncharov
|
||||
*/
|
||||
public class FunctionalOptionPrivilegedGetModeTest
|
||||
extends CheckTestBase
|
||||
{
|
||||
|
||||
private static final String CHECK_ID = "functional-option-privileged-get-mode";
|
||||
|
||||
private static final String PROJECT_NAME = "FunctionalOptionPrivilegedGetMode";
|
||||
|
||||
/**
|
||||
* Test functional options use privileged get mode check.
|
||||
*
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
@Test
|
||||
public void testFunctionalOptionsUsePrivilegedGetModeCheck() throws Exception
|
||||
{
|
||||
|
||||
IDtProject project = openProjectAndWaitForValidationFinish(PROJECT_NAME);
|
||||
assertNotNull(project);
|
||||
|
||||
long id = getTopObjectIdByFqn("FunctionalOption.UseOrganisations", project);
|
||||
Marker marker = getFirstMarker(CHECK_ID, id, project);
|
||||
assertNotNull(marker);
|
||||
|
||||
id = getTopObjectIdByFqn("FunctionalOption.UseWH", project);
|
||||
marker = getFirstMarker(CHECK_ID, id, project);
|
||||
assertNull(marker);
|
||||
|
||||
id = getTopObjectIdByFqn("FunctionalOption.UseFinPlan", project);
|
||||
marker = getFirstMarker(CHECK_ID, id, project);
|
||||
assertNull(marker);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>FunctionalOptionPrivilegedGetMode</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,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>
|
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1b741952-6feb-4d71-86bc-e42c8829502c">
|
||||
<name>FunctionalOptionPrivilegedGetMode</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Functional option privileged get mode</value>
|
||||
</synonym>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="92e41153-3388-4488-9109-6ac2f2da2f85"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="0e61eb98-13c9-4f17-8d8b-d7c3db1f1cf9"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5feda00b-2a34-4ef7-94c7-a42d2c1b3383"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="1394d1c5-e816-4ebe-ad8e-0a9e7c010de0"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="87d1c60c-d799-4f9e-a5c2-6fafb1ca5de6"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="f12d9825-2e11-4907-9195-584011211b6c"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="aea3f88c-6d77-42c3-a856-d730b30708c4"/>
|
||||
<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="ce819e23-56d0-46b5-a0d6-c1db9d31d2e1">
|
||||
<name>English</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>English</value>
|
||||
</synonym>
|
||||
<languageCode>en</languageCode>
|
||||
</languages>
|
||||
<functionalOptions>FunctionalOption.UseOrganisations</functionalOptions>
|
||||
<functionalOptions>FunctionalOption.UseWH</functionalOptions>
|
||||
<functionalOptions>FunctionalOption.UseFinPlan</functionalOptions>
|
||||
<constants>Constant.UseOrganisations</constants>
|
||||
<constants>Constant.UseWH</constants>
|
||||
</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,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e07fba1f-19d5-4fff-9993-6299a77c042d">
|
||||
<producedTypes>
|
||||
<managerType typeId="d332705f-f367-40a0-aeb8-5208d89103ff" valueTypeId="4c54d407-778b-4bd8-813d-0787c7ea9161"/>
|
||||
<valueManagerType typeId="34141bfe-6a5e-4814-88e8-ade8e4d7cad8" valueTypeId="24efdeb7-692d-47e3-b1fa-b254d9f99a6f"/>
|
||||
<valueKeyType typeId="2e5657de-1309-41a1-9a61-60fe3ced7071" valueTypeId="69004c7f-769f-4a91-865c-1b55d614fd45"/>
|
||||
</producedTypes>
|
||||
<name>UseOrganisations</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Use organisations</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Boolean</types>
|
||||
</type>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</mdclass:Constant>
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d123187a-ac23-4b47-8e00-eaba44eda1f1">
|
||||
<producedTypes>
|
||||
<managerType typeId="97a35551-f2d4-454f-8b24-695a4d5148d9" valueTypeId="f84c9c7a-2647-47de-bd62-20189d4ec401"/>
|
||||
<valueManagerType typeId="49cc1fcf-c475-4343-a5c4-03051b6e5c6a" valueTypeId="986ff5cb-4fe2-4d0d-9104-5f2b5f592ab3"/>
|
||||
<valueKeyType typeId="80cca2c3-22e2-4caf-b89e-e7cf8ba38773" valueTypeId="22a98862-e390-4eb7-8c78-4763b0b5a2df"/>
|
||||
</producedTypes>
|
||||
<name>UseWH</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Use WH</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Boolean</types>
|
||||
</type>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</mdclass:Constant>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:FunctionalOption xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="272e8a2f-16e7-4a38-9839-a996471ed1fb">
|
||||
<name>UseFinPlan</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Use fin plan</value>
|
||||
</synonym>
|
||||
</mdclass:FunctionalOption>
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:FunctionalOption xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0565c7e7-395c-45f0-9edd-74f86f5e4942">
|
||||
<name>UseOrganisations</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Use organisations</value>
|
||||
</synonym>
|
||||
<location>Constant.UseOrganisations</location>
|
||||
</mdclass:FunctionalOption>
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:FunctionalOption xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="06dc6e76-1d2f-4fe8-b6fe-c0e020f288ad">
|
||||
<name>UseWH</name>
|
||||
<synonym>
|
||||
<key>en</key>
|
||||
<value>Use WH</value>
|
||||
</synonym>
|
||||
<location>Constant.UseWH</location>
|
||||
<privilegedGetMode>true</privilegedGetMode>
|
||||
</mdclass:FunctionalOption>
|
Loading…
Reference in New Issue
Block a user