1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-02-21 07:56:09 +02:00

Merge branch 'master' into edt-2023-1

This commit is contained in:
Dmitriy Marmyshev 2023-03-15 18:21:31 -07:00
commit e466f347e6
167 changed files with 3367 additions and 525 deletions

View File

@ -39,7 +39,7 @@ jobs:
sudo swapoff -a
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker image ls -aq)
# docker rmi $(docker image ls -aq) || true
df -h
- name: Cache maven repo

View File

@ -2,16 +2,50 @@
[TOC text bullet hierarchy]
## 0.4.0
## 0.5.0
### Новые проверки
#### Метаданные
- Документ не имеет реквизита "Комментарий"
- Реквизит "Комментарий" имеет корректный тип
- В документе, предполагающем проведение, не установлен флаг "Привилегированный режим при проведении / отмене проведения"
#### Формы
#### Код модулей
- В проверку использования нерекомендуемых методов (use-non-recommended-method) добавлен метод ПолучитьФорму(GetForm)
#### Запросы
#### Права ролей
### Новые быстрые исправления (Quick-fix)
### Исправленные ошибки
## 0.4.0
- Выпуск бета-версии для 1C:EDT 2022.2
### Новые проверки
#### Метаданные
- Превышена максимальная длина ресурса регистра накопления или бухгалтерии (25 знаков)
- Для глобальных модулей не следует добавлять постфикс «Клиент»
- Проверка наличия префикса расширения в имени объекта расширения.
- Общий модуль, для которого установлен признак привилегированный, должен именоваться с постфиксом "ПолныеПрава"
#### Формы
@ -20,6 +54,7 @@
#### Код модулей
- Добавление типизированного значения в не типизированную коллекцию
- Общий модуль должен иметь программный интерфейс
- Кэширование программного интерфейса
- Проверка максимального количества допустимых пустых строк
- Чтение отдельных реквизитов объекта из базы данных
@ -30,15 +65,14 @@
- Устаревшая процедура (функция) расположена вне области "УстаревшиеПроцедурыИФункции"
- Использован обработчик событий, подключаемый из кода и не содержащий префикса "Подключаемый_"
#### Запросы
#### Права ролей
### Новые быстрые исправления (Quick-fix)
- Исправление превышения максимального количества допустимых пустых строк
#### Автосортировка
- Добавлена настройка порядка сортировки. Метаданные можно сортировать по правилам конфигуратора
### Исправленные ошибки

View File

@ -39,6 +39,7 @@
| Версия | 1C:EDT | JDT для разработки | P2-репозиторий |
|--------|--------|--------------------|----------------|
| 0.5.0 | 2023.1 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.1/0.5.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.1/0.5.0/repo.zip) |
| 0.4.0 | 2022.2 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.2/0.4.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.2/0.4.0/repo.zip) |
| 0.3.0 | 2022.1 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.1/0.3.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.1/0.3.0/repo.zip) |
| 0.2.0 | 2021.3 | 2020-12 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2021.3/0.2.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2021.3/0.2.0/repo.zip) |

View File

@ -18,7 +18,7 @@
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bom</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>BOM</name>
@ -104,7 +104,7 @@
<artifact>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>default</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</artifact>
</target>
<environments>

View File

@ -12,9 +12,9 @@
# 1C-Soft LLC - initial API and implementation
#*******************************************************************************
current_version='0.3.0'
new_version='0.4.0'
next_version='0.5.0'
current_version='0.4.0'
new_version='0.5.0'
next_version='0.6.0'
find . -name 'pom.xml' -exec sed -i '' "s/${current_version}-SNAPSHOT/${new_version}-SNAPSHOT/g" {} +

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.autosort.ui;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.autosort.ui.UiPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
@ -18,6 +18,6 @@ Import-Package: com._1c.g5.v8.dt.common;version="[6.0.0,7.0.0)",
com._1c.g5.v8.dt.metadata.mdclass;version="[8.0.0,9.0.0)",
com._1c.g5.wiring;version="[2.2.0,3.0.0)",
com._1c.g5.wiring.binder;version="[1.1.0,2.0.0)",
com.e1c.v8codestyle.autosort;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.autosort;version="[0.5.0,0.6.0)",
com.google.common.base;version="[30.1.0,31.0.0)",
com.google.inject;version="[5.0.1,6.0.0)"

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.autosort.ui</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -77,6 +77,8 @@ public class AutoSortPropertyPage
private Button ascendingButton;
private Button sortOrderButton;
@Inject
public AutoSortPropertyPage(ISortService sortService)
{
@ -103,6 +105,7 @@ public class AutoSortPropertyPage
composite.setLayoutData(data);
addSortSection(composite);
addSortOrderSection(composite);
addSeparator(composite);
addTopObjectsSection(composite);
addSubordinateSection(composite);
@ -122,6 +125,7 @@ public class AutoSortPropertyPage
{
super.performDefaults();
ascendingButton.setSelection(AutoSortPreferences.DEFAULT_SORT_ASCENDING);
sortOrderButton.setSelection(AutoSortPreferences.DEFAULT_SORT_ORDER);
buttons.get(AutoSortPreferences.KEY_ALL_TOP).setSelection(AutoSortPreferences.DEFAULT_SORT);
buttons.get(AutoSortPreferences.KEY_SUBORDINATE_OBJECTS).setSelection(AutoSortPreferences.DEFAULT_SORT);
buttons.get(AutoSortPreferences.KEY_FORMS).setSelection(AutoSortPreferences.DEFAULT_SORT);
@ -150,6 +154,16 @@ public class AutoSortPropertyPage
prefs.putBoolean(AutoSortPreferences.KEY_ASCENDING, ascending);
}
boolean sortOrder = sortOrderButton.getSelection();
if (sortOrder == AutoSortPreferences.DEFAULT_SORT_ORDER)
{
prefs.remove(AutoSortPreferences.KEY_SORT_ORDER);
}
else
{
prefs.putBoolean(AutoSortPreferences.KEY_SORT_ORDER, sortOrder);
}
updateSortPreferences(prefs, AutoSortPreferences.KEY_ALL_TOP,
buttons.get(AutoSortPreferences.KEY_ALL_TOP).getSelection());
if (!buttons.get(AutoSortPreferences.KEY_ALL_TOP).getSelection())
@ -223,6 +237,8 @@ public class AutoSortPropertyPage
{
if (ascendingButton.getSelection() != prefs.getBoolean(AutoSortPreferences.KEY_ASCENDING,
AutoSortPreferences.DEFAULT_SORT_ASCENDING)
|| sortOrderButton.getSelection() != prefs.getBoolean(AutoSortPreferences.KEY_SORT_ORDER,
AutoSortPreferences.DEFAULT_SORT_ORDER)
|| !prefs.getBoolean(AutoSortPreferences.KEY_ALL_TOP, AutoSortPreferences.DEFAULT_SORT)
&& buttons.get(AutoSortPreferences.KEY_ALL_TOP).getSelection()
|| !prefs.getBoolean(AutoSortPreferences.KEY_SUBORDINATE_OBJECTS, AutoSortPreferences.DEFAULT_SORT)
@ -303,6 +319,21 @@ public class AutoSortPropertyPage
descendingButton.setSelection(!ascending);
}
private void addSortOrderSection(Composite parent)
{
Group sortGroup = new Group(parent, SWT.NONE);
sortGroup.setLayout(new RowLayout(SWT.HORIZONTAL));
toolkit.createLabel(sortGroup, Messages.AutoSortPropertyPage_Sort_order);
sortOrderButton = toolkit.createButton(sortGroup, Messages.AutoSortPropertyPage_Sort_order_natural, SWT.RADIO);
final Button asDesignerSortOrderButton =
toolkit.createButton(sortGroup, Messages.AutoSortPropertyPage_Sort_order_as_designer, SWT.RADIO);
asDesignerSortOrderButton.setSelection(true);
boolean naturalSortOrder =
prefs.getBoolean(AutoSortPreferences.KEY_SORT_ORDER, AutoSortPreferences.DEFAULT_SORT_ORDER);
sortOrderButton.setSelection(naturalSortOrder);
asDesignerSortOrderButton.setSelection(!naturalSortOrder);
}
private void addSeparator(Composite parent)
{
Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);

View File

@ -38,6 +38,9 @@ final class Messages
public static String AutoSortPropertyPage_Select_top_objects;
public static String AutoSortPropertyPage_Select_top_objects_description;
public static String AutoSortPropertyPage_Sort_direction;
public static String AutoSortPropertyPage_Sort_order;
public static String AutoSortPropertyPage_Sort_order_as_designer;
public static String AutoSortPropertyPage_Sort_order_natural;
public static String AutoSortPropertyPage_Sort_question;
public static String AutoSortPropertyPage_Sort_question_title;
public static String AutoSortPropertyPage_Tabular_sections_of_object;

View File

@ -26,6 +26,9 @@ AutoSortPropertyPage_Select_subordinate_objects_description=Select subordinate M
AutoSortPropertyPage_Select_top_objects=Select top objects
AutoSortPropertyPage_Select_top_objects_description=Select top Metadata objects to sort them automatically on edit. Common attributes and command groups should not sort automacitally on edit.
AutoSortPropertyPage_Sort_direction=Sort direction:
AutoSortPropertyPage_Sort_order=Sort order:
AutoSortPropertyPage_Sort_order_as_designer=As designer
AutoSortPropertyPage_Sort_order_natural=Natural
AutoSortPropertyPage_Sort_question=Sort settings has changed. Sort all objects?
AutoSortPropertyPage_Sort_question_title=Settings has changed
AutoSortPropertyPage_Tabular_sections_of_object=Tabular sections of object

View File

@ -45,6 +45,12 @@ AutoSortPropertyPage_Select_top_objects_description = Выберите верх
AutoSortPropertyPage_Sort_direction = Направление сортировки:
AutoSortPropertyPage_Sort_order = Порядок сортировки:
AutoSortPropertyPage_Sort_order_as_designer = Как в конфигураторе
AutoSortPropertyPage_Sort_order_natural = Стандартный
AutoSortPropertyPage_Sort_question = Настройки сортировки изменились. Сортировать все объекты?
AutoSortPropertyPage_Sort_question_title = Настройки изменились

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.autosort;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.autosort.AutoSortPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
@ -26,11 +26,11 @@ Import-Package: com._1c.g5.v8.bm.common.collections;version="[3.0.0,4.0.0)",
com._1c.g5.v8.dt.core.platform;version="[10.0.0,11.0.0)",
com._1c.g5.v8.dt.lifecycle;version="[3.0.0,4.0.0)",
com._1c.g5.v8.dt.metadata.mdclass;version="[8.0.0,9.0.0)",
com.e1c.v8codestyle;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle;version="[0.5.0,0.6.0)",
com.google.common.base;version="[30.1.0,31.0.0)",
com.google.inject;version="[5.0.1,6.0.0)",
com.google.inject.binder;version="[5.0.1,6.0.0)"
Export-Package: com.e1c.v8codestyle.autosort;version="0.4.0";
Export-Package: com.e1c.v8codestyle.autosort;version="0.5.0";
uses:="org.eclipse.emf.ecore,
org.eclipse.core.runtime,
org.eclipse.emf.common.util,

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.autosort</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -45,6 +45,8 @@ public final class AutoSortPreferences
public static final String KEY_ASCENDING = "sortAscending"; //$NON-NLS-1$
public static final String KEY_SORT_ORDER = "naturalSortOrder"; //$NON-NLS-1$
public static final String KEY_ALL_TOP = "topObjects"; //$NON-NLS-1$
public static final String KEY_TOP_NODE = "top"; //$NON-NLS-1$
@ -75,6 +77,7 @@ public final class AutoSortPreferences
public static final boolean DEFAULT_SORT = false;
public static final boolean DEFAULT_SORT_ORDER = true;
/**
* Checks if the sort direction is ascending in the project.
*
@ -87,6 +90,17 @@ public final class AutoSortPreferences
return rootNode.getBoolean(KEY_ASCENDING, DEFAULT_SORT_ASCENDING);
}
/**
* Checks if the sort order natural or as designer in the project.
*
* @param project the project to check, cannot be {@code null}.
* @return true, if the sort order is natural, or return true as default if not set for project.
*/
public static boolean isNaturalSortOrder(IProject project)
{
IEclipsePreferences rootNode = getPreferences(project);
return rootNode.getBoolean(KEY_SORT_ORDER, DEFAULT_SORT_ORDER);
}
/**
* Checks if need to sort all top object.
*

View File

@ -27,17 +27,22 @@ import com.google.common.base.Strings;
public class MdObjectByNameComparator
implements Comparator<EObject>
{
private static final char LESS_THAN_DIGITS = '!';
private final boolean ascending;
private final boolean naturalSortOrder;
/**
* Instantiates a new metadata object comparator by name.
*
* @param ascending the ascending
* @param naturalSortOrder the sort order
*/
public MdObjectByNameComparator(boolean ascending)
public MdObjectByNameComparator(boolean ascending, boolean naturalSortOrder)
{
this.ascending = ascending;
this.naturalSortOrder = naturalSortOrder;
}
@Override
@ -47,10 +52,45 @@ public class MdObjectByNameComparator
{
String firstName = Strings.nullToEmpty(((MdObject)first).getName());
String secondName = Strings.nullToEmpty(((MdObject)second).getName());
return this.ascending ? firstName.compareToIgnoreCase(secondName)
: secondName.compareToIgnoreCase(firstName);
return this.ascending ? compareMdObjectNamesWithIgnoreCase(firstName, secondName, this.naturalSortOrder)
: compareMdObjectNamesWithIgnoreCase(secondName, firstName, this.naturalSortOrder);
}
return 0;
}
private int compareMdObjectNamesWithIgnoreCase(String s1, String s2, boolean naturalSortOrder)
{
int n1 = s1.length();
int n2 = s2.length();
int min = Math.min(n1, n2);
for (int i = 0; i < min; i++)
{
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2)
{
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2)
{
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
if (c1 != c2)
{
if (!naturalSortOrder)
{
// Symbol "low line" must be less than digits
c1 = c1 == '_' ? LESS_THAN_DIGITS : c1;
c2 = c2 == '_' ? LESS_THAN_DIGITS : c2;
}
// No overflow because of numeric promotion
return c1 - c2;
}
}
}
}
return n1 - n2;
}
}

View File

@ -271,11 +271,13 @@ public class SortService
final Comparator<EObject> sorter;
if (project == null)
{
sorter = new MdObjectByNameComparator(AutoSortPreferences.DEFAULT_SORT_ASCENDING);
sorter = new MdObjectByNameComparator(AutoSortPreferences.DEFAULT_SORT_ASCENDING,
AutoSortPreferences.DEFAULT_SORT_ORDER);
}
else
{
sorter = new MdObjectByNameComparator(AutoSortPreferences.isSortAscending(project));
sorter = new MdObjectByNameComparator(AutoSortPreferences.isSortAscending(project),
AutoSortPreferences.isNaturalSortOrder(project));
}
return sorter;
}
@ -383,7 +385,8 @@ public class SortService
{
List<SortItem> items = new ArrayList<>();
Comparator<EObject> sorter = new MdObjectByNameComparator(AutoSortPreferences.isSortAscending(project));
Comparator<EObject> sorter = new MdObjectByNameComparator(AutoSortPreferences.isSortAscending(project),
AutoSortPreferences.isNaturalSortOrder(project));
for (Entry<String, Set<EReference>> entry : changedItems.entrySet())
{

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.bsl.ui;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.bsl.ui.UiPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui;bundle-version="[3.119.0,4.0.0)",
@ -50,5 +50,5 @@ Import-Package: com._1c.g5.ides.ui.texteditor.xtext.embedded;version="[5.0.0,6.0
com.e1c.g5.v8.dt.check.qfix;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.bsl;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.bsl.strict;version="[0.4.0,0.5.0)"
com.e1c.v8codestyle.bsl;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.bsl.strict;version="[0.5.0,0.6.0)"

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.bsl.ui</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.bsl;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.bsl.BslPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@ -49,7 +49,7 @@ Import-Package: com._1c.g5.v8.bm.core;version="[7.0.0,8.0.0)",
com.e1c.g5.v8.dt.check.qfix;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.check;version="[0.4.0,0.5.0)"
Export-Package: com.e1c.v8codestyle.bsl;version="0.4.0",
com.e1c.v8codestyle.bsl.strict;version="0.4.0"
com.e1c.v8codestyle;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)"
Export-Package: com.e1c.v8codestyle.bsl;version="0.5.0",
com.e1c.v8codestyle.bsl.strict;version="0.5.0"

View File

@ -0,0 +1,32 @@
# The common module must have at least one export method
The common module must have at least one export method.
## Noncompliant Code Example
```bsl
Procedure Test()
//TODO
EndProcedure
```
## Compliant Solution
```bsl
#Region Internal
Procedure Test() Export
//TODO
EndProcedure
#EndRegion
```
## See
- [Module structure](https://1c-dn.com/library/module_structure/)
- [Module structure](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_Development_Standards/Code_conventions/Module_formatting/Module_structure/)

View File

@ -0,0 +1,31 @@
# Общий модуль должен иметь хотя бы один экспортный метод
Общий модуль должен иметь программный интерфейс.
## Неправильно
```bsl
Процедура Тест()
//TODO
КонецПроцедуры
```
## Правильно
```bsl
#Область СлужебныйПрограммныйИнтерфейс
Процедура Тест() Экспорт
//TODO
КонецПроцедуры
#КонецОбласти
```
## См.
- [Структура модуля](https://its.1c.ru/db/v8std/content/455/hdoc)

View File

@ -8,6 +8,8 @@
Сообщить("Текст сообщения");
Дата = ТекущаяДата();
ОбщаяФорма1 = ПолучитьФорму("ОбщаяФорма.ОбщаяФорма1");
```
## Правильно
@ -18,9 +20,12 @@
Сообщение.Сообщить();
Дата = ТекущаяДатаСеанса();
ОткрытьФорму("ОбщаяФорма.ОбщаяФорма1);
```
## См.
- [Ограничение на использование метода Сообщить](https://its.1c.ru/db/v8std#content:418:hdoc)
- [Работа в разных часовых поясах](https://its.1c.ru/db/v8std#content:643:hdoc:2.1)
- [Открытие форм](https://its.1c.ru/db/v8std#content:404:hdoc:1)

View File

@ -8,6 +8,8 @@ There are not recommended methods, instead of which either SSL methods or other
Message("Text");
Date = CurrentDate();
CommonForm1 = GetForm("CommonForm.CommonForm1");
```
## Compliant Solution
@ -18,9 +20,12 @@ Message.Text = ("Text");
Message.Message();
Date = CurrentSessionDate();
OpenForm("CommonForm.CommonForm1");
```
## See
- [Restriction on the use of the Message method](https://its.1c.ru/db/v8std#content:418:hdoc)
- [Working in different time zones](https://its.1c.ru/db/v8std#content:643:hdoc:2.1)
- [Opening forms](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_Development_Standards/Designing_user_interfaces/Implementation_of_form/Opening_forms/?language=en)

View File

@ -311,6 +311,10 @@
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureVariablesInRegionCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.bsl.check.CommonModuleMissingApiCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.PublicMethodCachingCheck">

View File

@ -19,10 +19,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.bsl</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -0,0 +1,85 @@
/*******************************************************************************
* 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.MODULE;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.EList;
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.mcore.McorePackage;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.BasicCheck;
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
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.bsl.BslPlugin;
/**
* Checks common module contains programming interface
*
* @author Artem Iliukhin
*/
public class CommonModuleMissingApiCheck
extends BasicCheck
{
private static final String CHECK_ID = "common-module-missing-api"; //$NON-NLS-1$
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.CommonModuleMissingApiCheck_Title)
.description(Messages.CommonModuleMissingApiCheck_Description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.CODE_STYLE)
.extension(new ModuleTopObjectNameFilterExtension())
.extension(new StandardCheckExtension(455, getCheckId(), BslPlugin.PLUGIN_ID))
.extension(ModuleTypeFilter.onlyTypes(ModuleType.COMMON_MODULE))
.extension(new SkipAdoptedInExtensionModuleOwnerExtension())
.module()
.checkedObjectType(MODULE);
}
@Override
protected void check(Object object, ResultAcceptor result, ICheckParameters parameters, IProgressMonitor monitor)
{
Module module = (Module)object;
EList<Method> allMethods = module.allMethods();
for (Method method : allMethods)
{
if (monitor.isCanceled() || method.isExport())
{
return;
}
}
if (!allMethods.isEmpty())
{
result.addIssue(Messages.CommonModuleMissingApiCheck_Issue, allMethods.get(0),
McorePackage.Literals.NAMED_ELEMENT__NAME);
}
}
}

View File

@ -89,6 +89,12 @@ final class Messages
public static String BeginTransactionCheck_Try_was_not_found_after_calling_begin;
public static String CommonModuleMissingApiCheck_Description;
public static String CommonModuleMissingApiCheck_Issue;
public static String CommonModuleMissingApiCheck_Title;
public static String CommonModuleNamedSelfReferenceCheck_description;
public static String CommonModuleNamedSelfReferenceCheck_issue;

View File

@ -0,0 +1,64 @@
/*******************************************************************************
* 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;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.EcoreUtil2;
import com._1c.g5.v8.dt.bsl.model.Module;
import com._1c.g5.v8.dt.form.model.Form;
import com._1c.g5.v8.dt.metadata.mdclass.MdObject;
import com._1c.g5.v8.dt.metadata.mdclass.ObjectBelonging;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.IBasicCheckExtension;
/**
* The extension skips module owner that adopted in Extension Configuration.
*
* @author Artem Iliukhin
*/
public class SkipAdoptedInExtensionModuleOwnerExtension
implements IBasicCheckExtension
{
@Override
public boolean preCheck(Object object, ICheckParameters parameters, IProgressMonitor progressMonitor)
{
Module module = EcoreUtil2.getContainerOfType((EObject)object, Module.class);
return !isParentAdopted(module);
}
private boolean isParentAdopted(Module module)
{
EObject owner = module.getOwner();
if (owner == null)
{
return false;
}
if (owner.eIsProxy())
{
owner = EcoreUtil.resolve(owner, module);
}
if (!owner.eIsProxy())
{
if (owner instanceof Form)
{
owner = ((Form)owner).getMdForm();
}
return owner instanceof MdObject && ((MdObject)owner).getObjectBelonging() == ObjectBelonging.ADOPTED;
}
return false;
}
}

View File

@ -51,7 +51,9 @@ public class UseNonRecommendedMethodCheck
private static final Set<String> NON_RECOMENDED_METHODS_LIST = Set.of("CurrentDate", //$NON-NLS-1$
"ТекущаяДата", //$NON-NLS-1$
"Message", //$NON-NLS-1$
"Сообщить"); //$NON-NLS-1$
"Сообщить", //$NON-NLS-1$
"ПолучитьФорму", //$NON-NLS-1$
"GetForm"); //$NON-NLS-1$
private static final String DELIMITER = ","; //$NON-NLS-1$

View File

@ -28,12 +28,6 @@ AccessibilityAtClientInObjectModuleCheck_description = Method or variable access
AccessibilityAtClientInObjectModuleCheck_title = Method or variable accessible AtClient
CachedPublicCheck_Description=Cached public method
CachedPublicCheck_Issue=Not recommended to use cached public method
CachedPublicCheck_Title=Cached public method
AttachableEventHandlerNameCheck_Description = Programmatically added event handler name should match pattern
AttachableEventHandlerNameCheck_Event_handler_name_pattern = Event handler name pattern
@ -42,6 +36,20 @@ AttachableEventHandlerNameCheck_Message = Programmatically added event handler n
AttachableEventHandlerNameCheck_Title = Attachable event handler name
BeginTransactionCheck_Begin_transaction_is_incorrect = Begin transaction is incorrect
BeginTransactionCheck_Executable_code_between_begin_transaction_and_try = There should be no executable code between begin transaction and try
BeginTransactionCheck_Try_must_be_after_begin = Try-catch must be after begin transaction
BeginTransactionCheck_Try_was_not_found_after_calling_begin = The try operator was not found after calling begin transaction
CachedPublicCheck_Description = Cached public method
CachedPublicCheck_Issue = Not recommended to use cached public method
CachedPublicCheck_Title = Cached public method
CanonicalPragmaCheck_Pragma_0_is_not_written_canonically_correct_spelling_is_1 = Annotation {0} is not written canonically, correct spelling is {1}
CanonicalPragmaCheck_description = Check pragma is written canonically
@ -54,53 +62,45 @@ ChangeAndValidateInsteadOfAroundCheck_description = Checks that pragma &ChangeAn
ChangeAndValidateInsteadOfAroundCheck_title = Use pragma &ChangeAndValidate instead of &Around
CommitTransactionCheck_Commit_transaction_must_be_in_try_catch=Commit transaction must be in a try-catch
CommitTransactionCheck_Commit_transaction_must_be_in_try_catch = Commit transaction must be in a try-catch
CommitTransactionCheck_No_begin_transaction_for_commit_transaction=There is no begin transaction for commit transaction
CommitTransactionCheck_No_begin_transaction_for_commit_transaction = There is no begin transaction for commit transaction
RollbackTransactionCheck_No_begin_transaction_for_rollback_transaction=There is no begin transaction for rollback transaction
CommitTransactionCheck_No_rollback_transaction_for_begin_transaction = There is no rollback transaction for begin transaction
RollbackTransactionCheck_No_commit_transaction_for_begin_transaction=There is no commit transaction for begin transaction
CommitTransactionCheck_Should_be_no_executable_code_between_commit_and_exception = There should be no executable code between commit transaction and exception
CommitTransactionCheck_No_rollback_transaction_for_begin_transaction=There is no rollback transaction for begin transaction
CommitTransactionCheck_Transaction_contains_empty_except = The transaction contains an empty exception block
CommitTransactionCheck_Should_be_no_executable_code_between_commit_and_exception=There should be no executable code between commit transaction and exception
CommitTransactionCheck_Transactions_is_broken = Commit transaction is incorrect
RollbackTransactionCheck_Should_be_no_executable_code_between_exception_and_rollback=There should be no executable code between exception and rollback transaction
CommitTransactionCheck_Transactions_is_broken_des = Commit transaction must be in a try-catch, there should be no executable code between commit transaction and exception, there is no begin transaction for commit transaction, there is no rollback transaction for begin transaction.
BeginTransactionCheck_Executable_code_between_begin_transaction_and_try=There should be no executable code between begin transaction and try
CommonModuleMissingApiCheck_Description = Programming interface
CommitTransactionCheck_Transaction_contains_empty_except=The transaction contains an empty exception block
CommonModuleMissingApiCheck_Issue = Common module does not contain a programming interface
CommitTransactionCheck_Transactions_is_broken=Commit transaction is incorrect
CommonModuleMissingApiCheck_Title = Programming interface
CommitTransactionCheck_Transactions_is_broken_des=Commit transaction must be in a try-catch, there should be no executable code between commit transaction and exception, there is no begin transaction for commit transaction, there is no rollback transaction for begin transaction.
CommonModuleNamedSelfReferenceCheck_description = Excessive named self reference
BeginTransactionCheck_Begin_transaction_is_incorrect=Begin transaction is incorrect
CommonModuleNamedSelfReferenceCheck_issue = Excessive named self reference
BeginTransactionCheck_Try_must_be_after_begin=Try-catch must be after begin transaction
CommonModuleNamedSelfReferenceCheck_title = Excessive named self reference in common module
BeginTransactionCheck_Try_was_not_found_after_calling_begin=The try operator was not found after calling begin transaction
ConsecutiveEmptyLines_Description = Consecutive empty lines
CommonModuleNamedSelfReferenceCheck_description=Excessive named self reference
ConsecutiveEmptyLines_Parameter_title = Maximum number of empty lines
CommonModuleNamedSelfReferenceCheck_issue=Excessive named self reference
ConsecutiveEmptyLines_Sequence_of_empty_lines_between__0__and__1__is_greator_than__2 = The sequence of empty lines between lines {0} and {1} is more than {2}
CommonModuleNamedSelfReferenceCheck_title=Excessive named self reference in common module
ConsecutiveEmptyLines_Title = Consecutive empty lines
ConsecutiveEmptyLines_Description=Consecutive empty lines
DeprecatedProcedureOutsideDeprecatedRegionCheck_Deprecated_function_out_of_deprecated_area = The deprecated procedure (function) "{0}" should be placed in the Deprecated region of the Public region in a common module area
ConsecutiveEmptyLines_Parameter_title=Maximum number of empty lines
DeprecatedProcedureOutsideDeprecatedRegionCheck_description = Deprecated procedure (function) should be placed in the Deprecated region of the Public region in a common module area
ConsecutiveEmptyLines_Sequence_of_empty_lines_between__0__and__1__is_greator_than__2=The sequence of empty lines between lines {0} and {1} is more than {2}
ConsecutiveEmptyLines_Title=Consecutive empty lines
DeprecatedProcedureOutsideDeprecatedRegionCheck_Deprecated_function_out_of_deprecated_area=The deprecated procedure (function) "{0}" should be placed in the Deprecated region of the Public region in a common module area
DeprecatedProcedureOutsideDeprecatedRegionCheck_description=Deprecated procedure (function) should be placed in the Deprecated region of the Public region in a common module area
DeprecatedProcedureOutsideDeprecatedRegionCheck_title=Deprecated procedure (function) is outside deprecated region
DeprecatedProcedureOutsideDeprecatedRegionCheck_title = Deprecated procedure (function) is outside deprecated region
EmptyExceptStatementCheck_description = Empty except statement
@ -132,50 +132,37 @@ EventHandlerBooleanParamCheck_description = Use event handler boolean parameter
EventHandlerBooleanParamCheck_title = Use event handler boolean parameter
ReadingAttributesFromDataBaseCheck_Message=Allow field access with composite non reference type
ExportMethodInCommandFormModuleCheck_CheckClientMethodForm = Check the client method of the form
ReadingAttributesFromDataBaseCheck_Description=Reading single object attribute from the database
ExportMethodInCommandFormModuleCheck_CheckServerMethodForm = Check the server method of the form
ReadingAttributesFromDataBaseCheck_Issue__0=When the {0} is read from the reference, the entire object is imported from the database
ExportMethodInCommandFormModuleCheck_ExludeMethodNamePattern = Exclude method name pattern
ReadingAttributesFromDataBaseCheck_Title=Reading single object attribute from the database
ExportMethodInCommandFormModuleCheck_Notify_description_methods = Comma-separated list of excluded notification method names
RedundantExportCheck_Escess_title=Redundant Export keyword
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.
RedundantExportCheck_Excess_description=Checks the modules contain unused export procedures and functions. The check searches for all references to the method, so it can take a long time.
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.
RedundantExportCheck_Exclude_title=Comma-separated list of excluded region names
ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module = Restrictions on the use of export procedures and functions
RedundantExportCheck_Unused_export_method__0=Unused export method "{0}"
ExportVariableInObjectModuleCheck_Description = Use of an export variable is not recommended
ExportMethodInCommandFormModuleCheck_CheckClientMethodForm=Check the client method of the form
ExportMethodInCommandFormModuleCheck_CheckServerMethodForm=Check the server method of the form
ExportMethodInCommandFormModuleCheck_ExludeMethodNamePattern=Exclude method name pattern
ExportMethodInCommandFormModuleCheck_Notify_description_methods=Comma-separated list of excluded notification method names
ExportVariableInObjectModuleCheck_Issue = It's not recommended to use the export variable in the object module
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.
ExportVariableInObjectModuleCheck_Title = Use of an export variable is not recommended
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.
ExtensionMethodPrefixCheck_Description = The procedure (function) in the module of the extension object does not have a prefix corresponding to the prefix of the extension itself
ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module=Restrictions on the use of export procedures and functions
ExtensionMethodPrefixCheck_Ext_method__0__should_have__1__prefix = The method "{0}" should have "{1}" prefix
ExportVariableInObjectModuleCheck_Description=Use of an export variable is not recommended
ExtensionMethodPrefixCheck_Title = Extension method does not have extension prefix
ExportVariableInObjectModuleCheck_Issue=It's not recommended to use the export variable in the object module
ExtensionVariablePrefixCheck_Description = The variable in the module of the extension object does not have a prefix corresponding to the prefix of the extension itself
ExportVariableInObjectModuleCheck_Title=Use of an export variable is not recommended
ExtensionVariablePrefixCheck_Title = Extension variable does not have extension prefix
ExtensionVariablePrefixCheck_Description=The variable in the module of the extension object does not have a prefix corresponding to the prefix of the extension itself
ExtensionVariablePrefixCheck_Title=Extension variable does not have extension prefix
ExtensionVariablePrefixCheck_Variable_0_should_have_1_prefix=The variable "{0}" should have "{1}" prefix
ExtensionMethodPrefixCheck_Description=The procedure (function) in the module of the extension object does not have a prefix corresponding to the prefix of the extension itself
ExtensionMethodPrefixCheck_Ext_method__0__should_have__1__prefix=The method "{0}" should have "{1}" prefix
ExtensionMethodPrefixCheck_Title=Extension method does not have extension prefix
ExtensionVariablePrefixCheck_Variable_0_should_have_1_prefix = The variable "{0}" should have "{1}" prefix
FormModuleMissingPragmaCheck_Missing_compilation_directives = Missing compilation directives
@ -189,37 +176,37 @@ FormModulePragmaCheck_description = Use form module compilation pragma
FormModulePragmaCheck_title = Use form module compilation pragma
FormSelfReferenceOutdatedCheck_Description="ThisObject" should be used instead of outdated "ThisForm"
FormSelfReferenceOutdatedCheck_Description = "ThisObject" should be used instead of outdated "ThisForm"
FormSelfReferenceOutdatedCheck_Issue="ThisObject" should be used instead of outdated "ThisForm"
FormSelfReferenceOutdatedCheck_Issue = "ThisObject" should be used instead of outdated "ThisForm"
FormSelfReferenceOutdatedCheck_Title=Outdated alias used
FormSelfReferenceOutdatedCheck_Title = Outdated alias used
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_description=Program invocation of form event handler
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_description = Program invocation of form event handler
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_result=Program invocation of form event handler
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_result = Program invocation of form event handler
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_title=Program invocation of form event handler
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_title = Program invocation of form event handler
IsInRoleCheck_Exception_Roles=Untested roles
IsInRoleCheck_Exception_Roles = Untested roles
IsInRoleCheck_Use_AccessRight=Use the AccessRight() function instead of IsInRole()
IsInRoleCheck_Use_AccessRight = Use the AccessRight() function instead of IsInRole()
IsInRoleCheck_Use_AccessRight_instead_IsInRole=Use the AccessRight() function instead of IsInRole()
IsInRoleCheck_Use_AccessRight_instead_IsInRole = Use the AccessRight() function instead of IsInRole()
IsInRoleCheck_Using_IsInRole=Using "IsInRole" method
IsInRoleCheck_Using_IsInRole = Using "IsInRole" method
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_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
LockOutOfTry_Lock_out_of_try = Lock out of Try
LockOutOfTry_Method_lock_out_of_try=Method Lock() out of try block
LockOutOfTry_Method_lock_out_of_try = Method Lock() out of try block
ManagerModuleNamedSelfReferenceCheck_description=Excessive named self reference
ManagerModuleNamedSelfReferenceCheck_description = Excessive named self reference
ManagerModuleNamedSelfReferenceCheck_issue=Excessive named self reference
ManagerModuleNamedSelfReferenceCheck_issue = Excessive named self reference
ManagerModuleNamedSelfReferenceCheck_title=Excessive named self reference in manager module
ManagerModuleNamedSelfReferenceCheck_title = Excessive named self reference in manager module
MethodTooManyPramsCheck_Max_parameters = Max parameters
@ -251,24 +238,84 @@ ModuleEmptyMethodCheck_Exclude_method_name_pattern_title = Exclude method name p
ModuleEmptyMethodCheck_Title = Empty method check
ModuleStructureTopRegionCheck_Check_duplicates_of_standard_regions=Check duplicates of standard regions
ModuleStructureEventFormRegionsCheck_Description = Checks the region of form event handlers for methods related only to handlers
ModuleStructureTopRegionCheck_Check_order_of_standard_regions=Check order of standard regions
ModuleStructureEventFormRegionsCheck_Event_method__0__can_not_be_placed_in_the_region__1 = Method "{0}" can not be placed in the "{1}" region
ModuleStructureEventFormRegionsCheck_Event_method__0__should_be_placed_in_the_region__1 = The event method "{0}" should be placed in the "{1}" region
ModuleStructureEventFormRegionsCheck_Excluded_method_names = Comma-separated list of excluded command event method names
ModuleStructureEventFormRegionsCheck_Multilevel_nesting_of_regions = Allow multilevel nesting of regions
ModuleStructureEventFormRegionsCheck_Title = Checks the region of form event handlers for methods related only to handlers
ModuleStructureEventRegionsCheck_Description = Checks the region of event handlers for the existence of methods related only to handlers
ModuleStructureEventRegionsCheck_Event_handler__0__not_region__1 = The event handler "{0}" should be placed in the "{1}" region
ModuleStructureEventRegionsCheck_Only_event_methods__0 = Only event methods can be placed in the "{0}" region
ModuleStructureEventRegionsCheck_Title = Checks the region of event handlers for the existence of methods related only to handlers
ModuleStructureInitCodeInRegion_Description = Initialize code should be placed in the Initialize region
ModuleStructureInitCodeInRegion_Issue__0 = Initialize code should be placed in the {0} region
ModuleStructureInitCodeInRegion_Title = Initialize code is in the correct region
ModuleStructureMethodInRegionCheck_Description = Checks that the method is outside the standard region, and suggests placing the method in one of the standard regions for the current type of module
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions = The method "{0}" should be placed in one of the standard regions: {1}
ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions = Allow multilevel nesting of regions
ModuleStructureMethodInRegionCheck_Only_export = Only export methods can be placed in the "{0}" region
ModuleStructureMethodInRegionCheck_Title = Method is outside a standard region
ModuleStructureTopRegionCheck_Check_duplicates_of_standard_regions = Check duplicates of standard regions
ModuleStructureTopRegionCheck_Check_order_of_standard_regions = Check order of standard regions
ModuleStructureTopRegionCheck_Exclude_region_name = Comma-separated list of excluded region names
ModuleStructureTopRegionCheck_Region_has_duplicate = Region has duplicate
ModuleStructureTopRegionCheck_Region_has_the_wrong_order = Region has the wrong order
ModuleStructureTopRegionCheck_Region_is_not_standard_for_current_type_of_module = Region is not standard for current type of module
ModuleStructureTopRegionCheck_description = Check that the regions on top of the module structure matches with the standard
ModuleStructureTopRegionCheck_error_message = Module structure region is not on top
ModuleStructureTopRegionCheck_Exclude_region_name=Comma-separated list of excluded region names
ModuleStructureTopRegionCheck_Region_has_duplicate=Region has duplicate
ModuleStructureTopRegionCheck_Region_has_the_wrong_order=Region has the wrong order
ModuleStructureTopRegionCheck_Region_is_not_standard_for_current_type_of_module=Region is not standard for current type of module
ModuleStructureTopRegionCheck_title = Module structure top region
ModuleStructureVariablesInRegionCheck_Description = Variable declaration should be placed in the variable declaration region
ModuleStructureVariablesInRegionCheck_Issue__0 = Variable declaration should be placed in the {0} region
ModuleStructureVariablesInRegionCheck_Title = Variable declaration is in the correct region
ModuleUndefinedFunctionCheck_Description = Undefined function
ModuleUndefinedFunctionCheck_Title = Undefined function
ModuleUndefinedFunction_msg = Function "{0}" is not defined
ModuleUndefinedMethodCheck_Description = Undefined function or procedure
ModuleUndefinedMethodCheck_Title = Undefined method
ModuleUndefinedMethod_msg = Procedure or function "{0}" is not defined
ModuleUndefinedVariableCheck_Description = Undefined variable
ModuleUndefinedVariableCheck_Title = Undefined variable
ModuleUndefinedVariable_msg = Variable "{0}" is not defined
ModuleUnusedLocalVariableCheck_Description = Unused module local variable check
ModuleUnusedLocalVariableCheck_Probably_variable_not_initilized_yet__0 = Probably local variable "{0}" has not been initialized yet
@ -285,59 +332,17 @@ ModuleUnusedMethodCheck_Title = Unused method check
ModuleUnusedMethodCheck_Unused_method__0 = Unused method "{0}"
ModuleStructureEventFormRegionsCheck_Description=Checks the region of form event handlers for methods related only to handlers
NewColorCheck_Use_style_elements = To change the design, you should use style elements, and not set specific values directly in the controls
ModuleStructureEventFormRegionsCheck_Event_method__0__can_not_be_placed_in_the_region__1=Method "{0}" can not be placed in the "{1}" region
NewColorCheck_Use_style_elements_not_specific_values = To change the design, you should use style elements, and not set specific values directly in the controls. This is required in order for similar controls to look the same in all forms where they occur.
ModuleStructureEventFormRegionsCheck_Event_method__0__should_be_placed_in_the_region__1=The event method "{0}" should be placed in the "{1}" region
NewColorCheck_Using_new_color = Using the "New Color" construction
ModuleStructureEventFormRegionsCheck_Excluded_method_names=Comma-separated list of excluded command event method names
NewFontCheck_Description = To change the font you should use style elements
ModuleStructureEventFormRegionsCheck_Multilevel_nesting_of_regions=Allow multilevel nesting of regions
NewFontCheck_Issue = To change the font you should use style elements
ModuleStructureEventFormRegionsCheck_Title=Checks the region of form event handlers for methods related only to handlers
ModuleStructureEventRegionsCheck_Description=Checks the region of event handlers for the existence of methods related only to handlers
ModuleStructureEventRegionsCheck_Event_handler__0__not_region__1=The event handler "{0}" should be placed in the "{1}" region
ModuleStructureEventRegionsCheck_Only_event_methods__0=Only event methods can be placed in the "{0}" region
ModuleStructureEventRegionsCheck_Title=Checks the region of event handlers for the existence of methods related only to handlers
ModuleStructureInitCodeInRegion_Description=Initialize code should be placed in the Initialize region
ModuleStructureInitCodeInRegion_Issue__0=Initialize code should be placed in the {0} region
ModuleStructureInitCodeInRegion_Title=Initialize code is in the correct region
ModuleStructureMethodInRegionCheck_Description=Checks that the method is outside the standard region, and suggests placing the method in one of the standard regions for the current type of module
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions=The method "{0}" should be placed in one of the standard regions: {1}
ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions=Allow multilevel nesting of regions
ModuleStructureMethodInRegionCheck_Only_export=Only export methods can be placed in the "{0}" region
ModuleStructureMethodInRegionCheck_Title=Method is outside a standard region
ModuleStructureVariablesInRegionCheck_Description=Variable declaration should be placed in the variable declaration region
ModuleStructureVariablesInRegionCheck_Issue__0=Variable declaration should be placed in the {0} region
ModuleStructureVariablesInRegionCheck_Title=Variable declaration is in the correct region
NewColorCheck_Use_style_elements=To change the design, you should use style elements, and not set specific values directly in the controls
NewColorCheck_Use_style_elements_not_specific_values=To change the design, you should use style elements, and not set specific values directly in the controls. This is required in order for similar controls to look the same in all forms where they occur.
NewColorCheck_Using_new_color=Using the "New Color" construction
NewFontCheck_Description=To change the font you should use style elements
NewFontCheck_Issue=To change the font you should use style elements
NewFontCheck_Title=Using the "New Font" construction
NewFontCheck_Title = Using the "New Font" construction
NotifyDescriptionToServerProcedureCheck_Notify_description_procedure_should_be_export = Notify description procedure should exist and be export
@ -375,25 +380,47 @@ QueryInLoop_description = Check query in loop
QueryInLoop_title = Query in loop
ReadingAttributesFromDataBaseCheck_Description = Reading single object attribute from the database
ReadingAttributesFromDataBaseCheck_Issue__0 = When the {0} is read from the reference, the entire object is imported from the database
ReadingAttributesFromDataBaseCheck_Message = Allow field access with composite non reference type
ReadingAttributesFromDataBaseCheck_Title = Reading single object attribute from the database
RedundantExportCheck_Escess_title = Redundant Export keyword
RedundantExportCheck_Excess_description = Checks the modules contain unused export procedures and functions. The check searches for all references to the method, so it can take a long time.
RedundantExportCheck_Exclude_title = Comma-separated list of excluded region names
RedundantExportCheck_Unused_export_method__0 = Unused export method "{0}"
RegionEmptyCheck_Region_is_empty = Region is empty
RegionEmptyCheck_description = Check that module region is empty
RegionEmptyCheck_title = Region is empty
RollbackTransactionCheck_Rollback_transaction_must_be_in_try_catch=Rollback transaction must be in a try-catch
RollbackTransactionCheck_No_begin_transaction_for_rollback_transaction = There is no begin transaction for rollback transaction
RollbackTransactionCheck_Transactions_is_broken=Rollback transaction is incorrect
RollbackTransactionCheck_No_commit_transaction_for_begin_transaction = There is no commit transaction for begin transaction
RollbackTransactionCheck_Transactions_is_broken_des=Rollback transaction must be in a try-catch, there should be no executable code between exception and rollback transaction, there is no begin transaction for rollback transaction, there is no commit transaction for begin transaction.
RollbackTransactionCheck_Rollback_transaction_must_be_in_try_catch = Rollback transaction must be in a try-catch
SelfReferenceCheck_check_only_existing_form_properties=Check only existing form properties
RollbackTransactionCheck_Should_be_no_executable_code_between_exception_and_rollback = There should be no executable code between exception and rollback transaction
SelfReferenceCheck_Description=Excessive usage of self reference (when referencing method, property or attribute)
RollbackTransactionCheck_Transactions_is_broken = Rollback transaction is incorrect
SelfReferenceCheck_Title=Excessive self reference
RollbackTransactionCheck_Transactions_is_broken_des = Rollback transaction must be in a try-catch, there should be no executable code between exception and rollback transaction, there is no begin transaction for rollback transaction, there is no commit transaction for begin transaction.
SelfReferenceCheck_Issue=Excessive usage of self reference (when referencing method, property or attribute)
SelfReferenceCheck_Description = Excessive usage of self reference (when referencing method, property or attribute)
SelfReferenceCheck_Issue = Excessive usage of self reference (when referencing method, property or attribute)
SelfReferenceCheck_Title = Excessive self reference
SelfReferenceCheck_check_only_existing_form_properties = Check only existing form properties
ServerExecutionSafeModeCheck_description = Safe mode is not enabled when calling "Execute" or "Eval'
@ -418,15 +445,3 @@ UseNonRecommendedMethods_message = Using non-recommended method
UseNonRecommendedMethods_parameter = List of non-recommended methods
UseNonRecommendedMethods_title = Using non-recommended methods
ModuleUndefinedVariableCheck_Title = Undefined variable
ModuleUndefinedVariableCheck_Description = Undefined variable
ModuleUndefinedVariable_msg = Variable "{0}" is not defined
ModuleUndefinedMethodCheck_Title = Undefined method
ModuleUndefinedMethodCheck_Description = Undefined function or procedure
ModuleUndefinedFunctionCheck_Title = Undefined function
ModuleUndefinedFunctionCheck_Description = Undefined function
ModuleUndefinedFunction_msg = Function "{0}" is not defined
ModuleUndefinedMethod_msg = Procedure or function "{0}" is not defined

View File

@ -36,11 +36,19 @@ AttachableEventHandlerNameCheck_Message = Программно добавлен
AttachableEventHandlerNameCheck_Title = Имя подключаемого обработчика события
CachedPublicCheck_Description=Кэширование интерфейсного метода
BeginTransactionCheck_Begin_transaction_is_incorrect = Нарушена схема работы с "НачатьТранзакцию()"
CachedPublicCheck_Issue=Не рекомендуется кэшировать программный интерфейс
BeginTransactionCheck_Executable_code_between_begin_transaction_and_try = Между "НачатьТранзакцию()" и "Попытка" есть исполняемый код
CachedPublicCheck_Title=Кэширование интерфейсного метода
BeginTransactionCheck_Try_must_be_after_begin = После начала транзакции не найден оператор "Попытка"
BeginTransactionCheck_Try_was_not_found_after_calling_begin = Не найден оператор "Попытка" после вызова "НачатьТранзакцию()"
CachedPublicCheck_Description = Кэширование интерфейсного метода
CachedPublicCheck_Issue = Не рекомендуется кэшировать программный интерфейс
CachedPublicCheck_Title = Кэширование интерфейсного метода
CanonicalPragmaCheck_Pragma_0_is_not_written_canonically_correct_spelling_is_1 = Аннотация {0} написана не канонически, правильное написание {1}
@ -54,53 +62,43 @@ ChangeAndValidateInsteadOfAroundCheck_description = Проверяет, что
ChangeAndValidateInsteadOfAroundCheck_title = Используется аннотация &ИзменениеИКонтроль вместо &Вместо
CommitTransactionCheck_Commit_transaction_must_be_in_try_catch=Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение"
CommitTransactionCheck_Commit_transaction_must_be_in_try_catch = Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение"
CommitTransactionCheck_No_begin_transaction_for_commit_transaction=Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()"
CommitTransactionCheck_No_begin_transaction_for_commit_transaction = Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()"
CommitTransactionCheck_No_begin_transaction_for_rollback_transaction=Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()"
CommitTransactionCheck_No_begin_transaction_for_rollback_transaction = Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()"
CommitTransactionCheck_No_rollback_transaction_for_begin_transaction=Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()"
CommitTransactionCheck_No_rollback_transaction_for_begin_transaction = Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()"
CommitTransactionCheck_Should_be_no_executable_code_between_commit_and_exception=Между "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение
CommitTransactionCheck_Should_be_no_executable_code_between_commit_and_exception = Между "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение
CommitTransactionCheck_Should_be_no_executable_code_between_exception_and_rollback=Между "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение
CommitTransactionCheck_Should_be_no_executable_code_between_exception_and_rollback = Между "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение
BeginTransactionCheck_Executable_code_between_begin_transaction_and_try=Между "НачатьТранзакцию()" и "Попытка" есть исполняемый код
CommitTransactionCheck_Transaction_contains_empty_except = Транзакция содержит пустой блок Исключение
BeginTransactionCheck_Try_was_not_found_after_calling_begin=Не найден оператор "Попытка" после вызова "НачатьТранзакцию()"
CommitTransactionCheck_Transactions_is_broken = Нарушена схема работы с "ЗафиксироватьТранзакцию()"
BeginTransactionCheck_Begin_transaction_is_incorrect=Нарушена схема работы с "НачатьТранзакцию()"
CommitTransactionCheck_Transactions_is_broken_des = Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение". Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()". Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()". Между "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение.
BeginTransactionCheck_Try_must_be_after_begin=После начала транзакции не найден оператор "Попытка"
CommonModuleMissingApiCheck_Description = Программный интерфейс
CommitTransactionCheck_Transaction_contains_empty_except=Транзакция содержит пустой блок Исключение
CommonModuleMissingApiCheck_Issue = Общий модуль не содержит программный интерфейс
CommitTransactionCheck_Transactions_is_broken=Нарушена схема работы с "ЗафиксироватьТранзакцию()"
CommonModuleMissingApiCheck_Title = Программный интерфейс
CommitTransactionCheck_Transactions_is_broken_des=Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение". Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()". Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()". Между "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение.
CommonModuleNamedSelfReferenceCheck_description = Избыточное обращение по собственному имени
CommitTransactionCheck_No_rollback_transaction_for_begin_transaction=Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()"
CommonModuleNamedSelfReferenceCheck_issue = Избыточное обращение по собственному имени
RollbackTransactionCheck_No_commit_transaction_for_begin_transaction=Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()"
CommonModuleNamedSelfReferenceCheck_title = Избыточное обращение по собственному имени в общем модуле
RollbackTransactionCheck_Transactions_is_broken=Нарушена схема работы с "ОтменитьТранзакцию()"
ConsecutiveEmptyLines_Description = Последовательно расположенные пустые строки
RollbackTransactionCheck_Transactions_is_broken_des=Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение". Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()". Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()". Между "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение.
ConsecutiveEmptyLines_Parameter_title = Максимальное количество последовательно расположенных пустых строк
CommonModuleNamedSelfReferenceCheck_description=Избыточное обращение по собственному имени
ConsecutiveEmptyLines_Sequence_of_empty_lines_between__0__and__1__is_greator_than__2 = Между строками {0} и {1} расположено больше {2} пустых строк
CommonModuleNamedSelfReferenceCheck_issue=Избыточное обращение по собственному имени
CommonModuleNamedSelfReferenceCheck_title=Избыточное обращение по собственному имени в общем модуле
ConsecutiveEmptyLines_Description=Последовательно расположенные пустые строки
ConsecutiveEmptyLines_Parameter_title=Максимальное количество последовательно расположенных пустых строк
ConsecutiveEmptyLines_Sequence_of_empty_lines_between__0__and__1__is_greator_than__2=Между строками {0} и {1} расположено больше {2} пустых строк
ConsecutiveEmptyLines_Title=Последовательность пустых строк
ConsecutiveEmptyLines_Title = Последовательность пустых строк
DeprecatedProcedureOutsideDeprecatedRegionCheck_Deprecated_function_out_of_deprecated_area = Устаревшую процедуру (функцию) "{0}" следует перенести в область общего модуля УстаревшиеПроцедурыИФункции, размещенную внутри области ПрограммныйИнтерфейс
@ -138,53 +136,37 @@ EventHandlerBooleanParamCheck_description = Использование буле
EventHandlerBooleanParamCheck_title = Использование булевого параметра обработчика события
ReadingAttributesFromDataBaseCheck_Message=Разрешить доступ к полю с составным не ссылочным типом
ExportMethodInCommandFormModuleCheck_CheckClientMethodForm = Проверить клиентский метод формы
ReadingAttributesFromDataBaseCheck_Description=Чтение отдельного реквизита объекта из базы данных
ExportMethodInCommandFormModuleCheck_CheckServerMethodForm = Проверить серверный метод формы
ReadingAttributesFromDataBaseCheck_Issue__0=При чтении атрибута {0} из ссылки, весь объект импортируется из базы данных
ExportMethodInCommandFormModuleCheck_ExludeMethodNamePattern = Шаблон исключаемых имен методов
ReadingAttributesFromDataBaseCheck_Title=Чтение отдельного реквизита объекта из базы данных
ExportMethodInCommandFormModuleCheck_Notify_description_methods = Список исключаемых имен методов оповещения, разделенные запятой
RedundantExportCheck_Escess_title= Избыточное ключевое слово Экспорт
ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_des = Не следует размещать экспортные процедуры и функции в модулях команд и форм. К этим модулям нет возможности обращаться из внешнего по отношению к ним кода, поэтому экспортные процедуры и функции в этих модулях не имеют смысла.
RedundantExportCheck_Excess_description=Проверка текстов модулей конфигурации на содержание неиспользуемые экспортные процедуры и функции. Проверка выполняет поиск всех ссылок на метод, поэтому может выполняться длительное время.
ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_result = Не следует размещать экспортные процедуры и функции в модулях команд и форм. К этим модулям нет возможности обращаться из внешнего по отношению к ним кода, поэтому экспортные процедуры и функции в этих модулях не имеют смысла.
RedundantExportCheck_Exclude_title=Список исключаемых имен областей, разделенных запятой
ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module = Ограничения на использование экспортных процедур и функций
RedundantExportCheck_Unused_export_method__0=Неиспользуемый экспортный метод "{0}"
ExportVariableInObjectModuleCheck_Description = Использование экспортной переменной не рекомендовано
ExportMethodInCommandFormModuleCheck_CheckClientMethodForm=Проверить клиентский метод формы
ExportVariableInObjectModuleCheck_Issue = Не рекомендуется использовать экспортную переменную в модуле объекта
ExportMethodInCommandFormModuleCheck_CheckServerMethodForm=Проверить серверный метод формы
ExportVariableInObjectModuleCheck_Title = Использование экспортной переменной не рекомендовано
ExportMethodInCommandFormModuleCheck_ExludeMethodNamePattern=Шаблон исключаемых имен методов
ExtensionMethodPrefixCheck_Description = Имя метода не содержит префикс расширения
ExportMethodInCommandFormModuleCheck_Notify_description_methods=Список исключаемых имен методов оповещения, разделенные запятой
ExtensionMethodPrefixCheck_Ext_method__0__should_have__1__prefix = Имя метода "{0}" должно содержать префикс "{1}"
ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_des=Не следует размещать экспортные процедуры и функции в модулях команд и форм. К этим модулям нет возможности обращаться из внешнего по отношению к ним кода, поэтому экспортные процедуры и функции в этих модулях не имеют смысла.
ExtensionMethodPrefixCheck_Title = Метод расширения не содержит в имени метода префикс расширения
ExportMethodInCommandModule_Do_not_emded_export_method_in_modules_of_command_result=Не следует размещать экспортные процедуры и функции в модулях команд и форм. К этим модулям нет возможности обращаться из внешнего по отношению к ним кода, поэтому экспортные процедуры и функции в этих модулях не имеют смысла.
ExtensionVariablePrefixCheck_Description = Переменная модуля расширения должна в имени содержать префикс расширения
ExportMethodInCommandModule_Do_not_use_export_method_in_commands_module=Ограничения на использование экспортных процедур и функций
ExtensionVariablePrefixCheck_Title = Переменная расширения должна содержать в имени префикс расширения
ExportVariableInObjectModuleCheck_Description=Использование экспортной переменной не рекомендовано
ExportVariableInObjectModuleCheck_Issue=Не рекомендуется использовать экспортную переменную в модуле объекта
ExportVariableInObjectModuleCheck_Title=Использование экспортной переменной не рекомендовано
ExtensionVariablePrefixCheck_Description=Переменная модуля расширения должна в имени содержать префикс расширения
ExtensionVariablePrefixCheck_Title=Переменная расширения должна содержать в имени префикс расширения
ExtensionVariablePrefixCheck_Variable_0_should_have_1_prefix=Переменная "{0}" должна иметь префикс "{1}"
ExtensionMethodPrefixCheck_Description=Имя метода не содержит префикс расширения
ExtensionMethodPrefixCheck_Ext_method__0__should_have__1__prefix=Имя метода "{0}" должно содержать префикс "{1}"
ExtensionMethodPrefixCheck_Title=Метод расширения не содержит в имени метода префикс расширения
ExtensionVariablePrefixCheck_Variable_0_should_have_1_prefix = Переменная "{0}" должна иметь префикс "{1}"
FormModuleMissingPragmaCheck_Missing_compilation_directives = Пропущена директива компиляции
@ -198,37 +180,37 @@ FormModulePragmaCheck_description = Использование директив
FormModulePragmaCheck_title = Использование директив компиляции модуля формы
FormSelfReferenceOutdatedCheck_Description=Следует использовать псевдоним "ЭтотОбъект" вместо устаревшего "ЭтаФорма"
FormSelfReferenceOutdatedCheck_Description = Следует использовать псевдоним "ЭтотОбъект" вместо устаревшего "ЭтаФорма"
FormSelfReferenceOutdatedCheck_Issue=Следует использовать псевдоним "ЭтотОбъект" вместо устаревшего "ЭтаФорма"
FormSelfReferenceOutdatedCheck_Issue = Следует использовать псевдоним "ЭтотОбъект" вместо устаревшего "ЭтаФорма"
FormSelfReferenceOutdatedCheck_Title=Использование устаревшего псевдонима
FormSelfReferenceOutdatedCheck_Title = Использование устаревшего псевдонима
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_description=Программный вызов обработчика события формы
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_description = Программный вызов обработчика события формы
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_result=Программный вызов обработчика события формы
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_result = Программный вызов обработчика события формы
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_title=Программный вызов обработчика события формы
InvocationFormEventHandlerCheck_Program_invocation_of_form_event_handler_title = Программный вызов обработчика события формы
IsInRoleCheck_Exception_Roles = Непроверяемые роли
IsInRoleCheck_Use_AccessRight = Следует использовать метод "ПравоДоступа" вместо "РольДоступна"
IsInRoleCheck_Using_IsInRole = Использован не рекомендованный метод "РольДоступна"
IsInRoleCheck_Use_AccessRight_instead_IsInRole = Используйте функцию "ПравоДоступа()" вместо "РольДоступна()"
LockOutOfTry_Checks_for_init_of_the_data_lock=Правило проверяет наличие инициализации блокировки данных. В случае если найдено создание блокировки, проверяется вызов метода "Заблокировать()", при этом вызов должен быть в попытке.
IsInRoleCheck_Using_IsInRole = Использован не рекомендованный метод "РольДоступна"
LockOutOfTry_Lock_out_of_try=Метод Заблокировать() вне блока Попытка-Исключение
LockOutOfTry_Checks_for_init_of_the_data_lock = Правило проверяет наличие инициализации блокировки данных. В случае если найдено создание блокировки, проверяется вызов метода "Заблокировать()", при этом вызов должен быть в попытке.
LockOutOfTry_Method_lock_out_of_try=Метод Заблокировать() вне блока Попытка-Исключение
LockOutOfTry_Lock_out_of_try = Метод Заблокировать() вне блока Попытка-Исключение
ManagerModuleNamedSelfReferenceCheck_description=Избыточное обращение по собственному имени
LockOutOfTry_Method_lock_out_of_try = Метод Заблокировать() вне блока Попытка-Исключение
ManagerModuleNamedSelfReferenceCheck_issue=Избыточное обращение по собственному имени
ManagerModuleNamedSelfReferenceCheck_description = Избыточное обращение по собственному имени
ManagerModuleNamedSelfReferenceCheck_title=Избыточное обращение по собственному имени в модуле менеджера
ManagerModuleNamedSelfReferenceCheck_issue = Избыточное обращение по собственному имени
ManagerModuleNamedSelfReferenceCheck_title = Избыточное обращение по собственному имени в модуле менеджера
MethodTooManyPramsCheck_Max_parameters = Максимум параметров
@ -260,45 +242,81 @@ ModuleEmptyMethodCheck_Exclude_method_name_pattern_title = Шаблон искл
ModuleEmptyMethodCheck_Title = Проверка пустых методов
ModuleStructureEventFormRegionsCheck_Description = Проверяет методы области обработчиков событий формы относящиеся только к обработчикам
ModuleStructureEventFormRegionsCheck_Event_method__0__can_not_be_placed_in_the_region__1 = Метод "{0}" не следует размещать в области "{1}"
ModuleStructureEventFormRegionsCheck_Event_method__0__should_be_placed_in_the_region__1 = Обработчик события "{0}" следует разместить в области "{1}"
ModuleStructureEventFormRegionsCheck_Excluded_method_names = Исключение имена методов, разделенные запятой
ModuleStructureEventFormRegionsCheck_Multilevel_nesting_of_regions = Разрешить многоуровневое вложение областей
ModuleStructureEventFormRegionsCheck_Title = Проверяет методы области обработчиков событий формы относящиеся только к обработчикам
ModuleStructureEventRegionsCheck_Description = Проверяет область обработчиков событий на наличие методов относящихся только к обработчикам
ModuleStructureEventRegionsCheck_Event_handler__0__not_region__1 = Обработчик событий "{0}" следует разместить в область "{1}"
ModuleStructureEventRegionsCheck_Only_event_methods__0 = В области ''{0}'' следует размещать только обработчики событий
ModuleStructureEventRegionsCheck_Title = Проверяет область обработчиков событий на наличие методов относящихся только к обработчикам
ModuleStructureInitCodeInRegion_Description = Код инициализации следует расположить в области инициализации
ModuleStructureInitCodeInRegion_Issue__0 = Код инициализации следует расположить в области {0}
ModuleStructureInitCodeInRegion_Title = Код инициализации расположен не в правильной области
ModuleStructureMethodInRegionCheck_Description = Проверяет что метод находится вне области, и предлагает поместить метод в одну из стандартных для текущего типа модуля область
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions = Метод "{0}" необходимо разместить в одной из верхнеуровневых областей: {1}
ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions = Разрешить многоуровневое вложение областей
ModuleStructureMethodInRegionCheck_Title = Метод вне области
ModuleStructureTopRegionCheck_Check_duplicates_of_standard_regions = Дубли стандартных областей
ModuleStructureTopRegionCheck_Check_order_of_standard_regions = Порядок стандартных областей
ModuleStructureTopRegionCheck_Exclude_region_name = Список имен областей исключений, разделенный запятой
ModuleStructureTopRegionCheck_Region_has_duplicate = Дублирование стандартной области
ModuleStructureTopRegionCheck_Region_has_the_wrong_order = Неправильный порядок стандартной области
ModuleStructureTopRegionCheck_Region_is_not_standard_for_current_type_of_module = Область не стандартная для текущего типа модуля
ModuleStructureTopRegionCheck_description = Проверить, что области верхнего уровня структуры модуля соответствуют стандарту
ModuleStructureTopRegionCheck_error_message = Стандартная область структуры модуля является вложенной
ModuleStructureTopRegionCheck_title = Стандартная область структуры модуля верхнеуровневая
ModuleStructureTopRegionCheck_Check_duplicates_of_standard_regions=Дубли стандартных областей
ModuleStructureVariablesInRegionCheck_Description = Объявление переменной должно быть помещено в область объявления переменной
ModuleStructureTopRegionCheck_Check_order_of_standard_regions=Порядок стандартных областей
ModuleStructureVariablesInRegionCheck_Issue__0 = Объявление переменной должно быть помещено в область {0}
ModuleStructureTopRegionCheck_Exclude_region_name=Список имен областей исключений, разделенный запятой
ModuleStructureVariablesInRegionCheck_Title = Объявление переменных расположено в правильной области
ModuleStructureTopRegionCheck_Region_has_duplicate=Дублирование стандартной области
ModuleUndefinedFunctionCheck_Description = Функция не определена
ModuleStructureTopRegionCheck_Region_has_the_wrong_order=Неправильный порядок стандартной области
ModuleUndefinedFunctionCheck_Title = Функция не определена
ModuleStructureTopRegionCheck_Region_is_not_standard_for_current_type_of_module=Область не стандартная для текущего типа модуля
ModuleUndefinedFunction_msg = Функция "{0}" не определена
ModuleStructureEventFormRegionsCheck_Multilevel_nesting_of_regions = Разрешить многоуровневое вложение областей
ModuleUndefinedMethodCheck_Description = Функция или процедура не определена
ModuleStructureMethodInRegionCheck_Multilevel_nesting_of_regions = Разрешить многоуровневое вложение областей
ModuleUndefinedMethodCheck_Title = Метод не определен
ModuleStructureMethodInRegionCheck_Title = Метод вне области
ModuleUndefinedMethod_msg = Процедура или функция "{0}" не определена
ModuleStructureMethodInRegionCheck_Description = Проверяет что метод находится вне области, и предлагает поместить метод в одну из стандартных для текущего типа модуля область
ModuleUndefinedVariableCheck_Description = Переменная не определена
ModuleStructureMethodInRegionCheck_Method_should_be_placed_in_one_of_the_standard_regions = Метод "{0}" необходимо разместить в одной из верхнеуровневых областей: {1}
ModuleUndefinedVariableCheck_Title = Переменная не определена
ModuleStructureInitCodeInRegion_Description=Код инициализации следует расположить в области инициализации
ModuleStructureInitCodeInRegion_Issue__0=Код инициализации следует расположить в области {0}
ModuleStructureInitCodeInRegion_Title=Код инициализации расположен не в правильной области
ModuleStructureVariablesInRegionCheck_Description=Объявление переменной должно быть помещено в область объявления переменной
ModuleStructureVariablesInRegionCheck_Issue__0=Объявление переменной должно быть помещено в область {0}
ModuleStructureVariablesInRegionCheck_Title=Объявление переменных расположено в правильной области
ModuleUndefinedVariable_msg = Переменная "{0}" не определена
ModuleUnusedLocalVariableCheck_Description = Проверка модуля на наличие неиспользуемых локальных переменных
@ -316,35 +334,17 @@ ModuleUnusedMethodCheck_Title = Проверка неиспользуемых м
ModuleUnusedMethodCheck_Unused_method__0 = Неиспользуемый метод "{0}"
ModuleStructureEventFormRegionsCheck_Description=Проверяет методы области обработчиков событий формы относящиеся только к обработчикам
NewColorCheck_Use_style_elements = Для изменения оформления следует использовать элементы стиля, а не задавать конкретные значения непосредственно в элементах управления
ModuleStructureEventFormRegionsCheck_Event_method__0__can_not_be_placed_in_the_region__1=Метод "{0}" не следует размещать в области "{1}"
NewColorCheck_Use_style_elements_not_specific_values = Для изменения оформления следует использовать элементы стиля, а не задавать конкретные значения непосредственно в элементах управления. Это требуется для того, чтобы аналогичные элементы управления выглядели одинаково во всех формах, где они встречаются.
ModuleStructureEventFormRegionsCheck_Event_method__0__should_be_placed_in_the_region__1=Обработчик события "{0}" следует разместить в области "{1}"
NewColorCheck_Using_new_color = Использование конструкции "Новый Цвет"
ModuleStructureEventFormRegionsCheck_Excluded_method_names=Исключение имена методов, разделенные запятой
NewFontCheck_Description = Для изменения шрифта следует использовать элементы стиля
ModuleStructureEventFormRegionsCheck_Title=Проверяет методы области обработчиков событий формы относящиеся только к обработчикам
NewFontCheck_Issue = Для изменения шрифта следует использовать элементы стиля
ModuleStructureEventRegionsCheck_Only_event_methods__0 = В области ''{0}'' следует размещать только обработчики событий
ModuleStructureEventRegionsCheck_Description=Проверяет область обработчиков событий на наличие методов относящихся только к обработчикам
ModuleStructureEventRegionsCheck_Event_handler__0__not_region__1=Обработчик событий "{0}" следует разместить в область "{1}"
ModuleStructureEventRegionsCheck_Title=Проверяет область обработчиков событий на наличие методов относящихся только к обработчикам
NewFontCheck_Description=Для изменения шрифта следует использовать элементы стиля
NewFontCheck_Issue=Для изменения шрифта следует использовать элементы стиля
NewFontCheck_Title=Использование конструкции "Новый Шрифт"
NewColorCheck_Use_style_elements=Для изменения оформления следует использовать элементы стиля, а не задавать конкретные значения непосредственно в элементах управления
NewColorCheck_Use_style_elements_not_specific_values=Для изменения оформления следует использовать элементы стиля, а не задавать конкретные значения непосредственно в элементах управления. Это требуется для того, чтобы аналогичные элементы управления выглядели одинаково во всех формах, где они встречаются.
NewColorCheck_Using_new_color=Использование конструкции "Новый Цвет"
NewFontCheck_Title = Использование конструкции "Новый Шрифт"
NotifyDescriptionToServerProcedureCheck_Notify_description_procedure_should_be_export = Процедура описания оповещения должна существовать и быть экспортной
@ -382,21 +382,43 @@ QueryInLoop_description = Проверка запрос в цикле
QueryInLoop_title = Запрос в цикле
ReadingAttributesFromDataBaseCheck_Description = Чтение отдельного реквизита объекта из базы данных
ReadingAttributesFromDataBaseCheck_Issue__0 = При чтении атрибута {0} из ссылки, весь объект импортируется из базы данных
ReadingAttributesFromDataBaseCheck_Message = Разрешить доступ к полю с составным не ссылочным типом
ReadingAttributesFromDataBaseCheck_Title = Чтение отдельного реквизита объекта из базы данных
RedundantExportCheck_Escess_title = Избыточное ключевое слово Экспорт
RedundantExportCheck_Excess_description = Проверка текстов модулей конфигурации на содержание неиспользуемые экспортные процедуры и функции. Проверка выполняет поиск всех ссылок на метод, поэтому может выполняться длительное время.
RedundantExportCheck_Exclude_title = Список исключаемых имен областей, разделенных запятой
RedundantExportCheck_Unused_export_method__0 = Неиспользуемый экспортный метод "{0}"
RegionEmptyCheck_Region_is_empty = Область пустая
RegionEmptyCheck_description = Проверяет что область модуля пустая
RegionEmptyCheck_title = Область пустая
RollbackTransactionCheck_Rollback_transaction_must_be_in_try_catch=Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение"
RollbackTransactionCheck_No_commit_transaction_for_begin_transaction = Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()"
SelfReferenceCheck_check_only_existing_form_properties=Проверять только существующие свойства в форме
RollbackTransactionCheck_Rollback_transaction_must_be_in_try_catch = Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение"
SelfReferenceCheck_Description=Избыточное обращение внутри модуля через псевдоним "ЭтотОбъект" (к методу, свойству или реквизиту)
RollbackTransactionCheck_Transactions_is_broken = Нарушена схема работы с "ОтменитьТранзакцию()"
SelfReferenceCheck_Title=Избыточное использование псевдонима "ЭтотОбъект"
RollbackTransactionCheck_Transactions_is_broken_des = Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение". Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()". Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()". Между "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение.
SelfReferenceCheck_Issue=Избыточное обращение внутри модуля через псевдоним "ЭтотОбъект" (к методу, свойству или реквизиту)
SelfReferenceCheck_Description = Избыточное обращение внутри модуля через псевдоним "ЭтотОбъект" (к методу, свойству или реквизиту)
SelfReferenceCheck_Issue = Избыточное обращение внутри модуля через псевдоним "ЭтотОбъект" (к методу, свойству или реквизиту)
SelfReferenceCheck_Title = Избыточное использование псевдонима "ЭтотОбъект"
SelfReferenceCheck_check_only_existing_form_properties = Проверять только существующие свойства в форме
ServerExecutionSafeModeCheck_description = Отсутствует включение безопасного режима перед вызовом метода "Выполнить" или "Вычислить"
@ -421,14 +443,3 @@ UseNonRecommendedMethods_message = Используется не рекомен
UseNonRecommendedMethods_parameter = Список дополнительных не рекомендуемых методов для проверки
UseNonRecommendedMethods_title = Использование не рекомендуемых методов
ModuleUndefinedVariableCheck_Title = Переменная не определена
ModuleUndefinedVariableCheck_Description = Переменная не определена
ModuleUndefinedVariable_msg = Переменная "{0}" не определена
ModuleUndefinedMethodCheck_Title = Метод не определен
ModuleUndefinedMethodCheck_Description = Функция или процедура не определена
ModuleUndefinedFunctionCheck_Title = Функция не определена
ModuleUndefinedFunctionCheck_Description = Функция не определена
ModuleUndefinedFunction_msg = Функция "{0}" не определена
ModuleUndefinedMethod_msg = Процедура или функция "{0}" не определена

View File

@ -1,3 +1,4 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
###############################################################################
# Copyright (C) 2021-2022, 1C-Soft LLC and others.
#
@ -10,8 +11,11 @@
# Contributors:
# 1C-Soft LLC - initial API and implementation
###############################################################################
RemoveExportFix_Remove_export_keyword_des=Remove Export keyword
RemoveExportFix_Remove_export_keyword_det=Remove Export keyword
ConsecutiveEmptyLinesFix_Details=Clear extra empty lines
ConsecutiveEmptyLinesFix_Description=Clear extra empty lines
ConsecutiveEmptyLinesFix_Description = Clear extra empty lines
ConsecutiveEmptyLinesFix_Details = Clear extra empty lines
RemoveExportFix_Remove_export_keyword_des = Remove Export keyword
RemoveExportFix_Remove_export_keyword_det = Remove Export keyword

View File

@ -1,3 +1,4 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
###############################################################################
# Copyright (C) 2021-2022, 1C-Soft LLC and others.
#
@ -10,8 +11,11 @@
# Contributors:
# 1C-Soft LLC - initial API and implementation
###############################################################################
RemoveExportFix_Remove_export_keyword_des=Удалить ключевое слово Экспорт
RemoveExportFix_Remove_export_keyword_det=Удалить ключевое слово Экспорт
ConsecutiveEmptyLinesFix_Details=Очистить пустые строки
ConsecutiveEmptyLinesFix_Description=Очистить лишние пустые строки
ConsecutiveEmptyLinesFix_Description = Очистить лишние пустые строки
ConsecutiveEmptyLinesFix_Details = Очистить пустые строки
RemoveExportFix_Remove_export_keyword_des = Удалить ключевое слово Экспорт
RemoveExportFix_Remove_export_keyword_det = Удалить ключевое слово Экспорт

View File

@ -52,7 +52,8 @@ FunctionReturnTypeCheck_description = Check of module strict types system that e
FunctionReturnTypeCheck_title = Function returns typed value
InvocationParamIntersectionCheck_Allow_dynamic_types_check_for_local_method_call=Allow dynamic types check for local method call
InvocationParamIntersectionCheck_Allow_dynamic_types_check_for_local_method_call = Allow dynamic types check for local method call
InvocationParamIntersectionCheck_description = Check of module strict types system that invocation expression has intersection with invocation parameter type
InvocationParamIntersectionCheck_title = Invocation parameter types intersects

View File

@ -1,3 +1,4 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
###############################################################################
# Copyright (C) 2022, 1C-Soft LLC and others.
#
@ -10,5 +11,7 @@
# Contributors:
# 1C-Soft LLC - initial API and implementation
###############################################################################
RemoveStrictTypesAnnotationFix_Description=Remove @strict-types annotation from module
RemoveStrictTypesAnnotationFix_Details=Comment in module header that contains annotation "// @strict-types" will be removed
RemoveStrictTypesAnnotationFix_Description = Remove @strict-types annotation from module
RemoveStrictTypesAnnotationFix_Details = Comment in module header that contains annotation "// @strict-types" will be removed

View File

@ -17,7 +17,7 @@
#EndRegion
#Region FormTableItemsEventHandlers//<FromTableName>
#Region FormTableItemsEventHandlers //<FromTableName>
// Enter code here.

View File

@ -17,7 +17,7 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы//<ИмяТаблицыФормы>
#Область ОбработчикиСобытийЭлементовТаблицыФормы //<ИмяТаблицыФормы>
// Код процедур и функций

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.form;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.form.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
@ -40,7 +40,7 @@ Import-Package: com._1c.g5.v8.bm.core;version="[7.5.0,8.0.0)",
com.e1c.g5.v8.dt.check.qfix;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.check;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)",
com.google.common.base;version="[30.1.0,31.0.0)",
com.google.inject;version="[5.0.1,6.0.0)",
com.google.inject.binder;version="[5.0.1,6.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.form</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -19,11 +19,11 @@ DynamicListItemTitleCheck_message = Title of field of dynamic list is not filled
DynamicListItemTitleCheck_title = Dynamic list field title is empty
FormCommandsSingleEventHandlerCheck_Description=Each event must have its own handler procedure
FormCommandsSingleEventHandlerCheck_Description = Each event must have its own handler procedure
FormCommandsSingleEventHandlerCheck_Handler__0__command__1__assigned_to_command__2=The handler "{0}" of command "{1}" is already assigned to command {2}
FormCommandsSingleEventHandlerCheck_Handler__0__command__1__assigned_to_command__2 = The handler "{0}" of command "{1}" is already assigned to command {2}
FormCommandsSingleEventHandlerCheck_Title=One handler assigned to multiple commands
FormCommandsSingleEventHandlerCheck_Title = One handler assigned to multiple commands
FormItemsSingleEventHandlerCheck_description = Each event in the form items should have a unique handler

View File

@ -13,24 +13,18 @@
# Manaev Konstantin - issue #855
###############################################################################
FormCommandsSingleEventHandlerCheck_Description=У каждого события должна быть назначена своя процедура-обработчик
FormCommandsSingleEventHandlerCheck_Handler__0__command__1__assigned_to_command__2=Обработчик "{0}" команды "{1}" уже назначен для команды {2}
FormCommandsSingleEventHandlerCheck_Title=Один обработчик назначен нескольким командам
FormListFieldRefNotAddedCheck_The_Ref_field_is_not_added_to_dynamic_list = Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
FormListFieldRefNotAddedCheck_description = Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
FormListFieldRefNotAddedCheck_title = Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
DynamicListItemTitleCheck_Description = Заголовок поля динамического списка пустой
DynamicListItemTitleCheck_message = Не заполнен заголовок поля динамического списка
DynamicListItemTitleCheck_title = Заголовок поля динамического списка пустой
FormCommandsSingleEventHandlerCheck_Description = У каждого события должна быть назначена своя процедура-обработчик
FormCommandsSingleEventHandlerCheck_Handler__0__command__1__assigned_to_command__2 = Обработчик "{0}" команды "{1}" уже назначен для команды {2}
FormCommandsSingleEventHandlerCheck_Title = Один обработчик назначен нескольким командам
FormItemsSingleEventHandlerCheck_description = У каждого события должна быть назначена своя процедура-обработчик
FormItemsSingleEventHandlerCheck_itemName_dot_eventName = {0}.{1}
@ -39,6 +33,12 @@ FormItemsSingleEventHandlerCheck_the_handler_is_already_assigned_to_event = Об
FormItemsSingleEventHandlerCheck_title = У события должен быть уникальный обработчик
FormListFieldRefNotAddedCheck_The_Ref_field_is_not_added_to_dynamic_list = Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
FormListFieldRefNotAddedCheck_description = Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
FormListFieldRefNotAddedCheck_title = Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
FormListRefUseAlwaysFlagDisabledCheck_UseAlways_flag_is_disabled_for_the_Ref_field = У реквизита "Ссылка" динамического списка выключен признак "Использовать всегда"
FormListRefUseAlwaysFlagDisabledCheck_description = У реквизита "Ссылка" динамического списка выключен признак "Использовать всегда"

View File

@ -1,3 +1,4 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
###############################################################################
# Copyright (C) 2022, 1C-Soft LLC and others.
#
@ -10,6 +11,7 @@
# Contributors:
# 1C-Soft LLC - initial API and implementation
###############################################################################
DynamicListFieldTitleGenerateFix_Default_title = Generate default title for dynamic list field (8.3.19+)
DynamicListFieldTitleGenerateFix_title = Generate title "{0}" for dynamic list field "{1}"

View File

@ -1,3 +1,4 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
###############################################################################
# Copyright (C) 2022, 1C-Soft LLC and others.
#
@ -18,4 +19,4 @@ DynamicListFieldTitleGenerateFix_title = Генерировать заголов
DynamicListItemTitleGenerateFix_Default_title = Генерировать заголовок по умолчанию для элемента формы динамического списка
DynamicListItemTitleGenerateFix_title = Генерировать заголовок "{0}" для элемента формы "{1}" динамического списка
DynamicListItemTitleGenerateFix_title = Генерировать заголовок "{0}" для элемента формы "{1}" динамического списка

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.md.ui;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.md.ui.UiPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui;bundle-version="[3.119.0,4.0.0)",
@ -26,6 +26,6 @@ Import-Package: com._1c.g5.v8.dt.common;version="[6.4.0,7.0.0)",
com._1c.g5.v8.dt.ui.wizards;version="[8.0.0,9.0.0)",
com._1c.g5.wiring;version="[2.2.0,3.0.0)",
com._1c.g5.wiring.binder;version="[1.1.0,2.0.0)",
com.e1c.v8codestyle.md;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.md;version="[0.5.0,0.6.0)",
com.google.common.base;version="[30.1.0,31.0.0)",
com.google.inject;version="[5.0.1,6.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.md.ui</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.md;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.md.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
@ -29,7 +29,7 @@ Import-Package: com._1c.g5.v8.bm.core;version="[7.0.0,8.0.0)",
com.e1c.g5.v8.dt.check.context;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.ext;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.check;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)",
com.google.common.base;version="[30.1.0,31.0.0)",
com.google.inject;version="[5.0.1,6.0.0)"
Export-Package: com.e1c.v8codestyle.md;version="0.4.0"
Export-Package: com.e1c.v8codestyle.md;version="0.5.0"

View File

@ -0,0 +1,11 @@
# Privileged common module should end with FullAccess suffix
Privileged common module should end with FullAccess suffix
## Noncompliant Code Example
## Compliant Solution
## See

View File

@ -0,0 +1,16 @@
# Global client common module should end with Global suffix no Client suffix
3.2.1. Add the "Global" postfix for global modules. In this case, you do not need to add the "Client" postfix.
## Noncompliant Code Example
FilesOperationsGlobalClient, InfobaseUpdateGlobalClient.
## Compliant Solution
FilesOperationsGlobal, InfobaseUpdateGlobal.
## See
[Common modules creating rules](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_Development_Standards/Creating_and_modifying_metadata_objects/Configuration_operation_arrangement/Common_modules_creating_rules/)

View File

@ -0,0 +1,17 @@
# In document that require posting don't set flat "Post (unpost) in privileged mode"
All documents that require posting must have the "Privileged mode for posting"
and "Privileged mode for unposting" check boxes selected. Therefore it is not necessary
to create roles that grant rights to change registers subordinate to recorders.
Exception: documents intended for direct adjustment of register records can be posted
with access right verification, but in this case, it is necessary to include roles that
grant rights to change registers.
## Noncompliant Solution
## 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/)

View File

@ -0,0 +1,18 @@
# Attribute "Comment" for documents
For all documents, it is recommended to create the Comment attribute (string of unlimited length).
In this attribute, users can write down various notes of an official nature on the document
that are not related to the application specifics of the document (for example, the reason for marking for deletion, etc.).
Access to the attribute for users must be configured in the same way as to the document itself
(if the document is read-only, then the comment is read-only; if there is write access to the document,
then the value of the attribute can also be changed).
Multiline edit must be enabled.
## Noncompliant Code Example
## Compliant Solution
## See
[Attribute "Comment" for documents](https://its.1c.ru/db/v8std#content:531:hdoc:1)

View File

@ -0,0 +1,18 @@
# Document does not have the "Comment" attribute
For all documents, it is recommended to create the attribute Comment
(string of unlimited length). In this prop, users can
write down various official notes on the document, which
do not relate to the application specifics of the document (for example, the reason for marking
for deletions, etc.). Access to props for users should be
configured in the same way as for the document itself (if the document is available only
for reading, then the comment is read-only; if there is a right
document record, then the attribute value can also be changed).
## Неправильно
## Правильно
## См.
[Document does not have the "Comment" attribute](https://its.1c.ru/db/v8std#content:531:hdoc:1)

View File

@ -0,0 +1,12 @@
# Привилегированный общий модуль должен оканчиваться на суффикс ПолныеПрава
Привилегированный общий модуль должен оканчиваться на суффикс ПолныеПрава
## Неправильно
## Правильно
## См.
[Правила создания общих модулей](https://its.1c.ru/db/v8std#content:469:hdoc:3.2.2)

View File

@ -0,0 +1,17 @@
# Глобальный клиентский общий модуль должен оканчиваться на суффикс Глобальный без суффикса Клиент
3.2.1. Для глобальных модулей добавляется постфикс «Глобальный», в
этом случае постфикс «Клиент» добавлять не следует.
## Неправильно
РаботаСФайламиГлобальныйКлиент
## Правильно
РаботаСФайламиГлобальный
## См.
[Правила создания общих модулей](https://its.1c.ru/db/v8std#content:469:hdoc:3.2.1)

View File

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

View File

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

View File

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

View File

@ -98,10 +98,30 @@
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.SubsystemSynonymTooLongCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameGlobalClientCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.CommonModuleNamePrivilegedCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.ExtensionMdObjectNamePrefixCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.DocumentPostInPrivilegedModeCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.MdObjectAttributeCommentCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.MdObjectAttributeCommentNotExistCheck">
</check>
</extension>
</plugin>

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.md</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -66,8 +66,8 @@ public final class CommonModuleNameGlobal
protected void configureCheck(CheckConfigurer builder)
{
//@formatter:off
builder.title(Messages.CommonModuleNameGlobal_title)
.description(Messages.CommonModuleNameGlobal_description)
builder.title(Messages.CommonModuleNameGlobal_Title)
.description(Messages.CommonModuleNameGlobal_Description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.CRITICAL)
.issueType(IssueType.WARNING)
@ -111,7 +111,7 @@ public final class CommonModuleNameGlobal
return;
}
String message = MessageFormat.format(Messages.CommonModuleNameGlobal_message,
String message = MessageFormat.format(Messages.CommonModuleNameGlobal_Message,
parameters.getString(MdObjectNameWithoutSuffix.NAME_SUFFIX_PARAMETER_NAME));
resultAceptor.addIssue(message, MD_OBJECT__NAME);
}

View File

@ -0,0 +1,104 @@
/*******************************************************************************
* 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.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__GLOBAL;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.MD_OBJECT__NAME;
import java.text.MessageFormat;
import org.eclipse.core.runtime.IProgressMonitor;
import com._1c.g5.v8.dt.core.platform.IV8Project;
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant;
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;
import com.google.inject.Inject;
/**
* Checks client global common module name has not "Client" suffix
*
* @author Artem Iliukhin
*/
public class CommonModuleNameGlobalClientCheck
extends BasicCheck
{
private static final String CHECK_ID = "common-module-name-global-client"; //$NON-NLS-1$
private static final String NAME_SUFFIX_RU = "Клиент"; //$NON-NLS-1$
private static final String NAME_SUFFIX_EN = "Client"; //$NON-NLS-1$
private final IV8ProjectManager v8ProjectManager;
/**
* Instantiates a new common module name global client check.
*
* @param v8ProjectManager
*/
@Inject
public CommonModuleNameGlobalClientCheck(IV8ProjectManager v8ProjectManager)
{
super();
this.v8ProjectManager = v8ProjectManager;
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.CommonModuleNameGlobalClientCheck_Title)
.description(Messages.CommonModuleNameGlobalClientCheck_Description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.CRITICAL)
.issueType(IssueType.WARNING)
.extension(new StandardCheckExtension(469, getCheckId(), CorePlugin.PLUGIN_ID))
.topObject(COMMON_MODULE)
.checkTop()
.features(MD_OBJECT__NAME, COMMON_MODULE__GLOBAL);
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
CommonModule commonModule = (CommonModule)object;
if (!commonModule.isGlobal())
{
return;
}
IV8Project project = v8ProjectManager.getProject(commonModule);
ScriptVariant variant = project == null ? ScriptVariant.ENGLISH : project.getScriptVariant();
String name = commonModule.getName();
String suffix = ScriptVariant.ENGLISH == variant ? NAME_SUFFIX_EN : NAME_SUFFIX_RU;
if (name.contains(suffix))
{
String message = MessageFormat.format(Messages.CommonModuleNameGlobalClientCheck_Message, suffix);
resultAceptor.addIssue(message, MD_OBJECT__NAME);
}
}
}

View File

@ -0,0 +1,83 @@
/*******************************************************************************
* 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.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__PRIVILEGED;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.MD_OBJECT__NAME;
import java.text.MessageFormat;
import org.eclipse.core.runtime.IProgressMonitor;
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.BasicCheck;
import com.e1c.g5.v8.dt.check.components.TopObjectFilterExtension;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
/**
* Check privileged common module name has "FullAccess" suffix
*
* @author Artem Iliukhin
*/
public class CommonModuleNamePrivilegedCheck
extends BasicCheck
{
private static final String CHECK_ID = "common-module-name-full-access"; //$NON-NLS-1$
private static final String NAME_SUFFIX_DEFAULT = "ПолныеПрава,FullAccess"; //$NON-NLS-1$
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.CommonModuleNamePrivilegedCheck_Title)
.description(Messages.CommonModuleNamePrivilegedCheck_Description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.CRITICAL)
.issueType(IssueType.WARNING)
.extension(new TopObjectFilterExtension())
.extension(new MdObjectNameWithoutSuffix(NAME_SUFFIX_DEFAULT))
.extension(new StandardCheckExtension(469, getCheckId(), CorePlugin.PLUGIN_ID))
.extension(new SkipAdoptedInExtensionMdObjectExtension())
.topObject(COMMON_MODULE)
.checkTop()
.features(MD_OBJECT__NAME, COMMON_MODULE__PRIVILEGED);
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
CommonModule commonModule = (CommonModule)object;
if (!commonModule.isPrivileged())
{
return;
}
String message = MessageFormat.format(Messages.CommonModuleNamePrivilegedCheck_Issue,
parameters.getString(MdObjectNameWithoutSuffix.NAME_SUFFIX_PARAMETER_NAME));
resultAceptor.addIssue(message, MD_OBJECT__NAME);
}
}

View File

@ -0,0 +1,108 @@
/*******************************************************************************
* 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.DOCUMENT;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__POSTING;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__POST_IN_PRIVILEGED_MODE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__UNPOST_IN_PRIVILEGED_MODE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__REGISTER_RECORDS;
import org.eclipse.core.runtime.IProgressMonitor;
import com._1c.g5.v8.dt.metadata.mdclass.Document;
import com._1c.g5.v8.dt.metadata.mdclass.Posting;
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;
/**
* The check that in the document that allow posting set flags "Post in privileged mode"
* and "Unpost in privileged mode".
*
* @author Vadim Gocnharov
*/
public class DocumentPostInPrivilegedModeCheck
extends BasicCheck
{
private static final String CHECK_ID = "document-post-in-privileged-mode"; //$NON-NLS-1$
public DocumentPostInPrivilegedModeCheck()
{
super();
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.DocumentPostInPrivilegedModeCheck_title)
.description(Messages.DocumentPostInPrivilegedModeCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MAJOR)
.issueType(IssueType.WARNING)
.extension(new StandardCheckExtension(689, getCheckId(), CorePlugin.PLUGIN_ID))
.extension(new SkipAdoptedInExtensionMdObjectExtension())
.topObject(DOCUMENT)
.checkTop()
.features(DOCUMENT__POSTING, DOCUMENT__POST_IN_PRIVILEGED_MODE, DOCUMENT__UNPOST_IN_PRIVILEGED_MODE,
DOCUMENT__REGISTER_RECORDS);
}
@Override
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
Document document = (Document)object;
if (monitor.isCanceled() || !documentRequirePosting(document) || !documentHaveRegisterRecords(document))
{
return;
}
if (!document.isPostInPrivilegedMode())
{
resultAcceptor.addIssue(Messages.DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode,
DOCUMENT__POST_IN_PRIVILEGED_MODE);
}
if (!document.isUnpostInPrivilegedMode())
{
resultAcceptor.addIssue(Messages.DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode,
DOCUMENT__UNPOST_IN_PRIVILEGED_MODE);
}
}
private boolean documentRequirePosting(Document doc)
{
return doc.getPosting() == Posting.ALLOW;
}
private boolean documentHaveRegisterRecords(Document doc)
{
return !doc.getRegisterRecords().isEmpty();
}
}

View File

@ -0,0 +1,214 @@
/*******************************************************************************
* 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 #133
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.BASIC_FEATURE__MULTI_LINE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.BASIC_FEATURE__TYPE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG_ATTRIBUTE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT_ATTRIBUTE;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import com._1c.g5.v8.dt.mcore.StringQualifiers;
import com._1c.g5.v8.dt.mcore.TypeDescription;
import com._1c.g5.v8.dt.mcore.TypeItem;
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
import com._1c.g5.v8.dt.metadata.mdclass.BasicFeature;
import com._1c.g5.v8.dt.metadata.mdclass.CatalogAttribute;
import com._1c.g5.v8.dt.metadata.mdclass.DefinedType;
import com._1c.g5.v8.dt.metadata.mdclass.DocumentAttribute;
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.BasicCheck;
import com.e1c.g5.v8.dt.check.components.TopObjectFilterExtension;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
/**
* Check attributes of catalogs and documents that named "Comment".
* The attribute must be of the unlimited string type. Multiline edit must be enabled.
*
* @author Vadim Goncharov
*/
public class MdObjectAttributeCommentCheck
extends BasicCheck
{
private static final String CHECK_ID = "md-object-attribute-comment-incorrect-type"; //$NON-NLS-1$
public static final String PARAM_CHECK_DOCUMENTS = "checkDocuments"; //$NON-NLS-1$
public static final String PARAM_CHECK_CATALOGS = "checkCatalogs"; //$NON-NLS-1$
public static final String PARAM_ATTRIBUTES_LIST = "attributesList"; //$NON-NLS-1$
public static final String DEFAULT_CHECK_DOCUMENTS = Boolean.toString(true);
public static final String DEFAULT_CHECK_CATALOGS = Boolean.toString(false);
private static final Set<String> COMMENT_ATTRIBUTES_LIST = Set.of("Комментарий", //$NON-NLS-1$
"Comment"); //$NON-NLS-1$
private static final String DELIMITER = ","; //$NON-NLS-1$
public static final String DEFAULT_ATTRIBUTES_LIST = String.join(DELIMITER, COMMENT_ATTRIBUTES_LIST);
private static final String DEFAULT_CHECK_MESSAGE = Messages.MdObjectAttributeCommentCheck_Default_check_message;
public MdObjectAttributeCommentCheck()
{
super();
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.MdObjectAttributeCommentCheck_title)
.description(Messages.MdObjectAttributeCommentCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.UI_STYLE)
.extension(new StandardCheckExtension(531, getCheckId(), CorePlugin.PLUGIN_ID))
.extension(new SkipAdoptedInExtensionMdObjectExtension())
.extension(new TopObjectFilterExtension())
.parameter(PARAM_ATTRIBUTES_LIST, String.class, DEFAULT_ATTRIBUTES_LIST,
Messages.MdObjectAttributeCommentCheck_Attribute_list);
builder.topObject(CATALOG)
.containment(CATALOG_ATTRIBUTE)
.features(BASIC_FEATURE__TYPE, BASIC_FEATURE__MULTI_LINE)
.parameter(PARAM_CHECK_CATALOGS, Boolean.class, DEFAULT_CHECK_CATALOGS,
Messages.MdObjectAttributeCommentCheck_Check_catalogs_param);
builder.topObject(DOCUMENT)
.containment(DOCUMENT_ATTRIBUTE)
.features(BASIC_FEATURE__TYPE, BASIC_FEATURE__MULTI_LINE)
.parameter(PARAM_CHECK_DOCUMENTS, Boolean.class, DEFAULT_CHECK_DOCUMENTS,
Messages.MdObjectAttributeCommentCheck_Check_documents_param);
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
boolean checkCatalogs = parameters.getBoolean(PARAM_CHECK_CATALOGS);
boolean checkDocuments = parameters.getBoolean(PARAM_CHECK_DOCUMENTS);
Set<String> attributeList = getListOfAttributes(parameters);
BasicFeature attribute = (BasicFeature)object;
String attributeName = attribute.getName();
if (!attributeList.contains(attributeName))
{
return;
}
if (!monitor.isCanceled() && checkDocuments && isDocumentAttribute(object))
{
checkAttribute(attribute, resultAceptor);
}
if (!monitor.isCanceled() && checkCatalogs && isCatalogAttribute(object))
{
checkAttribute(attribute, resultAceptor);
}
}
private void checkAttribute(BasicFeature attribute, ResultAcceptor resultAceptor)
{
checkAttritubeType(attribute, resultAceptor);
checkAttributeIsMultiline(attribute, resultAceptor);
}
private void checkAttritubeType(BasicFeature attribute, ResultAcceptor resultAceptor)
{
TypeDescription typeDesc = attribute.getType();
if (McoreUtil.isCompoundType(typeDesc))
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
return;
}
TypeItem item = typeDesc.getTypes().get(0);
if (IEObjectTypeNames.DEFINED_TYPE.equals(McoreUtil.getTypeCategory(item)))
{
EObject definedType = item.eContainer();
while (definedType != null && !(definedType instanceof DefinedType))
{
definedType = definedType.eContainer();
}
if (definedType instanceof DefinedType)
{
typeDesc = ((DefinedType)definedType).getType();
}
}
StringQualifiers qualifiers = typeDesc.getStringQualifiers();
if (qualifiers == null)
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
return;
}
if (qualifiers.getLength() != 0)
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
}
}
private void checkAttributeIsMultiline(BasicFeature attribute, ResultAcceptor resultAceptor)
{
if (!attribute.isMultiLine())
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__MULTI_LINE);
}
}
private Set<String> getListOfAttributes(ICheckParameters parameters)
{
Set<String> attributes = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
String paramAttributesString = parameters.getString(PARAM_ATTRIBUTES_LIST);
Set<String> paramsAttributes = Set.of(paramAttributesString.replace(" ", "").split(DELIMITER)); //$NON-NLS-1$ //$NON-NLS-2$
attributes.addAll(paramsAttributes);
return attributes;
}
private boolean isCatalogAttribute(Object object)
{
return object instanceof CatalogAttribute;
}
private boolean isDocumentAttribute(Object object)
{
return object instanceof DocumentAttribute;
}
}

View File

@ -0,0 +1,182 @@
/*******************************************************************************
* 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 Gocnharov - issue #487
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import java.util.Set;
import java.util.TreeSet;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG__ATTRIBUTES;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__ATTRIBUTES;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.EList;
import com._1c.g5.v8.dt.metadata.mdclass.Catalog;
import com._1c.g5.v8.dt.metadata.mdclass.CatalogAttribute;
import com._1c.g5.v8.dt.metadata.mdclass.DbObjectAttribute;
import com._1c.g5.v8.dt.metadata.mdclass.Document;
import com._1c.g5.v8.dt.metadata.mdclass.DocumentAttribute;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.BasicCheck;
import com.e1c.g5.v8.dt.check.components.TopObjectFilterExtension;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
/**
* Check top Metadata object (Catalog or Document) have attribute named "Comment"
*
* @author Vadim Goncharov
*/
public class MdObjectAttributeCommentNotExistCheck
extends BasicCheck
{
private static final String CHECK_ID = "md-object-attribute-comment-not-exist"; //$NON-NLS-1$
public static final String PARAM_CHECK_DOCUMENTS = "checkDocuments"; //$NON-NLS-1$
public static final String PARAM_CHECK_CATALOGS = "checkCatalogs"; //$NON-NLS-1$
public static final String PARAM_ATTRIBUTE_NAMES_LIST = "attributesList"; //$NON-NLS-1$
public static final String DEFAULT_CHECK_DOCUMENTS = Boolean.toString(true);
public static final String DEFAULT_CHECK_CATALOGS = Boolean.toString(false);
private static final Set<String> ATTRIBUTE_NAMES_LIST = Set.of("Комментарий", //$NON-NLS-1$
"Comment"); //$NON-NLS-1$
private static final String DELIMITER = ","; //$NON-NLS-1$
public static final String DEFAULT_ATTRIBUTE_NAMES_LIST = String.join(DELIMITER, ATTRIBUTE_NAMES_LIST);
public MdObjectAttributeCommentNotExistCheck()
{
super();
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.MdObjectAttributeCommentNotExist_title)
.description(Messages.MdObjectAttributeCommentNotExist_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MINOR)
.issueType(IssueType.UI_STYLE)
.extension(new StandardCheckExtension(531, getCheckId(), CorePlugin.PLUGIN_ID))
.extension(new SkipAdoptedInExtensionMdObjectExtension())
.extension(new TopObjectFilterExtension())
.parameter(PARAM_ATTRIBUTE_NAMES_LIST, String.class, DEFAULT_ATTRIBUTE_NAMES_LIST,
Messages.MdObjectAttributeCommentNotExist_Param_Attribute_name_list);
builder.topObject(DOCUMENT)
.checkTop()
.features(DOCUMENT__ATTRIBUTES)
.parameter(PARAM_CHECK_DOCUMENTS, Boolean.class, DEFAULT_CHECK_DOCUMENTS,
Messages.MdObjectAttributeCommentNotExist_Param_Check_Documents);
builder.topObject(CATALOG)
.checkTop()
.features(CATALOG__ATTRIBUTES)
.parameter(PARAM_CHECK_CATALOGS, Boolean.class, DEFAULT_CHECK_CATALOGS,
Messages.MdObjectAttributeCommentNotExist_Param_Check_Catalogs);
}
@Override
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
boolean attributeExist = false;
boolean checkCatalogs = parameters.getBoolean(PARAM_CHECK_CATALOGS);
boolean checkDocuments = parameters.getBoolean(PARAM_CHECK_DOCUMENTS);
Set<String> attributeNamesList = getListOfAttributeNames(parameters);
if (monitor.isCanceled())
{
return;
}
if (object instanceof Document && checkDocuments)
{
Document document = (Document)object;
EList<DocumentAttribute> attributes = document.getAttributes();
for (DbObjectAttribute attribute : attributes)
{
if (monitor.isCanceled())
{
return;
}
if (isAttributeNamedComment(attribute, attributeNamesList))
{
attributeExist = true;
break;
}
}
}
else if (object instanceof Catalog && checkCatalogs)
{
Catalog catalog = (Catalog)object;
EList<CatalogAttribute> attributes = catalog.getAttributes();
for (DbObjectAttribute attribute : attributes)
{
if (monitor.isCanceled())
{
return;
}
if (isAttributeNamedComment(attribute, attributeNamesList))
{
attributeExist = true;
break;
}
}
}
if (!monitor.isCanceled() && !attributeExist)
{
resultAcceptor
.addIssue(Messages.MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist, object);
}
}
private boolean isAttributeNamedComment(DbObjectAttribute attribute, Set<String> attributeNamesList)
{
return attributeNamesList.contains(attribute.getName());
}
private Set<String> getListOfAttributeNames(ICheckParameters parameters)
{
Set<String> attributeNames = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
String paramAttributesString = parameters.getString(PARAM_ATTRIBUTE_NAMES_LIST);
Set<String> paramsAttributeNames = Set.of(paramAttributesString.replace(" ", "").split(DELIMITER)); //$NON-NLS-1$ //$NON-NLS-2$
attributeNames.addAll(paramsAttributeNames);
return attributeNames;
}
}

View File

@ -27,14 +27,32 @@ final class Messages
public static String DbObjectRefNonRefTypesCheck_Description;
public static String DbObjectRefNonRefTypesCheck_Ref_and_other;
public static String DbObjectRefNonRefTypesCheck_Title;
public static String MdObjectAttributeCommentCheck_Attribute_list;
public static String MdObjectAttributeCommentCheck_Check_catalogs_param;
public static String MdObjectAttributeCommentCheck_Check_documents_param;
public static String MdObjectAttributeCommentCheck_Default_check_message;
public static String MdObjectAttributeCommentCheck_description;
public static String MdObjectAttributeCommentCheck_title;
public static String MdObjectAttributeCommentNotExist_description;
public static String MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist;
public static String MdObjectAttributeCommentNotExist_Param_Check_Catalogs;
public static String MdObjectAttributeCommentNotExist_Param_Check_Documents;
public static String MdObjectAttributeCommentNotExist_Param_Attribute_name_list;
public static String MdObjectAttributeCommentNotExist_title;
public static String MdObjectNameWithoutSuffix_Name_suffix_list_title;
public static String CommonModuleNameClient_title;
public static String CommonModuleNameClientServer_description;
public static String CommonModuleNameClientServer_message;
public static String CommonModuleNameClientServer_title;
public static String CommonModuleNameGlobal_description;
public static String CommonModuleNameGlobal_message;
public static String CommonModuleNameGlobal_title;
public static String CommonModuleNamePrivilegedCheck_Description;
public static String CommonModuleNamePrivilegedCheck_Issue;
public static String CommonModuleNamePrivilegedCheck_Title;
public static String CommonModuleNameGlobal_Description;
public static String CommonModuleNameGlobal_Message;
public static String CommonModuleNameGlobal_Title;
public static String CommonModuleNameGlobalClientCheck_Description;
public static String CommonModuleNameGlobalClientCheck_Message;
public static String CommonModuleNameGlobalClientCheck_Title;
public static String CommonModuleType_description;
public static String CommonModuleType_message;
public static String CommonModuleType_title;
@ -47,6 +65,10 @@ final class Messages
public static String DbObjectAnyRefCheck_AnyRef;
public static String DbObjectAnyRefCheck_Description;
public static String DbObjectAnyRefCheck_Title;
public static String DocumentPostInPrivilegedModeCheck_description;
public static String DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode;
public static String DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode;
public static String DocumentPostInPrivilegedModeCheck_title;
public static String ExtensionMdObjectNamePrefixCheck_Description;
public static String ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix;
public static String ExtensionMdObjectNamePrefixCheck_Title;

View File

@ -11,11 +11,29 @@ CommonModuleNameClient_message = Client common module name should end with "{0}"
CommonModuleNameClient_title = Client common module should end with Client suffix
CommonModuleNameGlobal_description = Global common module should end with Global suffix
CommonModuleNameGlobalClientCheck_Description = Global common module should end with Global suffix
CommonModuleNameGlobal_message = Global common module should end with "{0}" suffix
CommonModuleNameGlobalClientCheck_Message = Global common module should not have "{0}" suffix
CommonModuleNameGlobal_title = Global common module should end with Global suffix
CommonModuleNameGlobalClientCheck_Title = Global common module should end with Global suffix
CommonModuleNameGlobal_Description = Global common module should end with Global suffix
CommonModuleNameGlobal_Message = Global common module should end with "{0}" suffix
CommonModuleNameGlobal_Title = Global common module should end with Global suffix
CommonModuleNamePrivilegedCheck_Description = Privileged common module should end with FullAccess suffix
CommonModuleNamePrivilegedCheck_Issue = Privileged common module should end with "{0}" suffix
CommonModuleNamePrivilegedCheck_Title = Privileged common module should end with FullAccess suffix
CommonModuleNameServerCallPostfixCheck_0 = Common module should end with {0}
CommonModuleNameServerCallPostfixCheck_Common_module_name_description = Common module should end with correct postfix
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title = Common module should end with correct postfix
CommonModuleType_description = Common module has incorrect type
@ -29,35 +47,31 @@ ConfigurationDataLock_message = Application should use managed data lock mode
ConfigurationDataLock_title = Configuration data lock mode
CommonModuleNameServerCallPostfixCheck_0=Common module should end with {0}
DbObjectAnyRefCheck_AnyRef = Do not use composite types AnyRef, CatalogRef, DocumentRef, and other for standard metadata objects stored in the infobase.
CommonModuleNameServerCallPostfixCheck_Common_module_name_description=Common module should end with correct postfix
DbObjectAnyRefCheck_Description = Do not use composite types AnyRef, CatalogRef, DocumentRef, and other for standard metadata objects stored in the infobase.
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title=Common module should end with correct postfix
DbObjectAnyRefCheck_Title = Restrictions on the use of any ref type attributes
DbObjectAnyRefCheck_AnyRef=Do not use composite types AnyRef, CatalogRef, DocumentRef, and other for standard metadata objects stored in the infobase.
DbObjectRefNonRefTypesCheck_Description = Composite type attributes used in join conditions, filters, and for ordering must contain only reference attribute types (CatalogRef. ..., DocumentRef. ..., and other). Do not include any other non-reference types in this type. For example: String, Number, Date, UUID, Boolean, and ValueStorage.
DbObjectAnyRefCheck_Description=Do not use composite types AnyRef, CatalogRef, DocumentRef, and other for standard metadata objects stored in the infobase.
DbObjectRefNonRefTypesCheck_Ref_and_other = Composite type attributes used in join conditions, filters, and for ordering must contain only reference attribute types (CatalogRef. ..., DocumentRef. ..., and other). Do not include any other non-reference types in this type.
DbObjectAnyRefCheck_Title=Restrictions on the use of any ref type attributes
DbObjectRefNonRefTypesCheck_Title = Restrictions on the use of composite type attributes
DbObjectRefNonRefTypesCheck_Description=Composite type attributes used in join conditions, filters, and for ordering must contain only reference attribute types (CatalogRef. ..., DocumentRef. ..., and other). Do not include any other non-reference types in this type. For example: String, Number, Date, UUID, Boolean, and ValueStorage.
DocumentPostInPrivilegedModeCheck_title = In document that allow posting don't set flag "Post/Unpost in privileged mode"
DbObjectRefNonRefTypesCheck_Ref_and_other=Composite type attributes used in join conditions, filters, and for ordering must contain only reference attribute types (CatalogRef. ..., DocumentRef. ..., and other). Do not include any other non-reference types in this type.
DocumentPostInPrivilegedModeCheck_description = In document that allow posting don't set flag "Post/Unpost in privileged mode"
DbObjectRefNonRefTypesCheck_Title=Restrictions on the use of composite type attributes
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = In document that allow posting don't set flag "Post in privileged mode"
CommonModuleNameServerCallPostfixCheck_0=Common module should end with {0}
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = In document that allow posting don't set flag "Unpost in privileged mode"
CommonModuleNameServerCallPostfixCheck_Common_module_name_description=Common module should end with correct postfix
ExtensionMdObjectNamePrefixCheck_Description = The object name of the extension object does not have a prefix corresponding to the prefix of the extension itself
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title=Common module should end with correct postfix
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix = The object "{0}" should have "{1}" prefix
ExtensionMdObjectNamePrefixCheck_Description=The object name of the extension object does not have a prefix corresponding to the prefix of the extension itself
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix=The object "{0}" should have "{1}" prefix
ExtensionMdObjectNamePrefixCheck_Title=Extension object name does not have extension prefix
ExtensionMdObjectNamePrefixCheck_Title = Extension object name does not have extension prefix
MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled = Neither Object presentation nor List presentation is not filled
@ -65,6 +79,30 @@ MdListObjectPresentationCheck_decription = Neither Object presentation nor List
MdListObjectPresentationCheck_title = Neither Object presentation nor List presentation is not filled
MdObjectAttributeCommentCheck_Attribute_list=Attributes list
MdObjectAttributeCommentCheck_Check_catalogs_param=Check Catalogs
MdObjectAttributeCommentCheck_Check_documents_param=Check Documents
MdObjectAttributeCommentCheck_Default_check_message=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_description=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_title=The attribute "Comment" has an invalid type
MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist = Md Object attribute "Comment" does not exist
MdObjectAttributeCommentNotExist_Param_Attribute_name_list = Attribute name list
MdObjectAttributeCommentNotExist_Param_Check_Catalogs = Check catalogs
MdObjectAttributeCommentNotExist_Param_Check_Documents = Check documents
MdObjectAttributeCommentNotExist_description = Md Object attribute "Comment" does not exist
MdObjectAttributeCommentNotExist_title = Md Object attribute "Comment" does not exist
MdObjectNameLength_Maximum_name_length_description = Maximum name length
MdObjectNameLength_description = Metadata object name length should be less than {0}
@ -97,12 +135,6 @@ MdScheduledJobPeriodicityCheck_description = The minimum job interval is less th
MdScheduledJobPeriodicityCheck_title = The minimum job interval is less then {0}s
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase=Avoid storing passwords in the infobase
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description=To minimize risks of unauthorized access to passwords, avoid storing passwords in the infobase.
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_error=Avoid storing passwords in the infobase
RegisterResourcePrecisionCheck_description = Accumulation or accounting register resource precision is more than 25
RegisterResourcePrecisionCheck_message = Accumulation or accounting register resource "{0}" precision is more than {1}
@ -118,3 +150,9 @@ SubsystemSynonymTooLongCheck_Maximum_section_name_length = Maximum section name
SubsystemSynonymTooLongCheck_description = Section name is more than 35 characters long
SubsystemSynonymTooLongCheck_title = Section name is more than 35 characters long
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase = Avoid storing passwords in the infobase
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description = To minimize risks of unauthorized access to passwords, avoid storing passwords in the infobase.
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_error = Avoid storing passwords in the infobase

View File

@ -12,15 +12,33 @@ CommonModuleNameClient_message = Клиентский общий модуль д
CommonModuleNameClient_title = Клиентский общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameGlobal_description = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobalClientCheck_Description = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobal_message = Глобальный общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameGlobalClientCheck_Message = Глобальный общий модуль не должен содержать суффикс "{0}"
CommonModuleNameGlobal_title = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobalClientCheck_Title = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobal_Description = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobal_Message = Глобальный общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameGlobal_Title = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNamePrivilegedCheck_Description = Привилегированный модуль должен оканчиваться на суффикс ПолныеПрава
CommonModuleNamePrivilegedCheck_Issue = Привилегированный модуль должен оканчиваться на суффикс "{0}"
CommonModuleNamePrivilegedCheck_Title = Привилегированный модуль должен оканчиваться на суффикс ПолныеПрава
CommonModuleNameServerCallPostfixCheck_0 = Общий модуль должен именоваться с постфиксом {0}
CommonModuleNameServerCallPostfixCheck_Common_module_name_description = Общий модуль должен именоваться с постфиксом
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title = Общий модуль должен именоваться с постфиксом
CommonModuleType_description = Общий модуль имеет некорректный тип
CommonModuleType_message = Общий модуль для типа "{0}" имеет некорректне настройки: {1}
CommonModuleType_message = Общий модуль для типа "{0}" имеет некорректные настройки: {1}
CommonModuleType_title = Общий модуль имеет некорректный тип
@ -30,35 +48,31 @@ ConfigurationDataLock_message = Приложение должно использ
ConfigurationDataLock_title = Режим блокировки данных конфигурации
CommonModuleNameServerCallPostfixCheck_0 = Общий модуль должен именоваться с постфиксом {0}
DbObjectAnyRefCheck_AnyRef = Для типизированных объектов метаданных, хранящихся в информационной базе, не следует использовать составные типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные.
CommonModuleNameServerCallPostfixCheck_Common_module_name_description=Общий модуль должен именоваться с постфиксом
DbObjectAnyRefCheck_Description = Для типизированных объектов метаданных, хранящихся в информационной базе, не следует использовать составные типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные. Состав типов того или иного типизированного объекта должен определяться явным образом.
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title=Общий модуль должен именоваться с постфиксом
DbObjectAnyRefCheck_Title = Использование составного типа, содержащего ЛюбаяСсылка и аналогичные.
DbObjectAnyRefCheck_AnyRef=Для типизированных объектов метаданных, хранящихся в информационной базе, не следует использовать составные типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные.
DbObjectRefNonRefTypesCheck_Description = Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов, например: Строка, Число, Дата, УникальныйИдентификатор, Булево, а также ХранилищеЗначения.
DbObjectAnyRefCheck_Description=Для типизированных объектов метаданных, хранящихся в информационной базе, не следует использовать составные типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные. Состав типов того или иного типизированного объекта должен определяться явным образом.
DbObjectRefNonRefTypesCheck_Ref_and_other = Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов.
DbObjectAnyRefCheck_Title=Использование составного типа, содержащего ЛюбаяСсылка и аналогичные.
DbObjectRefNonRefTypesCheck_Title = Использование составного типа, содержащего ссылочные и не ссылочный тип вместе.
DbObjectRefNonRefTypesCheck_Description=Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов, например: Строка, Число, Дата, УникальныйИдентификатор, Булево, а также ХранилищеЗначения.
DocumentPostInPrivilegedModeCheck_title = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
DbObjectRefNonRefTypesCheck_Ref_and_other=Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов.
DocumentPostInPrivilegedModeCheck_description = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
DbObjectRefNonRefTypesCheck_Title=Использование составного типа, содержащего ссылочные и не ссылочный тип вместе.
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении"
CommonModuleNameServerCallPostfixCheck_0 = Общий модуль должен именоваться с постфиксом {0}
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при отмене проведения"
CommonModuleNameServerCallPostfixCheck_Common_module_name_description=Общий модуль должен именоваться с постфиксом
ExtensionMdObjectNamePrefixCheck_Description = Имя объекта в расширении не содержит префикс расширения
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title=Общий модуль должен именоваться с постфиксом
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix = Имя объекта "{0}" должно содержать префикс "{1}"
ExtensionMdObjectNamePrefixCheck_Description=Имя объекта в расширении не содержит префикс расширения
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix=Имя объекта "{0}" должно содержать префикс "{1}"
ExtensionMdObjectNamePrefixCheck_Title=Имя объекта в расширении должно содержать префикс расширения
ExtensionMdObjectNamePrefixCheck_Title = Имя объекта в расширении должно содержать префикс расширения
MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled = Не заполнено ни представление объекта, ни представление списка
@ -66,6 +80,30 @@ MdListObjectPresentationCheck_decription = Не заполнено ни пред
MdListObjectPresentationCheck_title = Не заполнено ни представление объекта, ни представление списка
MdObjectAttributeCommentCheck_Attribute_list = Список реквизитов
MdObjectAttributeCommentCheck_Check_catalogs_param = Проверять справочники
MdObjectAttributeCommentCheck_Check_documents_param = Проверять документы
MdObjectAttributeCommentCheck_Default_check_message = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentCheck_description = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentCheck_title = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist = Объект метаданных не имеет реквизит "Комментарий"
MdObjectAttributeCommentNotExist_Param_Attribute_name_list = Список имен реквизита
MdObjectAttributeCommentNotExist_Param_Check_Catalogs = Проверять справочники
MdObjectAttributeCommentNotExist_Param_Check_Documents = Проверять документы
MdObjectAttributeCommentNotExist_description = Объект метаданных не имеет реквизит "Комментарий"
MdObjectAttributeCommentNotExist_title = Объект метаданных не имеет реквизит "Комментарий"
MdObjectNameLength_Maximum_name_length_description = Максимальная длина имени
MdObjectNameLength_description = Длина имени объекта метаданного должна быть меньше чем {0}
@ -114,8 +152,8 @@ SubsystemSynonymTooLongCheck_description = Длина названия разд
SubsystemSynonymTooLongCheck_title = Длина названия раздела превышает 35 символов
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase=Не следует хранить пароли в информационной базе
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase = Не следует хранить пароли в информационной базе
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description=Для сведения к минимуму возможности перехвата пароля злоумышленниками не следует хранить пароли в информационной базе
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description = Для сведения к минимуму возможности перехвата пароля злоумышленниками не следует хранить пароли в информационной базе
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_error=Не следует хранить пароли в информационной базе
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_error = Не следует хранить пароли в информационной базе

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.ql;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.ql.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
@ -27,5 +27,5 @@ Import-Package: com._1c.g5.v8.bm.core;version="[7.0.0,8.0.0)",
com.e1c.g5.v8.dt.check.components;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.settings;version="1.0.0",
com.e1c.g5.v8.dt.ql.check;version="[1.0.0,2.0.0)",
com.e1c.v8codestyle.check;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)",
com.google.inject;version="[5.0.1,6.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.ql</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.right;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.right.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
@ -34,5 +34,5 @@ Import-Package: com._1c.g5.v8.bm.core;version="[7.0.0,8.0.0)",
com.e1c.g5.v8.dt.check.context;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.ext;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.check;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)",
com.google.inject;version="[5.0.1,6.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.right</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.ui;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.ui.UiPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@ -22,5 +22,5 @@ Import-Package: com._1c.g5.v8.dt.common;version="[6.4.0,7.0.0)",
com._1c.g5.v8.dt.ui.wizards;version="[8.1.0,9.0.0)",
com._1c.g5.wiring;version="[2.2.0,3.0.0)",
com._1c.g5.wiring.binder;version="[1.1.0,2.0.0)",
com.e1c.v8codestyle;version="[0.4.0,0.5.0)",
com.e1c.v8codestyle;version="[0.5.0,0.6.0)",
com.google.inject;version="[5.0.1,6.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.ui</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.CorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@ -21,5 +21,5 @@ Import-Package: com._1c.g5.v8.bm.core;version="[7.0.0,8.0.0)",
com.e1c.g5.v8.dt.check.settings;version="1.0.0",
com.google.inject;version="[5.0.1,6.0.0)",
com.google.inject.binder;version="[5.0.1,6.0.0)"
Export-Package: com.e1c.v8codestyle;version="0.4.0",
com.e1c.v8codestyle.check;version="0.4.0"
Export-Package: com.e1c.v8codestyle;version="0.5.0",
com.e1c.v8codestyle.check;version="0.5.0"

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -14,7 +14,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<groupId>com.e1c.v8codestyle</groupId>

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.docs;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Vendor: %providerName
Automatic-Module-Name: com.e1c.v8codestyle.docs
Bundle-RequiredExecutionEnvironment: JavaSE-11

View File

@ -1,7 +1,7 @@
# Проверки модулей 1С
Общее количество проверок: 67
Общее количество проверок: 78
| Код проверки | Наименование |
|--------------|--------------|
@ -10,9 +10,11 @@
| [bsl-nstr-string-literal-format](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/bsl-nstr-string-literal-format.md) | НСтр формат строкового литерала |
| [change-and-validate-instead-of-around](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/change-and-validate-instead-of-around.md) | Используется аннотация &ИзменениеИКонтроль вместо &Вместо |
| [commit-transaction](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/commit-transaction.md) | Проверка нарушения схемы работы с транзакциями |
| [common-module-missing-api](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/common-module-missing-api.md) | Общий модуль должен иметь хотя бы один экспортный метод |
| [common-module-named-self-reference](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/common-module-named-self-reference.md) | Избыточное обращение по собственному имени внутри общего модуля |
| [constructor-function-return-section](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/constructor-function-return-section.md) | Секция возвращаемого значения функции-конструктора данных |
| [data-exchange-load](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/data-exchange-load.md) | Проверка ОбменДанными.Загрузка в обработчике события |
| [deprecated-procedure-outside-deprecated-region](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/deprecated-procedure-outside-deprecated-region.md) | Устаревшая процедура (функция) расположена вне области "УстаревшиеПроцедурыИФункции" |
| [doc-comment-collection-item-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/doc-comment-collection-item-type.md) | Тип коллекций в документирующем комментарии содержит тип элемента коллекции |
| [doc-comment-complex-type-with-link](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/doc-comment-complex-type-with-link.md) | Поле документирующего комментария использует объявление сложного типа вместо ссылки на тип |
| [doc-comment-description-ends-on-dot](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/doc-comment-description-ends-on-dot.md) | Многострочное описание документирующего комментария оканчивается на точку |
@ -33,6 +35,8 @@
| [empty-except-statement](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/empty-except-statement.md) | Конструкция "Попытка...Исключение...КонецПопытки" не содержит кода в исключении |
| [event-heandler-boolean-param](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/event-heandler-boolean-param.md) | Использование булевого параметра обработчика события |
| [export-method-in-command-form-module](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/export-method-in-command-form-module.md) | Ограничения на использование экспортных процедур и функций в модуле команд и форм |
| [extension-method-prefix](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/extension-method-prefix.md) | У метода отсутствует префикс расширения |
| [extension-variable-prefix](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/extension-variable-prefix.md) | У имени переменной отсутствует префикс расширения |
| [form-module-missing-pragma](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/form-module-missing-pragma.md) | Всегда использовать директивы компиляции в модуле формы |
| [form-module-pragma](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/form-module-pragma.md) | Использование директив компиляции модуля формы |
| [form-self-reference](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/form-self-reference.md) | Использование устаревшего псевдонима |
@ -45,6 +49,8 @@
| [method-too-many-params](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/method-too-many-params.md) | Метод содержит слишком много параметров |
| [missing-temporary-file-deletion](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/missing-temporary-file-deletion.md) | Отсутствует удаление временного файла после использования. |
| [module-accessibility-at-client](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-accessibility-at-client.md) | Метод или переменная доступны НаКлиенте |
| [module-attachable-event-handler-name](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-attachable-event-handler-name.md) | Имя подключаемого обработчка события |
| [module-consecutive-blank-lines](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-consecutive-blank-lines.md) | Проверка максимального количства пустых строк |
| [module-empty-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-empty-method.md) | Проверка пустых методов |
| [module-region-empty](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-region-empty.md) | Область пустая |
| [module-self-reference](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-self-reference.md) | Избыточное использование псевдонима "ЭтотОбъект" |
@ -60,15 +66,20 @@
| [module-unused-local-variable](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-unused-local-variable.md) | Проверка неиспользуемых локальных переменных |
| [module-unused-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-unused-method.md) | Проверка неиспользуемых методов |
| [new-color](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/new-color.md) | Использование конструкции "Новый Цвет" |
| [new-font](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/new-font.md) | Использование конструкции "Новый Шрифт" |
| [notify-description-to-server-procedure](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/notify-description-to-server-procedure.md) | Описание оповещения на серверную процедуру |
| [object-module-export-variable](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/object-module-export-variable.md) | Использование переменных в программных модулях |
| [property-return-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/property-return-type.md) | Свойство объекта имеет тип возвращаемого значения |
| [public-method-caching](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/public-method-caching.md) | Проверка кэширования программного интерфейса |
| [query-in-loop](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/query-in-loop.md) | Запрос в цикле |
| [reading-attribute-from-database](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/reading-attribute-from-database.md) | Чтение отдельного реквизита объекта из базы данных |
| [redundant-export-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/redundant-export-method.md) | Тексты модулей конфигурации не должны содержать неиспользуемые экспортные процедуры и функции. |
| [rollback-transaction](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/rollback-transaction.md) | Проверка нарушения схемы работы с транзакциями |
| [server-execution-safe-mode](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/server-execution-safe-mode.md) | Отсутствует включение безопасного режима перед вызовом метода "Выполнить" или "Вычислить" |
| [statement-type-change](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/statement-type-change.md) | Утверждение меняет тип |
| [structure-consructor-too-many-keys](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/structure-consructor-too-many-keys.md) | Конструктор структуры содержит слишком много ключей |
| [structure-consructor-value-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/structure-consructor-value-type.md) | Типизация значений в конструкторе структуры |
| [typed-value-adding-to-untyped-collection](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/typed-value-adding-to-untyped-collection.md) | Добавление типизированного значения в не типизированную коллекцию |
| [use-non-recommended-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/use-non-recommended-method.md) | Использование не рекомендуемых методов |
| [using-isinrole](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/using-isinrole.md) | Использован метод "РольДоступна" |
| [variable-value-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/variable-value-type.md) | Переменная имеет тип значения |

View File

@ -1,11 +1,11 @@
# Индекс проверок
Общее количество проверок 1С:Стандарты разработки V8: 123
Общее количество проверок 1С:Стандарты разработки V8: 139
- form: 6
- md: 18
- bsl: 67
- form: 7
- md: 22
- bsl: 78
- ql: 8
- right: 24
@ -18,11 +18,14 @@
| [bsl-nstr-string-literal-format](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/bsl-nstr-string-literal-format.md) | НСтр формат строкового литерала |
| [change-and-validate-instead-of-around](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/change-and-validate-instead-of-around.md) | Используется аннотация &ИзменениеИКонтроль вместо &Вместо |
| [commit-transaction](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/commit-transaction.md) | Проверка нарушения схемы работы с транзакциями |
| [common-module-missing-api](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/common-module-missing-api.md) | Общий модуль должен иметь хотя бы один экспортный метод |
| [common-module-name-cached](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-cached.md) | Общий модуль с повторно используемыми значениями |
| [common-module-name-client](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-client.md) | Клиентский общий модуль должен оканчиваться на суффикс Клиент |
| [common-module-name-client-cached](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-client-cached.md) | Клиентский общий модуль с повторно используемыми значениями |
| [common-module-name-client-server](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-client-server.md) | Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер |
| [common-module-name-full-access](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-full-access.md) | Привилегированный общий модуль должен оканчиваться на суффикс ПолныеПрава |
| [common-module-name-global](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-global.md) | Глобальный общий модуль должен оканчиваться на суффикс Глобальный |
| [common-module-name-global-client](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-global-client.md) | Глобальный клиентский общий модуль должен оканчиваться на суффикс Глобальный без суффикса Клиент |
| [common-module-name-server-call](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-server-call.md) | Общий модуль, для которого предусмотрен вызов сервера |
| [common-module-name-server-call-cached](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-server-call-cached.md) | Общий модуль с повторно используемыми значениями |
| [common-module-named-self-reference](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/common-module-named-self-reference.md) | Избыточное обращение по собственному имени внутри общего модуля |
@ -32,6 +35,7 @@
| [data-exchange-load](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/data-exchange-load.md) | Проверка ОбменДанными.Загрузка в обработчике события |
| [db-object-anyref-type](../../bundles/com.e1c.v8codestyle.md/markdown/ru/db-object-anyref-type.md) | Реквизиты составного типа, такие как ЛюбаяСсылка и аналогичные |
| [db-object-ref-non-ref-type](../../bundles/com.e1c.v8codestyle.md/markdown/ru/db-object-ref-non-ref-type.md) | Реквизиты составного типа |
| [deprecated-procedure-outside-deprecated-region](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/deprecated-procedure-outside-deprecated-region.md) | Устаревшая процедура (функция) расположена вне области "УстаревшиеПроцедурыИФункции" |
| [doc-comment-collection-item-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/doc-comment-collection-item-type.md) | Тип коллекций в документирующем комментарии содержит тип элемента коллекции |
| [doc-comment-complex-type-with-link](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/doc-comment-complex-type-with-link.md) | Поле документирующего комментария использует объявление сложного типа вместо ссылки на тип |
| [doc-comment-description-ends-on-dot](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/doc-comment-description-ends-on-dot.md) | Многострочное описание документирующего комментария оканчивается на точку |
@ -52,6 +56,10 @@
| [empty-except-statement](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/empty-except-statement.md) | Конструкция "Попытка...Исключение...КонецПопытки" не содержит кода в исключении |
| [event-heandler-boolean-param](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/event-heandler-boolean-param.md) | Использование булевого параметра обработчика события |
| [export-method-in-command-form-module](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/export-method-in-command-form-module.md) | Ограничения на использование экспортных процедур и функций в модуле команд и форм |
| [extension-md-object-prefix](../../bundles/com.e1c.v8codestyle.md/markdown/ru/extension-md-object-prefix.md) | У имени объекта отсутствует префикс расширения |
| [extension-method-prefix](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/extension-method-prefix.md) | У метода отсутствует префикс расширения |
| [extension-variable-prefix](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/extension-variable-prefix.md) | У имени переменной отсутствует префикс расширения |
| [form-commands-single-action-handler](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-commands-single-action-handler.md) | У каждого действия команды должна быть назначена своя процедура-обработчик |
| [form-dynamic-list-item-title](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-dynamic-list-item-title.md) | Пустой заголовок для колонок динамического списка |
| [form-items-single-event-handler](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-items-single-event-handler.md) | У каждого события должна быть назначена своя процедура-обработчик |
| [form-list-field-ref-not-added](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-list-field-ref-not-added.md) | Реквизит "Ссылка" динамического списка не выведен в таблицу на форме |
@ -74,6 +82,8 @@
| [method-too-many-params](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/method-too-many-params.md) | Метод содержит слишком много параметров |
| [missing-temporary-file-deletion](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/missing-temporary-file-deletion.md) | Отсутствует удаление временного файла после использования. |
| [module-accessibility-at-client](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-accessibility-at-client.md) | Метод или переменная доступны НаКлиенте |
| [module-attachable-event-handler-name](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-attachable-event-handler-name.md) | Имя подключаемого обработчка события |
| [module-consecutive-blank-lines](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-consecutive-blank-lines.md) | Проверка максимального количства пустых строк |
| [module-empty-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-empty-method.md) | Проверка пустых методов |
| [module-region-empty](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-region-empty.md) | Область пустая |
| [module-self-reference](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-self-reference.md) | Избыточное использование псевдонима "ЭтотОбъект" |
@ -89,8 +99,11 @@
| [module-unused-local-variable](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-unused-local-variable.md) | Проверка неиспользуемых локальных переменных |
| [module-unused-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/module-unused-method.md) | Проверка неиспользуемых методов |
| [new-color](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/new-color.md) | Использование конструкции "Новый Цвет" |
| [new-font](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/new-font.md) | Использование конструкции "Новый Шрифт" |
| [notify-description-to-server-procedure](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/notify-description-to-server-procedure.md) | Описание оповещения на серверную процедуру |
| [object-module-export-variable](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/object-module-export-variable.md) | Использование переменных в программных модулях |
| [property-return-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/property-return-type.md) | Свойство объекта имеет тип возвращаемого значения |
| [public-method-caching](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/public-method-caching.md) | Проверка кэширования программного интерфейса |
| [ql-camel-case-string-literal](../../bundles/com.e1c.v8codestyle.ql/markdown/ru/ql-camel-case-string-literal.md) | Строковый литерал в запросе содержит не КемелКейс контент |
| [ql-cast-to-max-number](../../bundles/com.e1c.v8codestyle.ql/markdown/ru/ql-cast-to-max-number.md) | Выражение к максимальному числу в запросе |
| [ql-constants-in-binary-operation](../../bundles/com.e1c.v8codestyle.ql/markdown/ru/ql-constants-in-binary-operation.md) | В запросе в бинарной операции используются константные значения или параметры. |
@ -100,7 +113,9 @@
| [ql-using-for-update](../../bundles/com.e1c.v8codestyle.ql/markdown/ru/ql-using-for-update.md) | Запрос содержит конструкцию "ДЛЯ ИЗМЕНЕНИЯ" |
| [ql-virtual-table-filters](../../bundles/com.e1c.v8codestyle.ql/markdown/ru/ql-virtual-table-filters.md) | Отбор виртуальной таблицы должен быть в параметрах |
| [query-in-loop](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/query-in-loop.md) | Запрос в цикле |
| [reading-attribute-from-database](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/reading-attribute-from-database.md) | Чтение отдельного реквизита объекта из базы данных |
| [redundant-export-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/redundant-export-method.md) | Тексты модулей конфигурации не должны содержать неиспользуемые экспортные процедуры и функции. |
| [register-resource-precision](../../bundles/com.e1c.v8codestyle.md/markdown/ru/register-resource-precision.md) | Длина ресурса регистра накопления или бухгалтерии |
| [right-active-users](../../bundles/com.e1c.v8codestyle.right/markdown/ru/right-active-users.md) | Право установлено: Активные пользователи |
| [right-administration](../../bundles/com.e1c.v8codestyle.right/markdown/ru/right-administration.md) | Право установлено: Администрирование |
| [right-all-functions-mode](../../bundles/com.e1c.v8codestyle.right/markdown/ru/right-all-functions-mode.md) | Право установлено: Режим "Все функции" |
@ -132,6 +147,7 @@
| [structure-consructor-too-many-keys](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/structure-consructor-too-many-keys.md) | Конструктор структуры содержит слишком много ключей |
| [structure-consructor-value-type](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/structure-consructor-value-type.md) | Типизация значений в конструкторе структуры |
| [subsystem-synonym-too-long](../../bundles/com.e1c.v8codestyle.md/markdown/ru/subsystem-synonym-too-long.md) | Длина названия раздела превышает 35 символов |
| [typed-value-adding-to-untyped-collection](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/typed-value-adding-to-untyped-collection.md) | Добавление типизированного значения в не типизированную коллекцию |
| [unsafe-password-ib-storage](../../bundles/com.e1c.v8codestyle.md/markdown/ru/unsafe-password-ib-storage.md) | Небезопасное хранение паролей в информационной базе |
| [use-non-recommended-method](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/use-non-recommended-method.md) | Использование не рекомендуемых методов |
| [using-isinrole](../../bundles/com.e1c.v8codestyle.bsl/markdown/ru/using-isinrole.md) | Использован метод "РольДоступна" |

View File

@ -3,11 +3,14 @@ bsl-canonical-pragma
bsl-nstr-string-literal-format
change-and-validate-instead-of-around
commit-transaction
common-module-missing-api
common-module-name-cached
common-module-name-client
common-module-name-client-cached
common-module-name-client-server
common-module-name-full-access
common-module-name-global
common-module-name-global-client
common-module-name-server-call
common-module-name-server-call-cached
common-module-named-self-reference
@ -17,6 +20,7 @@ constructor-function-return-section
data-exchange-load
db-object-anyref-type
db-object-ref-non-ref-type
deprecated-procedure-outside-deprecated-region
doc-comment-collection-item-type
doc-comment-complex-type-with-link
doc-comment-description-ends-on-dot
@ -37,6 +41,10 @@ dynamic-access-method-not-found
empty-except-statement
event-heandler-boolean-param
export-method-in-command-form-module
extension-md-object-prefix
extension-method-prefix
extension-variable-prefix
form-commands-single-action-handler
form-dynamic-list-item-title
form-items-single-event-handler
form-list-field-ref-not-added
@ -59,6 +67,8 @@ method-param-value-type
method-too-many-params
missing-temporary-file-deletion
module-accessibility-at-client
module-attachable-event-handler-name
module-consecutive-blank-lines
module-empty-method
module-region-empty
module-self-reference
@ -74,8 +84,11 @@ module-undefined-variable
module-unused-local-variable
module-unused-method
new-color
new-font
notify-description-to-server-procedure
object-module-export-variable
property-return-type
public-method-caching
ql-camel-case-string-literal
ql-cast-to-max-number
ql-constants-in-binary-operation
@ -85,7 +98,9 @@ ql-temp-table-index
ql-using-for-update
ql-virtual-table-filters
query-in-loop
reading-attribute-from-database
redundant-export-method
register-resource-precision
right-active-users
right-administration
right-all-functions-mode
@ -117,6 +132,7 @@ statement-type-change
structure-consructor-too-many-keys
structure-consructor-value-type
subsystem-synonym-too-long
typed-value-adding-to-untyped-collection
unsafe-password-ib-storage
use-non-recommended-method
using-isinrole

View File

@ -75,7 +75,6 @@
Если ТипЗнч(Параметры.ДругоеСвойство) = Тип("Число") Тогда
Параметры.ДругоеСвойство = Параметры.ДругоеСвойство + 1; // В этом месте тип свойства - Булево
КонецЕсли;
```
При фактической смене типа значения у свойства объекта, который допускает такое поведение в run-time `1С:Предприятия 8`, система типизации и анализа объектов данных в 1C:EDT не учитывает эту смену.
@ -109,12 +108,12 @@
Диагностика проблемы:
- при наведении мышкой на объект в коде - панель всплывающей подсказки не показывает тип, значит система типизации 1C:EDT не смогла его расчитать.
- при наведении мышкой на объект в коде - панель всплывающей подсказки не показывает тип, значит, система типизации 1C:EDT не смогла его расчитать.
- в коде после точки обращения к свойству/методу вызвать контент-ассист (нажать `Ctrl+Space`) - подсказка ввода не показывает свойства в формате `Объект.Свойство <Тип свойства> ~ Тип объекта`
> **Обратите внимание!** В подсказке ввода - после имени свойства указан тип свойства `<Тип свойства>` в фигурных скобках и после ` ~ Тип объекта` - тип, из которого это свойство получено, т.к. у объекта может несколько типов.
Чтобы найти причины не типзированного кода, можно следовать некоторым пунктам:
Чтобы найти причины не типизированного кода, можно следовать некоторым пунктам:
1. Необходимо найти самый первый объект в цепочке вызова в данной строке
2. Высянить есть ли у этого объекта тип - навести мышкой или нажать `F2` для вывода подсказки
@ -129,13 +128,13 @@
1. Позволяет сформировать начальное документирующее описание метода, чтобы далее легче было до-редактировать
2. Заполняет известные типы входящих параметров или возвращаемых значений на основе расчетной типизации кода текущего модуля
3. Позволяет до заполнить отсутствующие секции или параметры в существующем документирующем комментарии и выполняет стандартное форматирование с учетом модели данных. Это позволяет увидеть ошибочно-написанные конструкции, которые не соответствуют формату документирующего комментария
3. Позволяет до заполнить отсутствующие секции или параметры в существующем документирующем комментарии и выполняет стандартное форматирование с учетом модели данных. Это позволяет увидеть ошибочно написанные конструкции, которые не соответствуют формату документирующего комментария
#### Панель структуры документирующего комментария
Документация по [панели структуры документирующего комментария](../tools/bsl-doc-comment-view.md)
Позволяет увидеть структуру данных документирующего комментария так как её считывает 1C:EDT, увидеть расхождения с тем что ожидал разработчик и тем что он написал.
Позволяет увидеть структуру данных документирующего комментария, так как её считывает 1C:EDT, увидеть расхождения с тем, что ожидал разработчик и тем что он написал.
### Что такое "Строгая типизация"
@ -227,9 +226,9 @@
Функция ФункцияРазличныхТипов(Флаг)
Если Флаг Тогда
Вовзрат Новый Массив;
Возврат Новый Массив;
Иначе
Вовзрат 10;
Возврат 10;
КонецЕсли;
КонецФункции
```

View File

@ -1,10 +1,11 @@
# Проверки Форм 1С
Общее количество проверок: 6
Общее количество проверок: 7
| Код проверки | Наименование |
|--------------|--------------|
| [form-commands-single-action-handler](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-commands-single-action-handler.md) | У каждого действия команды должна быть назначена своя процедура-обработчик |
| [form-dynamic-list-item-title](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-dynamic-list-item-title.md) | Пустой заголовок для колонок динамического списка |
| [form-items-single-event-handler](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-items-single-event-handler.md) | У каждого события должна быть назначена своя процедура-обработчик |
| [form-list-field-ref-not-added](../../bundles/com.e1c.v8codestyle.form/markdown/ru/form-list-field-ref-not-added.md) | Реквизит "Ссылка" динамического списка не выведен в таблицу на форме |

View File

@ -1,7 +1,7 @@
# Проверки метаданных 1С
Общее количество проверок: 18
Общее количество проверок: 22
| Код проверки | Наименование |
|--------------|--------------|
@ -9,17 +9,21 @@
| [common-module-name-client](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-client.md) | Клиентский общий модуль должен оканчиваться на суффикс Клиент |
| [common-module-name-client-cached](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-client-cached.md) | Клиентский общий модуль с повторно используемыми значениями |
| [common-module-name-client-server](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-client-server.md) | Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер |
| [common-module-name-full-access](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-full-access.md) | Привилегированный общий модуль должен оканчиваться на суффикс ПолныеПрава |
| [common-module-name-global](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-global.md) | Глобальный общий модуль должен оканчиваться на суффикс Глобальный |
| [common-module-name-global-client](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-global-client.md) | Глобальный клиентский общий модуль должен оканчиваться на суффикс Глобальный без суффикса Клиент |
| [common-module-name-server-call](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-server-call.md) | Общий модуль, для которого предусмотрен вызов сервера |
| [common-module-name-server-call-cached](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-name-server-call-cached.md) | Общий модуль с повторно используемыми значениями |
| [common-module-type](../../bundles/com.e1c.v8codestyle.md/markdown/ru/common-module-type.md) | Общий модуль имеет некорректный тип |
| [configuration-data-lock-mode](../../bundles/com.e1c.v8codestyle.md/markdown/ru/configuration-data-lock-mode.md) | Режим блокировки данных конфигурации |
| [db-object-anyref-type](../../bundles/com.e1c.v8codestyle.md/markdown/ru/db-object-anyref-type.md) | Реквизиты составного типа, такие как ЛюбаяСсылка и аналогичные |
| [db-object-ref-non-ref-type](../../bundles/com.e1c.v8codestyle.md/markdown/ru/db-object-ref-non-ref-type.md) | Реквизиты составного типа |
| [extension-md-object-prefix](../../bundles/com.e1c.v8codestyle.md/markdown/ru/extension-md-object-prefix.md) | У имени объекта отсутствует префикс расширения |
| [md-list-object-presentation](../../bundles/com.e1c.v8codestyle.md/markdown/ru/md-list-object-presentation.md) | Не заполнено ни представление объекта, ни представление списка |
| [md-standard-attribute-synonym-empty](../../bundles/com.e1c.v8codestyle.md/markdown/ru/md-standard-attribute-synonym-empty.md) | Не задан синоним стандартного реквизита "Родитель" или "Владелец". |
| [mdo-name-length](../../bundles/com.e1c.v8codestyle.md/markdown/ru/mdo-name-length.md) | Длина имени объекта метаданных |
| [mdo-scheduled-job-description](../../bundles/com.e1c.v8codestyle.md/markdown/ru/mdo-scheduled-job-description.md) | Задано наименование предопределенного регламентного задания |
| [register-resource-precision](../../bundles/com.e1c.v8codestyle.md/markdown/ru/register-resource-precision.md) | Длина ресурса регистра накопления или бухгалтерии |
| [scheduled-job-periodicity-too-short](../../bundles/com.e1c.v8codestyle.md/markdown/ru/scheduled-job-periodicity-too-short.md) | Периодичность выполнения регламентного задания меньше одной минуты. |
| [subsystem-synonym-too-long](../../bundles/com.e1c.v8codestyle.md/markdown/ru/subsystem-synonym-too-long.md) | Длина названия раздела превышает 35 символов |
| [unsafe-password-ib-storage](../../bundles/com.e1c.v8codestyle.md/markdown/ru/unsafe-password-ib-storage.md) | Небезопасное хранение паролей в информационной базе |

View File

@ -20,10 +20,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.docs</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<groupId>com.e1c.v8codestyle</groupId>
<packaging>eclipse-plugin</packaging>

View File

@ -14,7 +14,7 @@
<feature
id="com.e1c.v8codestyle.feature"
label="%feature.name"
version="0.4.0.qualifier"
version="0.5.0.qualifier"
provider-name="%feature.vendor"
plugin="com.e1c.v8codestyle"
license-feature="org.eclipse.license"

View File

@ -19,11 +19,11 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>features</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.feature</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
<build>

View File

@ -14,7 +14,7 @@
<feature
id="com.e1c.v8codestyle.sdk"
label="%featureName"
version="0.4.0.qualifier"
version="0.5.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="2.0.2.qualifier">
@ -33,11 +33,11 @@
<includes
id="com.e1c.v8codestyle.feature.source"
version="0.4.0.qualifier"
version="0.5.0.qualifier"
optional="true"/>
<includes
id="com.e1c.v8codestyle.feature"
version="0.4.0.qualifier"/>
version="0.5.0.qualifier"/>
</feature>

View File

@ -18,7 +18,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>features</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.sdk</artifactId>

View File

@ -16,7 +16,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>features</artifactId>

View File

@ -16,13 +16,13 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bom</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<relativePath>./bom/pom.xml</relativePath>
</parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>1C:Code style V8</name>

View File

@ -19,7 +19,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>repositories</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.repository.sdk</artifactId>

View File

@ -19,7 +19,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>repositories</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.repository</artifactId>

View File

@ -16,7 +16,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>repositories</artifactId>

View File

@ -19,12 +19,12 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>targets</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>default</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-target-definition</packaging>

View File

@ -19,7 +19,7 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>targets</artifactId>

View File

@ -2,9 +2,9 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.autosort.itests;singleton:=true
Bundle-Version: 0.4.0.qualifier
Bundle-Version: 0.5.0.qualifier
Bundle-Vendor: %providerName
Fragment-Host: com.e1c.v8codestyle.autosort;bundle-version="[0.4.0,0.5.0)"
Fragment-Host: com.e1c.v8codestyle.autosort;bundle-version="[0.5.0,0.6.0)"
Automatic-Module-Name: com.e1c.v8codestyle.autosort.itests
Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Localization: fragment

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>tests</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.autosort.itests</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.5.0-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
</project>

View File

@ -81,9 +81,11 @@ public class SortServiceTest
assertFalse(configuration.getCommonModules().isEmpty());
assertEquals("ГМодуль", configuration.getCommonModules().get(0).getName());
assertEquals("БМодуль", configuration.getCommonModules().get(1).getName());
assertEquals("ОбщийМодуль", configuration.getCommonModules().get(2).getName());
assertEquals("АМодуль", configuration.getCommonModules().get(3).getName());
assertEquals("АМ2_4Модуль", configuration.getCommonModules().get(1).getName());
assertEquals("БМодуль", configuration.getCommonModules().get(2).getName());
assertEquals("АМ_Модуль", configuration.getCommonModules().get(3).getName());
assertEquals("ОбщийМодуль", configuration.getCommonModules().get(4).getName());
assertEquals("АМодуль", configuration.getCommonModules().get(5).getName());
}
@Test
@ -96,6 +98,7 @@ public class SortServiceTest
IEclipsePreferences prefs = AutoSortPreferences.getPreferences(project);
prefs.putBoolean(AutoSortPreferences.KEY_ALL_TOP, true);
prefs.putBoolean(AutoSortPreferences.KEY_SORT_ORDER, true);
prefs.flush();
IStatus status = sortService.sortAllMetadata(dtProject, new NullProgressMonitor());
@ -106,10 +109,41 @@ public class SortServiceTest
Configuration configuration = (Configuration)object;
assertFalse(configuration.getCommonModules().isEmpty());
assertEquals("АМодуль", configuration.getCommonModules().get(0).getName());
assertEquals("БМодуль", configuration.getCommonModules().get(1).getName());
assertEquals("ГМодуль", configuration.getCommonModules().get(2).getName());
assertEquals("ОбщийМодуль", configuration.getCommonModules().get(3).getName());
assertEquals("АМ2_4Модуль", configuration.getCommonModules().get(0).getName());
assertEquals("АМ_Модуль", configuration.getCommonModules().get(1).getName());
assertEquals("АМодуль", configuration.getCommonModules().get(2).getName());
assertEquals("БМодуль", configuration.getCommonModules().get(3).getName());
assertEquals("ГМодуль", configuration.getCommonModules().get(4).getName());
assertEquals("ОбщийМодуль", configuration.getCommonModules().get(5).getName());
}
@Test
public void testSortOrderAsDesigner() throws Exception
{
IProject project = testingWorkspace.setUpProject(PROJECT_NAME, getClass());
assertNotNull(project);
IDtProject dtProject = dtProjectManager.getDtProject(project);
assertNotNull(dtProject);
IEclipsePreferences prefs = AutoSortPreferences.getPreferences(project);
prefs.putBoolean(AutoSortPreferences.KEY_ALL_TOP, true);
prefs.putBoolean(AutoSortPreferences.KEY_SORT_ORDER, false);
prefs.flush();
IStatus status = sortService.sortAllMetadata(dtProject, new NullProgressMonitor());
assertTrue(status.isOK());
IBmObject object = getTopObjectByFqn(CONFIGURATION.getName(), dtProject);
assertTrue(object instanceof Configuration);
Configuration configuration = (Configuration)object;
assertFalse(configuration.getCommonModules().isEmpty());
assertEquals("АМ_Модуль", configuration.getCommonModules().get(0).getName());
assertEquals("АМ2_4Модуль", configuration.getCommonModules().get(1).getName());
assertEquals("АМодуль", configuration.getCommonModules().get(2).getName());
assertEquals("БМодуль", configuration.getCommonModules().get(3).getName());
assertEquals("ГМодуль", configuration.getCommonModules().get(4).getName());
assertEquals("ОбщийМодуль", configuration.getCommonModules().get(5).getName());
}
protected IBmObject getTopObjectByFqn(final String fqn, IDtProject dtProject)

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="59664d85-151c-4f64-9f4e-3654a057c81d">
<name>АМ2_4Модуль</name>
<synonym>
<key>en</key>
<value>А м2 4 модуль</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

Some files were not shown because too many files have changed in this diff Show More