Это небольшая инструкция, которая поможет скриптописателям повысить удобство и скорость разработки скриптов для снегопата.
Предлагаем использовать для этих целей редактор Visual Studio Code
и язык TypeScript
. Этот язык - развитие языка JavaScript,
к которому добавлена типизация переменных, классы и модули. Скрипт на языке TypeScript транслируется его компилятором в обычный JavaScript.
Благодаря возможности подключить к редактору файлы с описанием SnegopatAPI
и типов 1С, при разработке скриптов для снегопата в редакторе отлично работает intellisense
, что делает работу быстрой и комфортной.
Начать его использование для разработки помогут несколько простых шагов.
-
Скачиваем и устанавливаем Visual Studio Code: https://code.visualstudio.com/
-
Скачиваем и устанавливаем TypeScript: http://www.typescriptlang.org/
- Снегопат использует для своих скриптов TypeScript 2.6
- его можно скачать отсюда: https://www.microsoft.com/en-us/download/details.aspx?id=55258
- в разделе Details есть нужный релиз.
- его можно скачать отсюда: https://www.microsoft.com/en-us/download/details.aspx?id=55258
- Чтобы команда
tsc
запускалась отовсюду, можно добавить каталог"c:\Program Files (x86)\Microsoft SDKs\TypeScript\2.6"
в переменную окруженияPATH
.
- Снегопат использует для своих скриптов TypeScript 2.6
-
В папке снегопата, рядом с папками
addins
иcore
- создаем папкуcustom
.- Снегопат в ней ищет дополнительные пользовательские аддины.
-
Создаем папку для разработки, например
develop
, можно тоже в папке снегопата, рядом сaddins
иcustom
. -
В этой папке создаём подпапку
std
. -
Копируем все
*.ts
файлы изcore\scripts\src
в папкуdevelop\std
. -
В папке
develop
запускаем командуtsc --init
- Она создаст файл проекта
tsconfig.json
- Она создаст файл проекта
-
В этом файле
- исправляем путь к каталогу сборки, параметр
outDir
. В нем надо прописать путь к каталогуcustom
.- Если папка
develop
рядом с ним, просто укажите:"outDir": "../custom"
,
- Если папка
- И добавьте рядом параметры
"emitBOM": true
"newLine": "LF"
"noImplicitUseStrict": true
Файл будет выглядеть примерно так
- исправляем путь к каталогу сборки, параметр
{
"compilerOptions": {
"module": "commonjs",
"newLine": "LF",
"noImplicitUseStrict": true,
"target": "es3",
"noImplicitAny": false,
"outDir": "../custom",
"rootDir": ".",
"sourceMap": false,
"emitBOM": true
},
"exclude": [
"node_modules"
]
}
-
Запускаем Visual Studio Code:
code.exe "путь к папке develop"
-
Жмем
Ctrl+Shift+P
, набираемconf
,- выбираем
Tasks: Configure Default Build Task
, - далее
tsc: build - tsconfig.json
Откроется окно с настройками сборки
- выбираем
{
"version": "2.0.0",
"tasks": [
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"problemMatcher": [
"$tsc"
],
"group": {
"kind": "build",
"isDefault": true
},
"label": "tsc: build - tsconfig.json"
}
]
}
-
В окне снегопата в меню
Разработка
по очереди нажимаемСдампить SnegAPI в snegopat.d.ts
иСдампить типы 1С в v8.d.ts
. Файлы создадутся в каталоге снегопата.- Перемещаем их в каталог разработки (
develop
).
- Перемещаем их в каталог разработки (
-
Это всё!
Теперь можно в этом каталоге создавать файлы с расширением .ts
.
И по нажатию Ctrl+Shift+B
они будут компилится в js-файлы
в каталог custom
.
Вместе с ними также скомпилятся еще и std-скрипты
в папку custom\std
, но они не помешают.
- В начале своих
ts-скриптов
пишем:
//engine: JScript
//uname: уникальное имя
//addin: global
... другие теги ...
- Подключаем
SnegopatAPI
итипы 1С
, файлы должны лежать в этом же каталоге:
...
/// <reference path="./snegopat.d.ts" />
/// <reference path="./v8.d.ts" />
...
- Подключаем глобальные контексты 1С
...
global.connectGlobals(SelfScript);
...
- Подключаем нужные стандартные скрипты
...
import * as stdlib from "./std/std";
import * as stdcommands from "./std/commands";
import * as hks from "./std/hotkeys";
...
и т.п., смотря какие скрипты нужны.
В кавычках путь
- обязательно должен начинаться с точки,
- быть относительным каталога, где лежит скрипт,
- расширение
ts
не указываем.
Также можно импортом подключать и другие свои скрипты, написанные на TypeScript
.
В таких скриптах обязательно какие-нибудь методы должны быть export
, смотрите примеры в стандартных скриптах.
Переменные типизируются или сами при объявлении присваиванием, если тип выводится из выражения, либо можно через двоеточие указать явно. Самый общий тип - any
.
Иногда TypeScript ругается на несовпадение типов - тогда приводите явно: <ИмяТипа>
Смотрите примеры, читайте интернет. Успехов!
Лучше всего установить Visual Studio Community Edition
-
При установке отметить компоненты
Поддержка языков JavaScript и TypeScript
- и
Диагностика JavaScript
.
-
Далее запустить
Visual Studio
и в менюTools->Options
в разделеDebugging\Just-In-Time
поставить галочку наScript
. -
В тексте скрипта в месте, где хочется подключить отладчик, написать
debugger
тогда при выполнении этой строки всплывёт отладчик.
Дальше в нём уже можно выполнять пошагово, ставить точки останова, просматривать переменные и т.д. и т.п.
В окне Solution Explorer
при этом будут видны все
загруженные скрипты, то есть можно открыть любой скрипт и поставить точку останова.
Также можно использовать скрипт Немедленное выполнение кода
, в его окне есть кнопка Вызвать отладчик
.