Инструменты пользователя

Инструменты сайта


script

Внимание! На данный момент система поддерживает работу со скриптами только на языке JavaScript, в связи с этим для понимания этой статьи необходимо обладать базовыми навыками работы с этим языком.

Раздел проекта "Скрипты"

Все скрипты проекта запускаются на исполнение при запуске среды исполнения. Сами по себе скрипты подключаются к проекту в виде JavaScript модулей, поэтому для доступа к элементам скрипта их необходимо явно экспортировать, те функции и переменные скриптов имеют свою область видимости только в пределах своего скрипта и по умолчанию не видны из других. Для доступа к элементам скрипта извне используется ключевое слово export.
При создании нового скрипта автоматически создается шаблон кода функции инициализации скрипта:

export async function init() {
 
}

Эта функция вызывается ядром системы при каждом старте среды исполнения. Если скрипту не требуется инициализация при старте, эту функцию можно удалить.
Экспортируемые элементы скриптов можно в дальнейшем использовать в других скриптах. К примеру создадим скрипт с именем script1 и содержимым:

script1

export function f1() {
    alert('Функция f1 скрипта 1');
}
 
function f2() {
    alert('Функция f2 скрипта 1');
}

Здесь функция f1 будет доступной из сторонних скриптов, при этом функция f2 доступна только внутри текущего скрипта. Теперь можно создать скрипт с именем script2, в котором можно вызвать функцию f1 первого скрипта. Все загруженные модули доступны в глобальном объекте системы с именем dsSript, соответственно чтобы вызвать функцию из первого модуля необходимо написать следующий код:

script2

export async function init() {
	dsScript.script1.f1();
}

При запуске проекта на исполнение мы увидим сообщение:

Если мы попытаемся вызвать функцию f2, мы получим ошибку, тк она нам не доступна.

script2

export async function init() {
	dsScript.script1.f2();
}


При этом функцию f2 мы без проблем можем использовать внутри первого скрипта:

script1

export function f1() {
	f2();
}
 
function f2() {
	alert('Функция f2 скрипта 1');
}


script2

export async function init() {
	dsScript.script1.f1();
}


Скрипты элементов визуализации

Скрипты так же можно использовать как действие на событие элементов визуализации (на данный момент доступно только событие «Нажатие» элемента «Кнопка»). Для примера создадим скрипт с именем script1 и следующим содержимым:

script1

export function f1() {
	alert('hi');
}

Чтобы использовать код скрипта проекта в своем коде, его необходимо подключить функцией include.
Далее добавляем на экран кнопку, выбираем на событие «Нажатие» тип «Скрипт» и нажимаем справа кнопку редактирования, чтобы вписать код скрипта.

Пропишем следующий код скрипта:

const script1 = ds.include('script1');
script1.f1();

Теперь при запуске проекта и нажатии кнопки будет вызываться функция скрипта:

Глобальные переменные

В любых скриптах из любого места доступен объект ds.global внутри которого можно хранить любые пользовательские данные. При этом надо иметь в виду что данные хранятся только во время работы среды исполнения, при ее перезапуске данные теряются. Для долговременного хранения данных необходимо использовать устройство «База данных» (в разработке).
Для примера создадим две кнопки, первая из которых будет записывать в переменную x текущую дату, а вторая выводить ее содержимое:

После чего пропишем следующий код:

Кнопка «Сохранить дату»

ds.global.x = Date();


Кнопка «Показать дату»

alert(ds.global.x);

При нажатии кнопки «Сохранить дату» текущая метка времени будет записываться в переменную x, а при нажатии кнопки «Показать дату» будет выводиться сохраненная в переменную дата.

Функции ядра

Скада система помимо стандартных функций языка JavaScript предоставляет дополнительные инструменты для работы с ядром системы. Системные функции находятся в объекте ds, доступном из всех скриптов. Большинство функций являются асинхронными, что обязательно необходимо учитывать при их использовании.
На данный момент доступны следующие функции:

sleep - задержка выполнения кода на указанное количество миллисекунд;
goto - переход на указанный экран;
getDev - получить значение переменной устройства;
setDev - записать значение переменной устройства;
getProp - получить значение свойства графического элемента;
setProp - установить значение свойства графического элемента.

script.txt · Последнее изменение: 2022/07/29 07:17 — root