Skip to content

Commit 9c17c50

Browse files
authored
Merge pull request #2766 from 1c-syntax/docs/issue-1648
docs (#1648): доработал описания диагностик, изменил уровень серьезно…
2 parents 6a75b0c + 8d361bf commit 9c17c50

File tree

7 files changed

+104
-17
lines changed

7 files changed

+104
-17
lines changed

docs/diagnostics/CrazyMultilineString.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@
1414
## Примеры
1515
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
1616

17+
Усложняет восприятие:
18+
19+
```bsl
20+
Строка = "ВВВ" "СС"
21+
"Ф";
22+
```
23+
24+
Классический вариант:
25+
26+
```bsl
27+
Строка = "ВВВ" + "СС"
28+
+ "Ф";
29+
```
30+
1731
## Источники
1832
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики -->
1933
<!-- Примеры источников

docs/diagnostics/IncorrectLineBreak.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,30 @@
2424
## Примеры
2525
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
2626

27+
Неправильно:
28+
2729
```bsl
2830
СуммаДокумента = СуммаБезСкидки +
2931
СуммаРучнойСкидки +
3032
СуммаАвтоматическойСкидки;
3133
```
3234

35+
Правильно:
36+
37+
```bsl
38+
СуммаДокумента = СуммаБезСкидки
39+
+ СуммаРучнойСкидки
40+
+ СуммаАвтоматическойСкидки;
41+
```
42+
43+
или
44+
45+
```bsl
46+
СуммаДокумента = СуммаБезСкидки
47+
+ СуммаРучнойСкидки
48+
+ СуммаАвтоматическойСкидки;
49+
```
50+
3351
## Источники
3452
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики -->
3553

docs/diagnostics/IncorrectUseLikeInQuery.md

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,64 @@
44
## Описание диагностики
55
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу -->
66

7-
## Примеры
8-
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
9-
107
При использовании в тексте запроса оператора `ПОДОБНО` допустимо использовать только
118
- константные строковые литералы
129
- параметры запроса
1310

1411
Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов.
1512

16-
Запросы, в которых управляющие символы шаблона оператора `ПОДОБНО` находятся в полях запроса или в вычисляемых выражениях, по-разному интерпретируются на различных СУБД.
13+
Запросы, в которых управляющие символы шаблона оператора `ПОДОБНО` находятся в полях запроса или в вычисляемых выражениях,
14+
по-разному интерпретируются на различных СУБД (MS SQL и PostgreSQL).
15+
16+
## Примеры
17+
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
18+
19+
### Конкатенация строк средствами языка
20+
21+
Допустимо:
22+
23+
```
24+
Реквизит ПОДОБНО "123%"
25+
```
26+
27+
Недопустимо:
28+
29+
```
30+
Реквизит ПОДОБНО "123" + "%"
31+
Реквизит ПОДОБНО Таблица.Шаблон
32+
```
33+
34+
### Управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях
35+
36+
Например, вместо:
37+
38+
```
39+
Запрос = Новый Запрос("
40+
|ВЫБРАТЬ
41+
| Товары.Ссылка
42+
|ИЗ
43+
| Справочник.Товары КАК Товары
44+
|ГДЕ
45+
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны + "_"
46+
|");
47+
48+
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА");
49+
```
50+
51+
Необходимо использовать:
52+
53+
```
54+
Запрос = Новый Запрос("
55+
|ВЫБРАТЬ
56+
| Товары.Ссылка
57+
|ИЗ
58+
| Справочник.Товары КАК Товары
59+
|ГДЕ
60+
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны
61+
|");
62+
63+
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА_");
64+
```
1765

1866
## Источники
1967
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики -->
@@ -22,3 +70,5 @@
2270
* Источник: [Стандарт: Тексты модулей](https://its.1c.ru/db/v8std#content:456:hdoc)
2371
* Полезная информация: [Отказ от использования модальных окон](https://its.1c.ru/db/metod8dev#content:5272:hdoc)
2472
* Источник: [Cognitive complexity, ver. 1.4](https://www.sonarsource.com/docs/CognitiveComplexity.pdf) -->
73+
74+
- Источник: [Стандарт: Особенности использования в запросах оператора ПОДОБНО](https://its.1c.ru/db/v8std/content/726/hdoc?ysclid=l3g3fkmxsx)

docs/diagnostics/LogicalOrInTheWhereSectionOfQuery.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,21 @@
33
<!-- Блоки выше заполняются автоматически, не трогать -->
44
## Описание диагностики
55
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу -->
6-
Не следует использовать `ИЛИ` в секции `ГДЕ` запроса. Это может привести к тому, что СУБД не сможет использовать индексы таблиц и будет выполнять сканирование, что увеличит время работы запроса и вероятность возникновения блокировок. Вместо этого следует разбить один запрос на несколько и объединить результаты.
6+
Не следует использовать `ИЛИ` в секции `ГДЕ` запроса. Это может привести к тому, что СУБД не сможет использовать
7+
индексы таблиц и будет выполнять сканирование, что увеличит время работы запроса и вероятность возникновения блокировок.
8+
Вместо этого следует разбить один запрос на несколько и объединить результаты.
9+
10+
## Примеры
11+
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
12+
13+
Например, запрос:
714

8-
Например, запрос
915
```bsl
1016
ВЫБРАТЬ Товар.Наименование ИЗ Справочник.Товары КАК Товар
1117
ГДЕ Артикул = "001" ИЛИ Цена = 10
1218
```
1319

14-
следует заменить на запрос
20+
следует заменить на запрос:
1521

1622
```bsl
1723
ВЫБРАТЬ Товар.Наименование ИЗ Справочник.Товары КАК Товар ГДЕ Артикул = "001"
@@ -23,7 +29,7 @@
2329
2430
1) В основном условии оператор `ИЛИ` можно использовать только для последнего из используемых или единственного поля индекса, когда оператор `ИЛИ` можно заменить на оператор `В`.
2531

26-
ПРАВИЛЬНО:
32+
Правильно:
2733

2834
```bsl
2935
ГДЕ
@@ -38,7 +44,7 @@
3844
Таблица.Поле В (&Значения)
3945
```
4046

41-
НЕПРАВИЛЬНО:
47+
Неправильно:
4248

4349
```bsl
4450
ГДЕ
@@ -62,7 +68,7 @@
6268
6369
2) В дополнительном условии оператор ИЛИ можно использовать без ограничений.
6470

65-
ПРАВИЛЬНО 1:
71+
Правильно:
6672

6773
```bsl
6874
ГДЕ
@@ -71,7 +77,7 @@
7177
(Таблица.Поле2 = &Значение2 ИЛИ Таблица.Поле3 = &Значение3)
7278
```
7379

74-
ПРАВИЛЬНО 2:
80+
Правильно:
7581

7682
```bsl
7783
ГДЕ
@@ -88,9 +94,6 @@
8894
И Таблица.Поле2 В (&Значения2) // Дополнительное условие (или наоборот)
8995
```
9096

91-
## Примеры
92-
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
93-
9497
## Источники
9598
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики -->
9699

docs/diagnostics/MultilineStringInQuery.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
Запрос = Новый Запрос;
1616
Запрос.Текст = "ВЫБРАТЬ
1717
| ПриходныйОрдерНоменклатура.Номенклатура КАК Номенклатура,
18-
| ЕСТЬNULL(ПриходныйОрдерНоменклатура.Номенклатура.Код, "") КАК НоменклатураКод,
18+
| ЕСТЬNULL(ПриходныйОрдерНоменклатура.Номенклатура.Код, "") КАК НоменклатураКод, // здесь ошибка с кавычками, должно быть """"
1919
| ЕСТЬNULL(ПриходныйОрдерНоменклатура.Номенклатура.Наименование, "") КАК НоменклатураНаименование
2020
|ИЗ
2121
| Документ.ПриходныйОрдер.Номенклатура КАК ПриходныйОрдерНоменклатура

docs/diagnostics/WrongUseFunctionProceedWithCall.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
<!-- Блоки выше заполняются автоматически, не трогать -->
44
## Описание диагностики
55
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу -->
6-
Вызов функции ПродолжитьВызов можно использовать только в расширениях и только в методах с аннотацией &Вместо.
6+
7+
Использование функции `ПродолжитьВызов` не в методах расширения с аннотацией `&Вместо` приведет к ошибке времени выполнения.
78

89
## Примеры
910
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
11+
1012
```bsl
1113
&НаКлиенте
1214
Процедура Тест()

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommonModuleMissingAPIDiagnostic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
@DiagnosticMetadata(
3939
type = DiagnosticType.CODE_SMELL,
40-
severity = DiagnosticSeverity.MAJOR,
40+
severity = DiagnosticSeverity.MINOR,
4141
scope = DiagnosticScope.BSL,
4242
modules = {
4343
ModuleType.CommonModule

0 commit comments

Comments
 (0)