bsl-parser
bsl-parser copied to clipboard
Имя временной таблицы может содержать точку в начале имени и символ решетки в любом месте имени
Коллега обнаружил, что имя временной таблицы (ВТ) может начинаться с точки, а также в имени ВТ можно использовать символ решетки/диеза #
наравне с алфавитно-цифровыми символами.
Пример:
ВЫБРАТЬ
1 КАК Поле1
ПОМЕСТИТЬ .ВТ#1;
Такой запрос корректно открывается в конструкторе (проверяли пока только на 8.3.18.1483), корректно исполняется.
При этом выяснилось:
- EDT на такие запросы ругается
- Как уже выше написал, конструктор такие запросы поддерживает
- Точку можно использовать только в начале имени ВТ. Если использовать в середине, например
ВТ.Таблица
, то возникает ошибка:Синтаксическая ошибка "ВТ.Таблица" ПОМЕСТИТЬ <<?>>ВТ.Таблица;
- Решетку можно использовать в любой части имени ВТ. Работают даже имена только из решеток, например, запрос валидный и выполнится корректно, ВТ
###
будет создана и ей можно будет пользоваться:
ВЫБРАТЬ
1 КАК Поле1
ПОМЕСТИТЬ ###;
- Если проверить тестовый файл, содержащий запрос с таким именем ВТ, то срабатывает диагностика
QueryParseError
, хотя на самом деле конструктором запросов запрос открывается.
Пример файла
// src\dot-sharp-in-virtual-table-name.bsl
Запрос = Новый Запрос(
"ВЫБРАТЬ
|1 КАК Поле1
|ПОМЕСТИТЬ .ВТ#1
|;");
Запрос.Выполнить();
Результат диагностики, полученной командой java -jar bsl-language-server-0.20.0-rc.2-exec.jar analyze --srcDir src --reporter json
{
"date": "2022-04-28 22:54:22",
"fileinfos": [
{
"path": "file:///E:/akuntashov/work/src/dot-sharp-in-virtual-table-name.bsl",
"mdoRef": "",
"diagnostics": [
{
"range": {
"start": { "line": 2, "character": 2 },
"end": { "line": 4, "character": 17 }
},
"severity": "Warning",
"code": "QueryParseError",
"codeDescription": {
"href": "https://1c-syntax.github.io/bsl-language-server/diagnostics/QueryParseError"
},
"source": "bsl-language-server",
"message": "Текст запроса должен быть корректным и открываться конструктором запросов",
"tags": [],
"relatedInformation": null,
"data": null
}
],
"metrics": {
"procedures": 0,
"functions": 0,
"lines": 8,
"ncloc": 6,
"comments": 1,
"statements": 2,
"nclocData": [2, 3, 4, 5, 6, 8],
"covlocData": null,
"cognitiveComplexity": 0,
"cyclomaticComplexity": 0
}
}
],
"sourceDir": "E:\\akuntashov\\work\\src"
}