JavaScript интерпретатор
========================

Введение
--------

**JavaScript интерпретатор** (далее просто «интерпретатор») -
внешний модуль, предоставляющий возможность написать server-side
скрипт на JavaScript с использованием объектов платформы. На
данный момент использовать интерпретатор можно для обработки в
блокирующем процессе. Поддерживаемые объекты: формы, личные
карточки. С помощью интерпретатора есть возможность решать такие
задачи, как арифметические действия с числовыми полями, с датами,
производить необходимые расчеты в динамических таблиц и т.д.

Интерфейс модуля
----------------

При переходе к модулю «Интерпретатор» открывается следующее
окно:

.. figure:: _static/img/interpreter/interpreter_gui_1.png

В данном окне отображается список скриптов, которые можно
редактировать и удалять, нажав соответствующую кнопку. Чтобы
вставить новый скрипт, необходимо нажать кнопку «Добавить».
Открывается окно:

.. figure:: _static/img/interpreter/interpreter_gui_2.png

Данное окно делится на две области: метаданные и код.

Метаданные:

*   Название — название скрипта в формате
    ``event.blocking.interpreter.%название_скрипта%``;
*   Описание;
*   Комментарий по умолчанию;
*   Авторизация.

В окне кода прописывается сам скрипт.

Скрипт может обращаться к параметрам авторизации, которые
указаны в интерпретаторе, с помощью строковых переменных
``login``, ``password`` и ``key``.

.. attention:: Не забудьте сохранить написанный скрипт!

Запуск скрипта
--------------

Написанный скрипт можно запустить непосредственно из интерпретатора
с помощью кнопки "Запустить" или нажатием клавиш ``Ctrl+S``.
При первом запуске скрипта открывается окно "Конфигурация выполнения
скрипта", где можно ввести значения параметров ``dataUUID``,
``documentID`` и ``executionID`` - эти параметры передаются
скрипту интерпретатора при его запуске в `блокирующем процессе`_ Synergy:

.. figure:: _static/img/interpreter/interpreter_gui_3.png

    Конфигурация выполнения скрипта

.. note:: Формально эти параметры не обязательны для запуска скрипта,
          но выполнение скрипта без них может приводить к ошибкам.

Если флаг "Открывать конфиг при запуске" установлен, то это
окно будет отображаться при каждом запуске скрипта, иначе -
по нажатию на кнопку |interpreter_gui_config| .

    .. |interpreter_gui_config| image:: _static/img/interpreter/interpreter_gui_config.png

Результат выполнения скрипта отображается в виде всплывающего
сообщения в нижней правой части экрана:

.. figure:: _static/img/interpreter/interpreter_gui_console_success.png

    Успешное завершение выполнения скрипта

Если при выполнении возникли ошибки, то они также отображаются
во всплывающем сообщении:

.. figure:: _static/img/interpreter/interpreter_gui_console_error.png

    Ошибка при выполнении скрипта

Авторизация
-----------

Так как API ARTA Synergy работает только с авторизацией
модуль интерпретатор предоставляет возможность
настраивать для каждого скрипта параметры авторизации:

*   Логин и пароль пользователя, от имени которого должен
    работать скрипт;
*   `Ключ`_ (для авторизации по ключам).

Завершение процесса
-------------------

Блокирующий процесс может завершиться как успешно так и
неуспешно. В обоих случаях необходимо передавать комментарий,
говорящий о результате завершения процесса.

Модуль предоставляет возможность в скрипте указать
как должен завершиться процесс и с каким комментарием. Для
этого необходимо при завершении скрипта взять из него
значения переменных:

*   ``result`` - результат:

    *   *true* (по умолчанию) — успешно завершено;
    *   *false* — не успешно завершено.

*   ``message`` — комментарий завершения; значение по-умолчанию
    вводится в метаданных скрипта.

Примеры скриптов
----------------

.. toctree::
  :maxdepth: 2
  :numbered:

  interpreter/examples

Справочник API
--------------

.. toctree::
  :maxdepth: 2
  :numbered:

  interpreter/api
