salexdv / bsl_console

Консоль кода для 1С 8.3 (Управляемые и обычные формы)
MIT License
297 stars 55 forks source link

Некорректная вставка имени параметра в режиме языка запросов #171

Closed tormozit closed 3 years ago

tormozit commented 3 years ago

В режиме языка запросов вставляем параметр из списка автодополнения. В событии EVENT_ON_SELECT_SUGGEST_ROW ловим выбор слова и вставляем его в коде 1С. Но если слово было полное, то после моей вставки редактор вставляет его поверх моего со смещением

Если в тексте было неполное слово, то проблемы нет

изображение

изображение

Если в тексте слово уже полное, то возникает двойной символ "&". Причем если закомментировать код моего обработчика события EVENT_ON_SELECT_SUGGEST_ROW, то проблема остается.

изображение

изображение

Если еще раз повторить выбор и вставку, то получим еще сильнее беду

изображение

изображение

salexdv commented 3 years ago

Я уже предлагал вариант тут #159 и предложу еще раз. Может тебе передавать пустое поле text в showCustomSuggestions, раз уж ты всё равно занимаешься вставкой на своей стороне?

tormozit commented 3 years ago

Я уже предлагал вариант тут #159 и предложу еще раз. Может тебе передавать пустое поле text в showCustomSuggestions, раз уж ты всё равно занимаешься вставкой на своей стороне?

Убрал заполнение атрибута text при подготовке данных списка автодополнения. Проблема ушла. Однако в редакторе она осталась. Достаточно в список автодополнения добавить элемент с text='&П1'

salexdv commented 3 years ago

Я уже предлагал вариант тут #159 и предложу еще раз. Может тебе передавать пустое поле text в showCustomSuggestions, раз уж ты всё равно занимаешься вставкой на своей стороне?

Убрал заполнение атрибута text при подготовке данных списка автодополнения. Проблема ушла. Однако в редакторе она осталась. Достаточно в список автодополнения добавить элемент с text='&П1'

Пока не вижу в этом проблемы. Да, редактор вставляет всё, что передано в поле text, не его забота анализировать, что перед вставляемым куском находится похожий. Сам я, когда подсказываю параметры запроса, не передаю символ & для вставки т.к. он является триггером, по которому выскакивает список подсказок, и при выборе параметра из списка амперсанд уже будет напечатан.

tormozit commented 3 years ago

Я так понимаю ты пользователю показываешь полный список всех слов (не только параметров), когда он уже явно указал "только параметры"? Это мне тоже кажется не очень хорошим подходом https://github.com/salexdv/bsl_console/issues/170

salexdv commented 3 years ago

Я так понимаю ты пользователю показываешь полный список всех слов (не только параметров), когда он уже явно указал "только параметры"? Это мне тоже кажется не очень хорошим подходом #170

Сразу после амперсанда я показываю только параметры и во вставляемый текст передаю имя параметра без &

salexdv commented 3 years ago

Можно посмотреть, запустив test_query.html и набрав амперсанд

tormozit commented 3 years ago

У тебя параметры получаются отделены от остальных слов (таблицы, функции, ключевые слова), доступных в выражениях. Т.е. общий список у тебя невозможно увидеть, чтобы просто пробежаться по нему глазами и например понять, откуда удобнее будет взять нужное значение.

salexdv commented 3 years ago

У тебя параметры получаются отделены от остальных слов (таблицы, функции, ключевые слова), доступных в выражениях. Т.е. общий список у тебя невозможно увидеть, чтобы просто пробежаться по нему глазами и например понять, откуда удобнее будет взять нужное значение.

Всё так