Skip to content

Зачем нужен конструктор скриптов

Что происходило до конструктора

Section titled “Что происходило до конструктора”

В книгах проекта в ячейках стоят вызовы вида

<script GAP.AUCS.Thresholds.GetThTag([TAG], 1)/>

Такой вызов — это обращение к методу из внешней сборки GAP.dll. Ячейка подаёт аргументы по порядку: вместо [TAG] подставляется значение столбца TAG той строки, где стоит вызов, вторым идёт число. Метод внутри GAP.dll ходит по объектам проекта, что-то ищет, что-то склеивает и возвращает строку, которая и оказывается в ячейке.

У этого две беды, и обе не про код.

  • Логику видно только в исходниках. Что именно делает GetThTag, наладчик узнать не может: он видит имя и результат. Если результат не тот, единственный способ разобраться — просить того, кто писал сборку.
  • Правка — это пересборка. Поменять одно сравнение внутри функции нельзя, не собрав и не разложив новую GAP.dll всем.

Что делает конструктор

Section titled “Что делает конструктор”

Конструктор скриптов — это то же самое вычисление, но собранное из шагов, каждый из которых читается фразой на русском. Та же GetThTag становится схемой из четырёх шагов: найти объект по тегу → перейти по связи «пороги» → взять порог под номером → взять у него поле. Схема лежит файлом, правится в окне, проверяется пробным запуском и не требует пересборки программы.

Что схема умеет и чего не умеет

Section titled “Что схема умеет и чего не умеет”
Схема умеетСхема не умеет
Посчитать значение для своей ячейки: найти объекты, прочитать их поля, собрать строку, сравнить, разветвиться, подставить по таблице.Сделать что-то «на всю сборку»: включить отчёт об ошибках, почистить выгрузку, собрать файлы конфигурации. Такие функции GAP остались в GAP.dll — см. Ограничения.
Прочитать текстовый файл по собранному пути и вернуть его текст.Записать файл.
Задать переменные шаблона — то же, что AddVariable в первой строке .jsm.Позвать функцию GAP.dll из своего шага: «Вызвать схему» зовёт только схемы.
Содержать кусок C# шагом «Свой код» — там, где готового действия в палитре ещё нет.Дать этому коду столбцы строки книги напрямую: то, что коду нужно, подают ему аргументом.

Схема считается в двух случаях, и это надо различать, потому что от этого зависит, какие шаги вообще сработают.

КогдаЧто доступно
Во время чтения экселейОбъектов проекта ещё нет — они как раз собираются. Так читаются ячейки, которые определяют, какие файлы вообще будут открыты: TAG, OBJTYPENAME, Template, IOBJ, localObject, PathDevStudio. Шаг, которому нужны собранные объекты, в этой фазе честно обрывается с сообщением.
После чтения экселейЭксели прочитаны целиком, объекты проекта собраны. Работают все шаги.

В справке действия, требующие собранного проекта, помечены нужен прогон.

Кнопка в заголовке главного окна Uniplant Atomix раскрывает панель «Быстрый переход»; в ней — пункт «Конструктор скриптов». Открывается отдельное окно с заголовком «Конструктор скриптов» и вкладками: «◂ Каталог» и по вкладке на каждую открытую схему.

Панель «Быстрый переход» — общая для инструментов: рядом стоят «Инспектор объектов» (Ctrl+I), «Проводник», Selector, SettingManager, ExcelFinder, DevStudio, HMI.