Artifact
f197e08e835046ae4b35e4b12413851f78154f2a:
Wiki page
[
snippets.js] by
kuntashov
2011-12-11 14:11:09.
D 2011-12-11T14:11:09.368
L snippets.js
P 28d8961314bd1286646cda5041dfe62a826e4d9f
U kuntashov
W 10788
Скрипт <b>"Шаблоны кода"</b> (snippets.js)
Предназначен для расширения возможностей штатного механизма шаблонов кода конфигуратора 1С:Предприяти 8.
<h2>Возможности скрипта</h2>
<h3>Вставка шаблонов из списка шаблонов</h3>
Штатный механизм шаблонов включает все шаблоны в список контекстной подсказки, что не для всех удобно.
Скрипт "Шаблоны кода" содержит макрос "Выполнить подстановку шаблона", который позволяет открыть отдельный список доступных
шаблонов.
После выбора шаблона будет произведен его парсинг и вставка в текущую позицию курсора (или вместо выделенного текста,
если было установлено выделение).
<h3>При помощи скрипта шаблон можно "применять" к текущему выделению.</h3>
Любые шаблоны, содержащие в себе штатную конструкцию "Установка курсора" (<?>) могут быть не просто вставлены
в текст модуля в текущую позицию, но и "применены" к выделенному тексту.
Это означает, что выделенный текст перед вставкой шаблона будет подставлен в текст шаблона вместо управляющей конструкции
"Установка курсора" (<?>), а затем полученный код будет вставлен в текст модуля вместо выделенного текста.
<h3>Возможность указывать альтернативную позицию установки курсора</h3>
В шаблоне, который предполагается использовать одновременно для создания нового кода и для "применения" к выделенному тексту
можно указать альтернативную позицию установки курсора.
Например, шаблон "Если" может быть настроен таким образом, чтобы когда шаблон применяется к выделению, выделенный текст обрамляется
конструкцией "Если", а курсор устанавливается в позицию, обозначенную |:
<verbatim>
Если | Тогда
// Здесь будет выделенный текст
КонецЕсли;
</verbatim>
Для указания в шаблоне места альтернативной установки курсора используется штатная управляющая конструкция
"Произвольный запрос" (<?"">), подсказка которого начинается с символа "|" (например, <?"|Условие">).
Для приведенного примера шаблон будет выглядеть следующим образом:
<verbatim>
Если <?"|Условие"> Тогда
<?>
КонецЕсли;
</verbatim>
Если такой шаблон вставляется "традиционно" - без выделения, то место вставки курсора будет определяться управляющей конструкцией <?>,
иначе будет использована альтернативная позиция.
<h3>Возможность задавать шаблонам индивидуальные горячие клавиши</h3>
Шаблоны, которым вы хотите назначить индивидуальный хоткей, должны первой строчкой содержать следующую управляющую конструкцию:
<verbatim><%Макрос "<Имя макроса шаблона>"></verbatim>
где <Имя макроса шаблона> - имя, под которым макрос для вставки этого шаблона появится в списке макросов скрипта "Шаблоны кода".
Назначение хоткея такому макросу осуществляется в окне настройки горячих клавиш Снегопата.
Перед вставкой шаблона при помощи "Шаблоны кода" строка с управляющей конструкцией будет удалена.
Индивидуальные макросы можно использовать для реализации шаблонов - "авторских комментариев". Пример такого шаблона:
<verbatim>
<%Макрос "Авторский комментарий: Добавление">;
//{Добавлено - Начало. <?"", ИмяПользователяХранилищаКонфигурации> - <?"", ДатаВремя, "ДФ=гггг-ММ-дд">
<?>
//}Добавлено - Конец.
</verbatim>
При наличии такого шаблона в макросы "Шаблоны кода" будет добавлен макрос с именем "Вставить шаблон Авторский комментарий: Добавление", которому можно будет назначить свою горячую клавишу.
<h3>Дополнительные управляющие конструкции для использования в шаблонах</h3>
Скрипт "Шаблоны кода" добавляет поддержку дополнительных управляющих конструкций для вставки значений свойств основной конфигурации,
а также для вставки имени пользователя операционной системы, в сеансе которого запущен конфигуратор.
Назначение каждой конструкции понятно из ее представления:
<verbatim>
<%Конфигурация.Имя>
<%Конфигурация.Синоним>
<%Конфигурация.Комментарий>
<%Конфигурация.Поставщик>
<%Конфигурация.Версия>
<%Конфигурация.АвторскиеПрава>
<%Конфигурация.КраткаяИнформация>
<%Конфигурация.ПодробнаяИнформация>
<%Конфигурация.АдресИнформацииОКонфигурации>
<%Конфигурация.АдресИнформацииОПоставщике>
<%ИмяПользователяОС>
</verbatim>
Обратите внимание, что в отличии от штатных управляющих конструкций дополнительные конструкции используют немного отличающийся синтаксис:
<ul>
<li>вместо знака вопроса(?) используют знак процента (%)</li>
<li>указание подсказки для пользователя писать не надо, т.к. она не нужна, потому что никаких запросов у пользователя не делается</li>
</ul>
Для вставки этих управляющих конструкций в шаблон при его редактировании штатным редактором шаблонов "1С:Предприятия 8" используйте макрос
скрипта "ВставитьРасширеннуюУправляющуюКонструкцию".
<h3>Скрипт использует штатный формат файлов шаблонов 1С (*.st)</h3>
Скрипт полностью совместим по формату хранения шаблонов со штатным механизмом и не требует конвертации уже имеющихся шаблонов.
Расширение управляющих конструкций не "ломает" штатные шаблоны (все расширение укладывается в рамки существующего синтаксиса),
поэтому "расширенные" и "обычные" шаблоны можно использовать одновременно.
Для редактирования шаблонов можно использовать штатный редактор шаблонов.
Начиная с версии 1.1.3.1 "Снегопата" расширенные конструкции работают в том числе и при вставке шаблонов штатными средствами 1С, например
при перетаскивании шаблона в код из окна шаблонов мышкой или при использовании вставки шаблона из списка автодополнения и т.п.
<h2>Зависимости и особенности установки</h2>
Скрипт использует для своей работы скрипты-библиотеки [/finfo?name=Libs/TextWindow.js|TextWindow.js], [/finfo?name=Libs/StreamLib.js|StreamLib.js] и [/finfo?name=Libs/SettingsManagement.js|SettingsManagement.js], а также библиотеку [/finfo?name=bin/svcsvc.dll|svcsvc.dll] Александра Орефкова.
Все они находятся в репозитории и будут получены автоматически при обновлении скриптов из репозитория при помощи скрипта get_latest.cmd.
Для установки скрипта необходимо зарегистрировать библиотеку svcsvc.dll при помощи скрипта regall.cmd (если она у вас еще не зарегистрирована), а затем добавить скрипт snippets.js в файл addins.ini.
<h2>Ссылки:</h2>
* [/finfo?name=snippets.js|История версий]
* [http://snegopat.ru/forum/|Обсуждение на форуме]
Z e8421f65dd62ea1d1089b4e4086f8e59