Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Скрипты Intellisense для платформы OpenConf

Назначение и установка

Скрипты Intellisense для платформы OpenConf предназначены для расширения функционала плагина "Телепат" и реализации технологии Intellisense в среде 1С:Предприятие v7.7 в полной мере. Эти скрипты требуют предварительной установки OpenConf и плагина Телепат. Получить информацию об этих программных продуктах (в том числе и о том, где их можно скачать вместе со скриптами, о которых идёт речь в этой статье) вы можете в статьях "Проект OpenConf (Открытый Конфигуратор)" и "Плагин Телепат для платформы OpenConf" на этом сайте. Скрипты Intellisense для платформы OpenConf распространяются свободно.

В создании скриптов Intellisense принимали участие:

Установка скриптов Intellisense для платформы OpenConf сводится к следующему:

  1. Установите OpenConf и плагин Телепат, если они ещё не установлены.
  2. Скопируйте файлы в любой каталог на жёстком диске, например

    C:\Program Files\1Cv77\BIN\config\system\

    Эти файлы не должны лежать непосредственно в подкаталоге "config" каталога исполняемых файлов 1С:Предприятия, так как все dll-файлы из этой папки OpenConf считает плагинами и пытается их загрузить в момент запуска Конфигуратора (а эти файлы плагинами для OpenConf не являются). Зарегистрируйте в системе каждую из вышеуказанных библиотек (кроме .tlb) с помощью regsvr32.exe, если это ещё не сделано. Командная строка регистрации библиотеки может выглядеть, например, так:

    regsvr32.exe "C:\Program Files\1Cv77\BIN\config\system\Collections.wsc"

    Важное замечание: библиотеку OpenConf.RegistryIniFile.wsc надо регистрировать в тот момент, когда библиотека Registry.wsc уже зарегистрирована, иначе при регистрации возникнет ошибка.
  3. Скопируйте папку Intell со всем содержимым в подкаталог "config" каталога исполняемых файлов 1С:Предприятия, если этой папки там ещё нет. Полный путь к уже скопированной папке может выглядеть, например, так:

    C:\Program Files\1Cv77\BIN\config\Intell\

  4. Скопируйте файлы в подкаталог "config\scripts\Intellisense\" каталога исполняемых файлов 1С:Предприятия, если этих файлов там ещё нет. Полный путь к этому каталогу может выглядеть, например, так:

    C:\Program Files\1Cv77\BIN\config\scripts\Intellisense\

    Примечание: в принципе, папку "Intellisense" можно и не создавать, положив скрипты прямо в "config\scripts\". Однако, кроме скриптов группы Intellisense, для OpenConf существуют и другие скрипты. Если впоследствии вы захотите установить их, хорошо организованная структура папок вам пригодится.
  5. Перезапустите Конфигуратор, если он был запущен.
  6. С помощью меню "OpenConf" - "Макросы" - "Клавиатура..." назначьте быстрые клавиши следующим макросам:

Использование

После установки скриптов Intellisense при наборе кода вы будете получать список автозаполнения в гораздо большем количестве случаев, чем это может предложить бета-версия Телепата (например, вы будете получать список свойств и методов объекта после точки). Перечислять досконально все случаи, когда предлагаются те или иные подсказки, большого смысла нет, поэтому экспериментируйте - вам обязательно понравится.

Скрипты Intellisense содержат макросы (состав макросов вы можете изучить в дереве на вкладке OpenConf окна конфигурации), каждому из которых вы можете назначить сочетание клавиш через меню "OpenConf" - "Макросы" - "Клавиатура...". Часть макросов может быть интересна только разработчикам (например, для отладки).

Скрипт Intellisence.vbs реализует основной функционал Intellisense.

Скрипт dots.vbs позволяет при работе в любом модуле (например, внешняя обработка или модуль документа) использовать определения из глобального модуля. Например, если в глобальном модуле определена экспортируемая переменная "глТЗ", которая проинициализирована в процедуре ПриНачалеРаботыСистемы() или в разделе основной программы глобального модуля как "глТЗ = СоздатьОбъект("ТаблицаЗначений");", в модуле какого-либо документа после конструкции "глТЗ." будет выдан список методов ТаблицыЗначений. Разумеется, сама переменная "глТЗ" тоже будет выдаваться в списках автодополнения.

Скрипт RunAllIntellisence.vbs необходим для связки dots.vbs и Intellisence.vbs. Сначала вызывается Intellisence.vbs, и, если он не смог выдать список методов, управление передаётся в dots.vbs.

Скрипт VimComplete.js реализует дополнительный функционал автодополнения слов в стиле редактора Vim.

***

Несколько полезных советов:

Макрос SelectAndPasteTypeFromPossibleTypes скрипта Intellisence.vbs служит для быстрой вставки в текст типа переменной (например, чтобы облегчить ввод комментариев для явного задания типов переменных).

Макрос AddTypeDefinition скрипта Intellisence.vbs служит для быстрой вставки в текст конструкции типа " // : ИмяТипа" (чтобы облегчить ввод комментариев для явного задания типов переменных).

Макрос CreateArgsTypeDefs скрипта Intellisence.vbs создает в диалоговом режиме для текущей процедуры или функции строки определения типов для каждого аргумента. Аргументы выбираются из списка аргументов, после выбора аргумента предлагается выбрать его тип из списка возможных типов. Прервать подстановку определений типов можно нажав Escape в списке аргументов или в списке типов. Требует наличия скрипта Переходы по модулю.vbs, см. статью Скрипты для платформы OpenConf: навигация по коду.

***

Макрос CopyLine скрипта Intellisence.vbs копирует строку или часть текущей строки слева от курсора на следующую строку (это может пригодиться, например, при инициализации многочисленных полей какого-либо объекта). Чтобы понять, как это работает, установите курсор посередине любой непустой строки модуля и нажмите заданное сочетание клавиш для макроса несколько раз.

***

Макрос MethodsList скрипта Intellisence.vbs выводит список атрибутов и методов объекта после точки (в большинстве случаев это происходит автоматически). Несколько полезных советов:

***

Набор макросов скрипта dots.vbs, описанный в таблице ниже, позволяет работать с так называемым "словарём", который реализует механизм, аналогичный "списку быстрой вставки" или "многокарманному" буферу обмена в некоторых других программах. Словарь - это текстовый файл DictDots.txt, создаваемый автоматически в каталоге BIN установки 1С:Предприятия, который будет содержать список быстрой вставки (при желании этот файл можно отредактировать и вручную). Макросы:


AddWordToSlovar Добавляет выделенный текст в словарь. Если выделено несколько строк, будет добавлено несколько значений.
AddToSlovarFromClopboard Добавляет в словарь содержимое буфера обмена. Возможна замена текущего содержимого словаря, либо добавление содержимого к существующим данным словаря. Выбор варианта добавления осуществляется в списке. Если в буфере многострочный текст, будет добавлено несколько значений.
InsertFromSlovar Вставляет выбранную строку из словаря в текущую позицию курсора. Выбор осуществляется в списке с фильтрацией (возможна фильтрация по нескольким подстрокам).
SelectStringFromClipboard Позволяет выполнить подстановку в текущую позицию курсора одной из строк многострочного текста, находящегося в буфере обмена. Выбор осуществляется в списке с фильтрацией (возможна фильтрация по нескольким подстрокам). Рекомендуется вешать на хоткей Ctrl+D. Макрос не работет со словарём, но описан здесь, т.к. реализует сходный функционал.

***

Макросы NextWord и PrevWord скрипта VimComplete.js осуществляют автодополнение слов в стиле редактора Vim. Макрос NextWord берёт незавершённое слово, находящееся слева от курсора, и пытается дополнить его, ища вперед по тексту слова с такой же левой частью. Подставляет первое подходящее. Следующий вызов макроса подставит следующее за первым найденным словом и так далее (при достижении последней строки модуля поиск продолжится с первой строки). Макрос PrevWord делает то же, только поиск слов осуществляется в обратном направлении. Если вы случайно проскочили подходящее слово, пользуясь макросом NextWord, вызывайте макрос PrevWord, чтобы вернуться назад на сколько надо шагов. Номер шага вы можете видеть в строке состояния Конфигуратора.

Чтобы понять, как это работает, наберите в модуле следующий текст:


Слово1
Слово2
сл
Слово3
Слово4


Установите курсор на конец третьей строки ("сл") и позапускайте несколько раз макросы NextWord и PrevWord, пользуясь назначенными им сочетаниями клавиш.

***

Осуществляется поддержка классов 1С++. Если Вы собираетесь работать с классами 1С++ (кроме случая использования встроенных классов), то необходимо в папке C:\Program Files\1Cv77\BIN\config\Intell\1С++\ создать для каждого класса файл <ИмяКласса>.ints с перечислением методов и атрибутов класса. Формат можно посмотреть в файлах .ints стандартных классов.

Вместо ручной компоновки ints-файлов можно запустить на исполнение макрос Update1CppInts скрипта Intellisence.vbs (это можно сделать двойным щелчком по имени макроса в дереве на вкладке "OpenConf" окна конфигурации). Все классы 1С++ представляют собой текстовые файлы или (намного чаще) внешние обработки (ert-файлы). Все классы 1С++ должны быть описаны в файле defcls.prm в каталоге Информационной базы 1С:Предприятия. В этом файле описана связь имени класса с файлом или внешней обработкой. Вышеуказанный макрос анализирует файл defcls.prm, находит все классы, просматривает их код и составляет список методов в виде ints-файлов. Например, если есть класс "Общие.ТаблицаЗначений", после запуска макроса в каталоге \config\Intell\1С++\ появится файл "Общие.ТаблицаЗначений.ints". Впоследствии запуск макроса нужно выполнять всякий раз, когда добавляется новый класс или изменяется один из существующих.

Когда ints-файлы для классов 1С++ сформированы, вы можете проверить работу Intellisense. Например, если есть класс "Общие.ТаблицаЗначений", наберите в модуле следующий код:


ТЗ = СоздатьОбъект("Общие.ТаблицаЗначений");
ТЗ.


Поле набора последней точки вы должны увидеть список автодополнения с методами и атрибутами класса.

Тонкая настройка

Вы можете дополнять списки Intellisense редактированием файлов в каталоге C:\Program Files\1Cv77\BIN\config\Intell\. Например, откройте файл "СоздатьОбъект.ints" и добавьте в конец строку "0000 Scripting.Dictionary". Затем создайте файл "Scripting.Dictionary.ints" и добавьте в него строки "0000 Count" и "0000 Add(f)". Перезагрузите скрипт "Intellisence.vbs" на вкладке "OpenConf" окна конфигурации (это можно сделать с помощью соответствующей команды контекстного меню на элементе скрипта в дереве). Теперь при создании в коде объекта "Scripting.Dictionary" (с помощью функции "СоздатьОбъект") вы будете иметь после точки в списке автодополнения свойство "Count" и метод "Add".

Настройка работы скрипта "Intellisence.vbs" производится в файле C:\Program Files\1Cv77\BIN\config\Intell\Intell.ini. Все параметры этого файла подробно закомментированы в нём самом. После исправления Intell.ini перезагрузите скрипт "Intellisence.vbs" на вкладке "OpenConf" окна конфигурации (это можно сделать с помощью соответствующей команды контекстного меню на элементе скрипта в дереве). Примечание: не рекомендуется устанавливать параметр CHOICELIST_KIND = 1, т.к. замечено, что в этом случае при использовании списков автодополнения Intellisense Конфигуратор иногда на некоторое время теряет фокус (зависает).

Генератор ints-файлов (списков Intellisense)

Генератор ints-файлов позволит получать подсказки Intellisense (при работе в редакторе кода 1С:Предприятия) для любого COM-сервера, зарегистрированного в системе. Чтобы установить генератор ints-файлов, проделайте следующее:

Макрос Generator скрипта intsOLEGenerator.vbs позволяет сгенерировать ints-файлы списков Intellisense для указанного COM-сервера. Запустите макрос с помощью клавиш Ctrl+M и укажите ProgID нужного COM-сервера (например, "Excel.Application"). В каталоге C:\Program Files\1Cv77\BIN\config\Intell\ будут созданы необходимые файлы (это может занять некоторое время). После этого будет выдан запрос на создание ALS-файла. Если вы ответите утвердительно, ALS-файл будет создан в каталоге C:\Program Files\1Cv77\BIN\ (это также может занять некоторое время). Далее, чтобы увидеть этот ALS-файл в дереве синтакс-помощника, перезапустите Конфигуратор или воспользуйтесь командой "Обновить" контекстного меню синтакс-помощника. Количество полезной информации в таком ALS-файле будет зависеть от содержимого библиотеки самого COM-сервера и может оказаться невелико.

Если вы успешно сгенерировали ints-файлы для COM-сервера "Excel.Application", то после набора следующего кода:

ExcelApp=СоздатьОбъект("Excel.Application");
ExcelApp.|


вы должны увидеть подсказку Intellisense, т.е. список свойств и методов (вертикальной чертой обозначена позиция курсора ввода).

Макрос ReGenerator скрипта intsOLEGenerator.vbs позволяет запустить генерацию ints-файлов для указанного COM-сервера повторно, например, если захотелось сгенерировать ALS-файл, который не был сгенерирован ранее, или если при запуске макроса Generator произошла ошибка (например, библиотека COM-сервера была не найдена или не зарегистрирована).

Людоговский Александр

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.