Разработка скриптов для Снегопата
Это небольшая статья для тех, кто хочет сам разрабатывать скрипты для нового Снегопата, или править сам движок Снегопата, или просто собирать модуль самостоятельно для внесения оперативных исправлений. В ней я расскажу, как установить и настроить всё необходимое для этого. Скрипты будем создавать на языке TypeScript, инфраструктура заточена именно под этот язык. Предполагается, что вы умеете пользоваться git’ом и настраивать переменные окружения.
- Описание
- Подробнее
Описание
Установка и настройка
Чтобы разрабатывать скрипты для нового Снегопата, вам понадобится установить такие продукты, как:
Core.As – это ядро для запуска модуля Снегопата.
Сам модуль Снегопата в виде git-репозитария.
Visual Studio Community Edition – IDE, в которой происходит сборка модуля Снегопата.
Visual Studio Code — хороший редактор TypeScript.
Git — берете свой любимый.
Разберемся, где что брать.
последний релиз Core.As Loader скачиваем по ссылке https://github.com/infostart-hub/core_as_loader/releases.
Скачиваете архив из текущего релиза. В этот архив входят бинарники стартера и самого Core.As – модуль Снегопата сюда не входит, его нужно будет скачивать отдельно.
Скачанный архив с релизом просто распакуйте в отдельную папку, из которой и будете его запускать. Core.As не требует какой-то особой установки, не пишет в реестр. Достаточно прав на запись в эту папку. Получится так:
ВАЖНО: для дальнейшей сборки модуля Снегопата используется запуск утилит из Core.As, поэтому вам нужно в свойствах проекта для сборки Release платформ Win32 и x64 в пункте VC++ Directories (Каталоги VC++) прописать пути к папкам
Ваша_Папка_Core_As\lib\x64; Ваша_Папка_Core_As\lib\x86
(подробнее об этом ниже)Далее клонируем модуль Снегопата из
https://github.com/infostart-hub/snegopat_modul
в ваше обычное место расположения проектов.Visual Studio Code – нужно просто скачать его по адресу https://code.visualstudio.com/download и установить.
Visual Studio Community Edition нужно скачать по адресу https://visualstudio.microsoft.com/ru/vs/community/ и установить.
На этапе установки необходимо будет обязательно выбрать опцию «Разработка классических приложений на C++», потому что в модуль Снегопата входят исходники небольшой DLL на C++.

На закладке «Отдельные компоненты» в поле поиска наберите script и обязательно установите:
TypeScript SDK
поддержку языков JavaScript и TypeScript
диагностика JavaScript.
Это нужно для того, чтобы у вас собирались скрипты и работала их отладка.

Собираем модуль Снегопата
Мы сейчас создадим модуль Снегопата. Для этого заходим в папку, куда склонировали репо Снегопата и открываем проект snegopat_modul.sln.

Чтобы у вас работала отладка скриптов в Visual Studio, нужно проверить, что в Tools (Средства) – Options (Параметры) в пункте Just-In-Time у вас все галочки проставлены – Script (Скрипт), Native (Машинный), Managed (Управляемый).
Тогда отладчик Visual Studio будет подключаться к отладке скриптов Снегопата.
Еще раз напомню, что дальнейшей сборки модуля Снегопата используется запуск утилит из Core.As, поэтому пути к утилитам Core.As — Ваша_Папка_Core_As\lib\x64; Ваша_Папка_Core_As\lib\x86 нужно прописать в свойствах проекта.
Для этого нужно зайти в свойства проекта snegopat_modul и в пункте VC++ Directories (Каталоги VC++) задать пути для платформ Win32 и x64. Нам достаточно задать пути для конфигурации Release.


Это нужно, потому что часть процесса сборки модуля Снегопата сама сделана в виде модуля Core.As и для его запуска утилита coreas_runner_c.exe из состава Core.As должна запускаться просто по имени.
Поменяем конфигурацию проекта на Release и попробуем собрать проект pack_all – он соберет и проверит одновременно две версии (x64 и x86).

В результате в каталоге _build\Release должен собраться модуль Снегопата.
Теперь его нужно подключить к загружаемым модулям Core.As.
Папку _build\Release\load просто скопируйте в папку с Core.As, достаточно сделать это один раз.

Сам модуль располагается в _build\Release\modules\snegopat. Можно либо каждый раз копировать его в папку Core.As\modules при изменениях, либо один раз создать линк на неё (требуются права админа). Для этого открываем командную строку в папке Core.As\modules и выполняем команду:
mklink /d snegopat “путь к репо Снегопата\_build\Release\modules\snegopat”
Если у вас эти папки лежат где-то рядом, путь можно задать относительным.

Таким образом мы в папку модулей Core.As подключили модуль Снегопата – тот, который у нас собирается в папке _build.
Итак, мы выполнили настройку путей, собрали проект модуля Снегопата и создали ссылку на сборку в модулях Core.As.
Первый запуск – настраиваем стартер
Для запуска модуля идем в Core.As и запускаем starter.exe.
Ранее мы скопировали папку load, в которой для стартера есть настройка: отслеживать запуск процессов с именем 1cv8.exe и если такой процесс запущен, туда будет подгружаться библиотека test.dll, которая проверит, запущена ли 1С в режиме конфигуратора. Если запущена, то будет загружен модуль Снегопата.
Запускаем стартер – он создает иконку в трее и выводит уведомление, что запущен.
Теперь можно просто запускать 1С. При открытии Конфигуратора туда будет подключаться Снегопат.
Создаем свой скрипт для Снегопата
Скрипт для Снегопата мы будем писать на TypeScript в среде VS Code – здесь это делать наиболее удобно.
Для этого заходим в папку с репо Снегопата. В каталоге src/ts мы будем создавать свой скрипт на TypeScript. Все ts-файлы, которые есть в этой папке, при сборке проекта автоматически компилируются в JavaScript-файлы и копируются в каталог _build\ modules\snegopat\addins.
Запустите в этом каталоге VS Code.
Проще всего начать создавать скрипт, просто скопировав какой-то уже существующий. Поэтому просто скопируйте какой-либо из существующих скриптов, переименовав его на свой вкус.
Первое, что нам нужно сделать – это исправить информацию о скрипте. У каждого скрипта задается:
uname – уникальное имя, по которому его можно найти в Снегопате.
dname — описательное имя.
descr – небольшое описание.
Ниже идет стандартная шапка с указанием пути к файлам snegopat.d.ts и v8.d.ts. Эти две строчки трогать не нужно – именно они подключают интеллисенс (контекстную подсказку по типам Снегопата и платформы).

В каждом скрипте должна быть точка входа, через которую можно вызвать его функциональность. Обычно это оформляется в виде макросов. Простейший макрос создается с помощью обычной функции, у которой название начинается с подстроки macros. Все, что после этой подстроки – это название макроса. Поэтому создадим функцию macrosMyFirstMacros().
Итак, простейший скрипт создан. Давайте проверим, что он загружается – добавим в макрос показ сообщения.

Чтобы этот скрипт у нас заработал, нам нужно перейти в Visual Studio и собрать проект. При этом скрипты на TypeScript компилируются в js-файлы и выкладываются в папку сборки.

После сборки, если вы не создали линк на получаемую папку, скопируйте её в Core.As.
Запускаем конфигуратор 1С, открываем список подключаемых скриптов — наш скрипт появился в списке, можно прямо сейчас его загрузить.

Проверим наш макрос. Нажимаем Ctrl+M – у нас в пользовательских аддинах появилась команда “Показ git blame: MyFirstMacros”.

Вызываем команду – выводится сообщение.

О развитии функционала скрипта, а именно о том, что предоставляет объектная модель Снегопата, какие возможности даёт и как её использовать — будет в следующей статье.
Пока же могу порекомендовать изучать справку Снегопата

На данный момент в ней описано не всё, но базовые вещи есть. Подсказка в Visual Studio Code — актуальная и отображает текущую объектную модель. Также можно изучать существующие скрипты, а в затруднительных случаях и код самого движка Снегопата в папке engine. Успехов и новых идей вам!


