JavaScript интерпретатор ======================== Введение -------- **JavaScript интерпретатор** (далее просто «интерпретатор») - модуль, предоставляющий возможность написать server-side скрипт на JavaScript с использованием объектов платформы. На данный момент использовать интерпретатор можно для обработки в блокирующем процессе, а также для обработки внтуренних событий Synergy :ref:`interpreter_events`. Поддерживаемые объекты: формы, личные карточки. С помощью интерпретатора есть возможность решать такие задачи, как арифметические действия с числовыми полями, с датами, производить необходимые расчеты в динамических таблиц и т.д. Скрипт интерпретатора является объектом приложения Synergy, который можно добавить в произвольную папку приложения. .. note:: При обновлении на версию 4.0 Synergy все скрипты интерпретатора мигрировали в `Приложение по умолчанию` в директорию `integration/interpreter_scripts` Настройки интерпретатора находятся в настройках платформы в разделе `Настройки системы`: .. figure:: _static/img/interpreter/platform_settings.png .. figure:: _static/img/interpreter/global_interpreter_settings.png Добавить скрипт интерпретатора можно, вызвав контекстное меню по папке, `Добавить` -> `Интеграция` -> `Скрипт интерпретатора`. По нажатию на пункт меню `Скрипт интерпретатора` открывается окно редактирования скрипта: .. figure:: _static/img/interpreter/new_script.png Данное окно состоит из двух вкладок `Скрипт интерпретатора`, куда вводятся метаданные скрипта, и `script.js`, куда пишется сам скрипт. Метаданные: * Название — название скрипта в формате ``event.blocking.interpreter.%название_скрипта%``; * Код — код скрипта; * Описание; * Комментарий по умолчанию; * Авторизация; * Настройки пробного запуска, параметры которые передаются скрипту интерпретатора при его запуске: * dataUUID; * documentID; * executionID. Во вкладке `script.js` прописывается сам скрипт. Скрипт может обращаться к параметрам авторизации, которые указаны в интерпретаторе, с помощью строковых переменных ``login``, ``password`` и ``key``. .. attention:: Не забудьте сохранить написанный скрипт! Запуск скрипта -------------- Написанный скрипт можно запустить непосредственно из редактора скрипта с помощью кнопки "Запустить" или нажатием клавиши ``F8``. .. figure:: _static/img/interpreter/interpreter_gui_3.png Конфигурация выполнения скрипта .. note:: Формально эти параметры не обязательны для запуска скрипта, но выполнение скрипта без них может приводить к ошибкам. Результат выполнения скрипта отображается в виде всплывающего сообщения в верхней части экрана: .. figure:: _static/img/interpreter/interpreter_gui_console_success.png Успешное завершение выполнения скрипта Если при выполнении возникли ошибки, то они также отображаются во всплывающем сообщении: .. figure:: _static/img/interpreter/interpreter_gui_console_error.png Ошибка при выполнении скрипта Авторизация ----------- Так как API ARTA Synergy работает только с авторизацией модуль интерпретатор предоставляет возможность настраивать для каждого скрипта параметры авторизации: * Логин и пароль пользователя, от имени которого должен работать скрипт; * Ключ :ref:`key_auth`. Завершение процесса ------------------- Блокирующий процесс может завершиться как успешно так и неуспешно. В обоих случаях необходимо передавать комментарий, говорящий о результате завершения процесса. Модуль предоставляет возможность в скрипте указать как должен завершиться процесс и с каким комментарием. Для этого необходимо при завершении скрипта взять из него значения переменных: * ``result`` - результат: * *true* (по умолчанию) — успешно завершено; * *false* — не успешно завершено. * ``message`` — комментарий завершения; значение по-умолчанию вводится в метаданных скрипта. Отладить скрипт возможно на стадии разработки, см. описание `Запуск скрипта`_ Примеры скриптов ---------------- .. toctree:: :maxdepth: 2 :numbered: interpreter/examples Справочник API -------------- .. toctree:: :maxdepth: 2 :numbered: interpreter/api Обработка внутренних событий в интерпретаторе ---------------- .. toctree:: :maxdepth: 2 :numbered: interpreter/events