Перейти на главную страничку сайта (список статей, файлы для скачивания)
Скрипты Intellisense для платформы OpenConf предназначены для расширения функционала плагина "Телепат" и реализации технологии Intellisense в среде 1С:Предприятие v7.7 в полной мере. Эти скрипты требуют предварительной установки OpenConf и плагина Телепат. Получить информацию об этих программных продуктах (в том числе и о том, где их можно скачать вместе со скриптами, о которых идёт речь в этой статье) вы можете в статьях "Проект OpenConf (Открытый Конфигуратор)" и "Плагин Телепат для платформы OpenConf" на этом сайте. Скрипты Intellisense для платформы OpenConf распространяются свободно.
В создании скриптов Intellisense принимали участие:
Установка скриптов Intellisense для платформы OpenConf сводится к следующему:
После установки скриптов Intellisense при наборе кода вы будете получать список автозаполнения в гораздо большем количестве случаев, чем это может предложить бета-версия Телепата (например, вы будете получать список свойств и методов объекта после точки). Перечислять досконально все случаи, когда предлагаются те или иные подсказки, большого смысла нет, поэтому экспериментируйте - вам обязательно понравится.
Скрипты Intellisense содержат макросы (состав макросов вы можете изучить в дереве на вкладке OpenConf окна конфигурации), каждому из которых вы можете назначить сочетание клавиш через меню "OpenConf" - "Макросы" - "Клавиатура...". Часть макросов может быть интересна только разработчикам (например, для отладки).
Скрипт Intellisence.vbs реализует основной функционал Intellisense.
Скрипт dots.vbs позволяет при работе в любом модуле (например, внешняя обработка или модуль документа) использовать определения из глобального модуля. Например, если в глобальном модуле определена экспортируемая переменная "глТЗ", которая проинициализирована в процедуре ПриНачалеРаботыСистемы() или в разделе основной программы глобального модуля как "глТЗ = СоздатьОбъект("ТаблицаЗначений");", в модуле какого-либо документа после конструкции "глТЗ." будет выдан список методов ТаблицыЗначений. Разумеется, сама переменная "глТЗ" тоже будет выдаваться в списках автодополнения.
Скрипт RunAllIntellisence.vbs необходим для связки dots.vbs и Intellisence.vbs. Сначала вызывается Intellisence.vbs, и, если он не смог выдать список методов, управление передаётся в dots.vbs.
Скрипт VimComplete.js реализует дополнительный функционал автодополнения слов в стиле редактора Vim.
***
Несколько полезных советов:
Перем ТЗ, //:ТаблицаЗначений СЗ; //:СписокЗначений Перем Сам; // : Контекст //тип будет определён из контекста, например, для классов 1С++ //(для получения списка методов и свойств класса после точки) //"Контекст" можно использовать и для типов функций (см. примеры чуть ниже) //*********************************************** Процедура ТестПроц (СЗ2, Контр, МД, Таб) // СЗ2 //:СписокЗначений // Контр //:Справочник.Контрагенты // МД //:Метаданные // Таб //:Таблица ... КонецПроцедуры //*********************************************** Процедура ТестПроц (СЗ2, //:СписокЗначений Контр, //:Справочник.Контрагенты МД, //:Метаданные Таб //:Таблица ) ... КонецПроцедуры //*********************************************** Тест = //:ТаблицаЗначений ПолучитьТЗ(); //*********************************************** Функция ТестФунк (Парам) ... КонецФункции // : ТаблицаЗначений //*********************************************** Функция ТестФунк() // : ТаблицаЗначений ... КонецФункции //*********************************************** Функция ТестФунк() // : ТаблицаЗначений тз = СоздатьОбъект("ТаблицаЗначений"); Возврат тз; КонецФункции Функция ТестФунк2() Возврат ТестФунк(); КонецФункции табл = ТестФунк2(); табл.| //здесь после точки будет получен список методов ТаблицыЗначенийПосле такого явного задания типа переменной или функции вы будете получать после точки список атрибутов и методов объекта. При старте скрипт Intellisence.vbs читает определения переменных в глобальном модуле, разыскивая конструкции вида
Перем <ИмяПеременной> Экспорт; //:<ИмяТипа>Такие конструкции заносятся в список типизированных глобальных переменных, и при любом обращении к ним вне глобального модуля тип определяется из этого кэша.
Макрос 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, чтобы вернуться назад на сколько надо шагов. Номер шага вы можете видеть в строке состояния Конфигуратора.
Чтобы понять, как это работает, наберите в модуле следующий текст:
Установите курсор на конец третьей строки ("сл") и позапускайте несколько раз макросы 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 (при работе в редакторе кода 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 При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.