ИР Автодополнение / контекстная подсказка

tormozit 25 1 2

При наборе текста программного кода многие из нас привыкли к автодополнению (контекстной подсказке), т.е. подсказывающему списку вариантов продолжения слова. Иногда он открывается автоматически (например после "."), но чаще всего мы открываем его явно сочетанием CTRL+Space.

В ТурбкоКонфе есть ряд улучшений этого механизма, включающих открытие собственного списка (Т9) через ALT+Space или через Ctrl+Space, когда штатный список не открывается или уже открыт (клавиша CTRL должна быть отжата). Однако в нем до сих пор отсутствовал глубокий анализ контекста. Адаптер ИР добавляет собственный мощный анализатор кода и потому собственный список подсказки ТурбоКонфа теперь будет содержать значительно более релевантные элементы в огромном числе ситуаций. Список подсказки при открытии всегда фильтруется по фрагменту левее каретки, но фильтр можно отключить повторным нажатием Alt+ или Ctrl+Space.

Анализ кода ИР

  1. Вычисление типов, например:
  • возвращаемых значений методов модулей
  • параметров через локальные вызовы метода
  • параметров через подписки на события объектов и форм
  • нетипизированных свойств объекта и переменных модуля в области инициации модуля
  • из особо закомментированных инструкций (подробнее далее)
  • из типизирующих комментариев к инструкциям (подробнее далее)
  • в ветке условия проверяющего тип через ТипЗнч()=Тип("...")
  1. Вычисление динамических свойств объектов, например:
  • колонок и параметров запроса, построителя запроса, построителя отчетов
  • колонок таблицы значений, дерева значений, выборки результата запроса
  • свойств структуры
  • свойств данных управляемой и обычной формы
  1. Вычисление возможных значений строковых литералов, например:
  • в параметре метода платформы опираясь на имя метода и формального параметра
  • в параметре метода модуля опираясь на роль формального параметра в теле метода
  1. Вычисление контекстов запросов (подробнее далее)
  • входящих параметров, включая таблицы
  • входящих/исходящих временных таблиц
  1. Другие виды анализа, которые можно найти в задачах проекта ИР

Анализ кода ИР опирается на

  1. Метаданные в своем приложении. Обновляются при перезапуске приложения ИР.
  2. Собственный кэш модулей. Его предлагается целиком заполнить при первом подключении базы, но можно делать это и в любой момент. Кэш модуля обновляется при вызове любой команды ИР в его окне, а также в TurboConf версии 6.0+ автоматически, если его окно развернуто.
  3. Собственный кэш управляемых форм. Кэш управляемой формы обновляется в окне ее модуля в следующих случаях:
  • автоматически при вызове любой команды ИР с обращением к отсутствующему в кэше конкретному элементу, реквизиту, команде или по прошествии 5 минут с последнего обновления этой формы
  • вручную командой "Обновить кэш объектов конфигурации" в списке подсказки

Подсказка работает в следующих типах окружения встроенного языка:

  1. Инструкция встроенного языка
  2. Комментарий - например ввод имени типа, указателя на объект метаданных или метод модуля
  3. Строковый литерал - зависит от контекста, которым обычно является формальный параметр метода, либо аналогично комментарию

Рекомендуется использовать такие настройки ТурбоКонфа. Красным выделен особо важный флажок.

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

В окне "Выражение" в TurboConf 6.0+ используется контекст последнего активного модуля.
А в нижних версиях TurboConf используется контекст последнего модуля, в котором вызывалась команда адаптера. Для этих версий есть специальная команда для открытия этого окна с передачей контекста Вычислить выражение с контекстом

В окне "Условие останова" поведение аналогичное

Типизирующие комментарии

В конфигураторе встроенный анализатор кода не предоставляет возможности явно назначить документирующий тип выражению.
Поэтому приходилось применять различные обходные пути типа таких.
Анализатор кода ИР допускает явное назначение типов с помощью комментариев:

  • переменным при их объявлении
  • параметрам методов
  • возвращаемым значениям функций
  • левым операндам в инструкциях присвоения
  • итераторам при обходе коллекций
  • свойствам структуры после Вставить()
  • колонкам таблицы/дерева значений после Добавить/Вставить()

Используется расширенный стандарт типизирующих комментариев EDT. Подробнее тут
Также поддерживаются произвольные инструкции для анализатора кода, не поддерживаемые со стороны EDT. Строка такой инструкции начинается с "//!" или "//:".

Примеры:

МояПеременная3 = 0; // ОбработкаОбъект.ЗагрузкаЦен
Для каждого МояПеременная4 из Массив Цикл // Структура
Структура.Вставить("ф"); // см. ирОбщий.ВсеОбработчикиСобытийФормаЛкс[0]
Таблица.Колонки.Добавить("ф"); // см. ирОбщий.ВсеОбработчикиСобытийФормаЛкс
//! МояПеременная1 = Обработки.ЗагрузкаЦен.Создать();
//! МояПеременная2 = 0; // ОбработкаОбъект.ЗагрузкаЦен

Язык запросов

Подсказка работает в редакторе модуля внутри строкового литерала с полным текстом запроса и учитывает просто вычисляемый контекст встроенного языка, включающий таблицы-параметры и сессию менеджера временных таблиц

Подсказка работает в любом окне редактора полного текста запроса. Например в редакторе запроса схемы компоновки данных

0

Еще в "TurboConf ИР"

ИР Найти последнюю правку в Гите

ИР Запомнить для сравнения

ИР Переименовать слово

ИР Открыть объект метаданных

ИР Анализ замера

ИР Точка останова

ИР Форматировать текст

ИР Проверить модуль

ИР Найти последнюю правку в хранилище

ИР Запустить толстый клиент

Модератору