bsl-parser icon indicating copy to clipboard operation
bsl-parser copied to clipboard

Имя временной таблицы может содержать точку в начале имени и символ решетки в любом месте имени

Open kuntashov opened this issue 2 years ago • 0 comments

Коллега обнаружил, что имя временной таблицы (ВТ) может начинаться с точки, а также в имени ВТ можно использовать символ решетки/диеза # наравне с алфавитно-цифровыми символами.

Пример:

ВЫБРАТЬ 
    1 КАК Поле1
ПОМЕСТИТЬ .ВТ#1;

Такой запрос корректно открывается в конструкторе (проверяли пока только на 8.3.18.1483), корректно исполняется.

При этом выяснилось:

  1. EDT на такие запросы ругается
  2. Как уже выше написал, конструктор такие запросы поддерживает
  3. Точку можно использовать только в начале имени ВТ. Если использовать в середине, например ВТ.Таблица, то возникает ошибка:
    Синтаксическая ошибка "ВТ.Таблица"
    ПОМЕСТИТЬ <<?>>ВТ.Таблица;
    
  4. Решетку можно использовать в любой части имени ВТ. Работают даже имена только из решеток, например, запрос валидный и выполнится корректно, ВТ ### будет создана и ей можно будет пользоваться:
ВЫБРАТЬ 
    1 КАК Поле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"
}

kuntashov avatar Apr 28 '22 19:04 kuntashov