diff --git a/src/bsl_language.js b/src/bsl_language.js index 111cb48..4193ad8 100644 --- a/src/bsl_language.js +++ b/src/bsl_language.js @@ -295,7 +295,16 @@ define([], function () { expressions: bsl_language.rules.queryExp, operators: /[=><+\-*\/%;,]+/, tokenizer: { - root: [ + root: [ + [/(как|as\s+)(.+)(,?)/, [ + {token: 'query.keyword'}, + {token: 'query'}, + {token: 'query.operator'} + ]], + [/(\.)([a-zA-Z\u0410-\u044F_]+)/, [ + {token: 'query'}, + {token: 'query'} + ]], [/([a-zA-Z\u0410-\u044F_][a-zA-Z\u0410-\u044F_0-9]+)(\.)([a-zA-Z\u0410-\u044F_][a-zA-Z\u0410-\u044F_0-9]+)/, 'query'], [/[a-zA-Z\u0410-\u044F_][a-zA-Z\u0410-\u044F_0-9]*/, { cases: { '@keywords': 'query.keyword', diff --git a/src/test_query.html b/src/test_query.html index 997008a..ab1b39d 100644 --- a/src/test_query.html +++ b/src/test_query.html @@ -18,9 +18,11 @@ function getCode() { return [ 'ВЫБРАТЬ', - ' Товары.Код КАК Код,', + ' Товары.Ссылка КАК Ссылка,', + ' Товары.Код КАК Код,', ' Товары.Наименование КАК Наименование,', - ' Товары.СтавкаНДС КАК СтавкаНДС', + ' Товары.СтавкаНДС КАК СтавкаНДС,', + ' СУММА(Товары.СтавкаНДС.Значение) КАК Сумма', 'ИЗ', ' Справочник.Товары КАК Товары', 'ГДЕ', diff --git a/src/test_query.js b/src/test_query.js index 1ab9a59..9ddde32 100644 --- a/src/test_query.js +++ b/src/test_query.js @@ -88,7 +88,7 @@ describe("Проверка автокомлита и подсказок реда }); it("проверка подсказки для таблицы запроса", function () { - bsl = helper(getCode(), 36, 9); + bsl = helper(getCode(), 38, 9); let suggestions = []; bsl.getQueryTablesCompletition(suggestions, null); expect(suggestions).to.be.an('array').that.not.is.empty; @@ -127,7 +127,7 @@ describe("Проверка автокомлита и подсказок реда }); it("проверка подсказки для временных таблиц в конструкции ИЗ ИЛИ СОЕДИНЕНИЕ ", function () { - bsl = helper(getCode(), 72, 20); + bsl = helper(getCode(), 74, 20); let suggestions = []; bsl.getQuerySourceCompletition(suggestions, null); expect(suggestions).to.be.an('array').that.not.is.empty;