Intellisense скриптове за платформата OpenConf
Предназначение и монтаж
Скриптовете Intellisense са създадени от:
- Аюханов Артур.
- Диркс Алексей.
- Александър Кунташов.
- Реутов Дмитрий.
- Трошин Дмитрий.
Инсталирането на Intellisense скриптове за платформата OpenConf е както следва:
- Инсталирайте OpenConf и плъгина Telepath, ако вече не са инсталирани.
- Копиране на файлове
- Колекции.wsc
- CommonServices.wsc
- SyntaxAnalysis.wsc
- Регистър.wsc
- OpenConf.RegistryIniFile.wsc
- scriptlet.tlb
- SelectValue.dll
- ИзберетеDialog.dll
- svcsvc.dll към всяка директория на вашия твърд диск, например
Тези файлове не трябва да се намират директно в поддиректорията "config" на директорията с изпълними файлове на 1C:Enterprise, тъй като OpenConf счита всички dll файлове от тази папка за добавки и се опитва да ги зареди при стартиране на конфигуратора (а тези файлове не са добавки за OpenConf). Регистрирайте всяка от горните библиотеки (с изключение на .tlb) сregsvr32.exe, ако вече не е направено. Командният ред за регистрация на библиотека може да изглежда така:
regsvr32.exe "C:\Program Files\1Cv77\BIN\config\system\Collections.wsc"
Важна забележка: библиотекатаOpenConf.RegistryIniFile.wscтрябва да бъде регистрирана в момента, когато библиотекатаRegistry.wscвече е регистрирана, в противен случай ще възникне грешка по време на регистрацията. Копирайте папкатаIntellс цялото й съдържание в поддиректорията "config" на директорията с изпълними файлове на 1C:Enterprise, ако тази папка вече не е там. Пълният път до вече копираната папка може да изглежда така:
Забележка: по принцип не можете да създадете папка "Intellisense", като поставите скриптовете директно в "config\scripts\". Въпреки това, освен скриптовете на групата Intellisense, има и други скриптове за OpenConf. Ако по-късно искате да ги инсталирате, добре организираната структура на папките ще ви бъде полезна.
Използване
След като инсталирате скриптове Intellisense, когато въвеждате код, ще получите списък за автоматично довършване в много повече случаи, отколкото може да предложи бета версията на Telepath (например ще получите списък със свойства и методи на обект след точка). Няма смисъл да изброявате всички случаи, когато се предлагат определени съвети, така че експериментирайте - определено ще ви хареса.
Скриптовете Intellisense съдържат макроси (можете да изучавате състава на макросите в дървото в раздела OpenConf на прозореца за конфигуриране), към всеки от които можете да зададете клавишна комбинация чрез менюто "OpenConf" - "Макроси" - "Клавиатура". Някои макроси може да представляват интерес само за разработчиците (например за отстраняване на грешки).
СкриптътIntellisence.vbsизпълняваосновната функционалност на Intellisense.
Скриптътdots.vbsви позволява да използвате дефиниции от глобалния модул, когато работите във всеки модул (например външна обработка или модул за документи). Например, ако експортирана променлива "glTZ" е дефинирана в глобалния модул, който се инициализира в процедурата AtStart() или в раздела на главната програма на глобалния модул като "glTZ = CreateObject("Таблица със стойности");", в модула на всеки документ след "glTZ." ще бъде върнат списък с методи на ValueTable. Разбира се, самата променлива "glTZ" също ще се появи в списъците за автоматично довършване.
СкриптътRunAllIntellisence.vbsе необходим за свързване на dots.vbs и Intellisence.vbs. Първо се извиква Intellisence.vbs и ако не успее да създаде списък с методи, управлението се прехвърля на dots.vbs.
Някои полезни съвети:
- Използвайте Ctrl+Интервал навсякъде в модула, за да отворите списъка за автоматично довършване, ако не се отвори автоматично.
- Наберете следния код:
MyValueTable=CreateObject("ValueTable"); MyValueTable.NewColumn("Col1"); MyValueTable.NewColumn("Col2"); Моята таблица на стойностите.
(Вертикалната лента показва позицията на курсора.) Натиснете Ctrl+интервал, за да покажете списъка за автоматично довършване, ако не се появи автоматично. Опитайте да изберете "Select Rows(); + Loop Through Rows" или "NewRow(); + Autocomplete TK" - ще получите типични кодови фрагменти.
След такова изрично присвояване на типа на променлива или функция, след точката ще получите списък с атрибути и методи на обекта. При стартиране скриптътIntellisence.vbsчете дефинициите на променливите в глобалния модул, търсейки конструкции от формата Такива конструкции се въвеждат в списъка с въведени глобални променливи и всеки път, когато се осъществява достъп до тях извън глобалния модул, типът се определя от този кеш.
МакросътCreateArgsTypeDefsна скрипта Intellisence.vbs създава, онлайн, за текущата процедура или функция низове за дефиниране на тип за всеки аргумент. Аргументите се избират от списъка с аргументи, след като изберете аргумент, се предлага да изберете неговия тип от списъка с възможни типове. Можете да прекъснете заместването на дефиниция на тип, като натиснете Escape в списъка с аргументи или в списъка с типове. Изисква скриптModulo navigation.vbs, вижте статията Скриптове за платформата OpenConf: кодова навигация.
МакросътCopyLineна скрипта Intellisence.vbs копира ред или част от текущия ред вляво от курсора на следващия ред (това може да бъде полезно, например, когато инициализирате множество полета на обект). За да разберете как работи това, позиционирайте курсора в средата на който и да е непразен модулен ред и натиснете определената макро клавишна комбинация няколко пъти.
МакросътMethodsListна скрипта Intellisence.vbs изброява атрибутите и методите на обекта след точката (в повечето случаи това се случва автоматично). Някои полезни съвети:
- Поставете курсора в началото на нов ред в тялото на модула. Натиснете дадената макро клавишна комбинация и трябва да видите списък за автоматично довършване, който ще се състои само от предварително дефинирани процедури.
- INконструкции като
CreateObject(" GetEmptyValue(" If StrValueType()=" //:
Наборът от макроси в скрипта dots.vbs, описан в таблицата по-долу, ви позволява да работите с така наречения "речник", който реализира механизъм, подобен на "списъка за бързо вмъкване" или "multi-pocket" клипборда в някои други програми. Речникът е текстов файлDictDots.txt, създаден автоматично в директорията BIN на инсталацията на 1C:Enterprise, който ще съдържа списък за бързо вмъкване (при желание този файл може да се редактира и ръчно). макроси:
AddWordToSlovar | Добавя избрания текст към речника. Ако са избрани няколко реда, ще бъдат добавени множество стойности. |
AddToSlovarFromClopboard | Добавя съдържанието на клипборда към речника. Възможно е да замените текущото съдържание на речника или да добавите съдържание към съществуващите данни в речника. Изборът на опция за добавяне се извършва в списъка. Ако в буфера има многоредов текст, ще бъдат добавени множество стойности. |
InsertFromSlovar | Вмъква избрания низ от речника в текущата позиция на курсора. Изборът се извършва във филтриран списък (възможно е филтриране по няколко подниза). |
Изберете StringFromClipboard | Позволява ви да извършите заместване на текущата позиция на курсора на един от редовете с многоредов текст, разположен в клипборда. Изборът се извършва във филтриран списък (възможно е филтриране по няколко подниза). Препоръчително е да закачите Ctrl+D на клавишната комбинация. Макросът не работи с речник, но е описан тук, т.к изпълнява подобна функционалност. |
За да разберете как работи това, въведете следния текст в модула:
Дума 1 Дума2 Дума Дума3 Дума4
Позиционирайте курсора в края на третия ред ("nl") и стартирайте макросите NextWord и PrevWord няколко пъти, като използвате клавишните комбинации, присвоени им.
Поддържат се 1C++ класове. Ако възнамерявате да работите с 1C++ класове (с изключение на случая на използване на вградени класове), тогава трябва да създадете файл.intsза всеки клас в папкатаC:\Program Files\1Cv77\BIN\config\Intell\1C++\със списък от методи и атрибути на класа. Форматът може да се види в .ints файловете на стандартните класове.
Вместо ръчно да свързвате ints файлове, можете да изпълните макроса Update1CppInts на скрипта Intellisence.vbs (това може да стане, като щракнете двукратно върху името на макроса в дървото на раздела „OpenConf“ на прозореца за конфигуриране). Всички 1C++ класове са текстови файлове или (много по-често) външна обработка (ert-файлове). Всички 1C++ класове трябва да бъдат описани във файла defcls.prm в директорията на 1C:Enterprise Infobase. Този файл описва свързването на име на клас с файл или външна обработка. Горният макрос анализира файла defcls.prm, намира всички класове, преглежда техния код и изброява методите като ints файлове. Например, ако има клас "General.ValueTable", след стартиране на макроса, файлът "General.ValueTable.ints" ще се появи в директорията \config\Intell\1С++\. Впоследствие макросът трябва да се изпълнява всеки път, когато се добавя нов клас или се променя някой от съществуващите.
Когато се формират ints-файловете за класовете 1C++, можете да проверите работата на Intellisense. Например, ако има клас "General.ValueTable", въведете следния код в модула:
TK = CreateObject("General.Value Table"); TK.
Последно поле за набиране на точка трябва да видите списъкавтоматично довършване с методи и атрибути на класа.
Фина настройка
Можете да добавяте към списъците на Intellisense, като редактирате файлове в директориятаC:\Program Files\1Cv77\BIN\config\Intell\. Например, отворете файла "CreateObject.ints" и добавете реда "0000 Scripting.Dictionary" в края. След това създайте файл "Scripting.Dictionary.ints" и добавете редовете "0000 Count" и "0000 Add(f)" към него. Презаредете скрипта "Intellisence.vbs" в раздела "OpenConf" на прозореца за конфигурация (това може да се направи с помощта на подходящата команда от контекстното меню на елемента на скрипта в дървото). Сега, когато създадете обект "Scripting.Dictionary" във вашия код (с помощта на функцията "CreateObject"), ще имате свойството "Count" и метода "Add" след точката в списъка за автоматично довършване.
Генератор на ints-файлове (Intellisense списъци)
-
Копирайте например файла TLBINF32.DLL във всяка директория на вашия твърд диск
Този файл не трябва да се намира директно в поддиректорията "config" на директорията с изпълними файлове на 1C:Enterprise. Регистрирайте тази библиотека в системата с помощта на regsvr32.exe. Командният ред за регистрация на библиотека може да изглежда така:
regsvr32.exe "C:\Program Files\1Cv77\BIN\config\system\TLBINF32.DLL"
Копирайте файла intsOLEGenerator.vbs в поддиректорията "config\scripts\" на директорията с изпълними файлове на 1C:Enterprise. Пълният път до тази директория може да изглежда така:
МакросътGeneratorна скрипта intsOLEGenerator.vbs ви позволява да генерирате ints файлове със списък Intellisense за определен COM сървър. Стартирайте макроса, като използвате клавишите Ctrl+M и задайте ProgID на желания COM сървър (например „Excel.Application“). В директорията C:\ProgramFiles\1Cv77\BIN\config\Intell\ необходимите файлове ще бъдат създадени (това може да отнеме известно време). След това ще бъдете подканени да създадете ALS файл. Ако отговорите с „да“, ALS файлът ще бъде създаден в директорията C:\Program Files\1Cv77\BIN\ (това също може да отнеме известно време). След това, за да видите този ALS файл в дървото на Syntax Assistant, рестартирайте Configurator или използвайте командата Refresh от контекстното меню на Syntax Assistant. Количеството полезна информация в такъв ALS файл ще зависи от съдържанието на библиотеката на самия COM сървър и може да не е голямо.
Ако успешно сте генерирали ints файлове за COM сървъра "Excel.Application", след като въведете следния код:
трябва да видите подкана Intellisense, т.е. списък със свойства и методи (вертикалната линия показва позицията на курсора за въвеждане).