Сумма двух чисел внутри одной формы
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. note:: Компоненты должны быть числовыми

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID);
    form.load();
    var summa = form.getNumericValue("cmp-a") + form.getNumericValue("cmp-b");
    form.setValue("cmp-c", summa);
    form.setValue("cmp-d", summa);
    form.save();
    var result=true;
    var message = "ОК";


Запись значения(текст) в поле определенной личной карточки пользователя, указанного в форме
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. note:: Личную карточку после отработки процесса нужно обновить

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID);
    form.load();
    var card= platform.getCardsManager().getUserCard('97ec70b2-a5b1-455d-86de-28555323298d', form.getValue("userID"));
    card.load();
    card.setValue("cmp-8", 'Привет, мир!');
    card.save();
    var result = true;
    var message = "Успешно завершено";


Запись суммы двух компонентов формы в поле определенной личной карточки пользователя, указанного в форме
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID);
    form.load();
    var card= platform.getCardsManager().getUserCard('97ec70b2-a5b1-455d-86de-28555323298d', form.getValue("userID"));
    card.load();
    card.setValue("cmp-8", form.getNumericValue("cmp-a")+form.getNumericValue("cmp-b"));
    card.save();
    var result = true;
    var message = "Успешно завершено";

Разница между датой в форме и конкретным числом (количество полных дней)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID);
    form.load();

    var d1 = form.getValue("date-a");
    var year = parseInt(d1.substring(0,4));
    var month = parseInt(d1.substring(5,7).replace('0', ''))-1;
    var day = parseInt(d1.substring(8,10));
    var hh = parseInt(d1.substring(11,13));
    var mi = parseInt(d1.substring(14,16));
    var sec = parseInt(d1.substring(17));
    var date_1 = new Date(year, month, day, hh, mi, sec);

    var date_2 = Date.parse("October 4, 2014 19:28:34 GMT");
    form.setValue("cmp-2",date_2);
    var dif = (date_1.getTime()-date_2)/86400000
    form.setValue("cmp-1", dif);
    form.setValue("cmp-2",Math.floor(dif));

    form.save();
    var result=true;
    var message = "Привет, мир!";


Разница между двумя датами в личной карточке (количество полных дней)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID); form.load();
    var card= platform.getCardsManager().getUserCard('97ec70b2-a5b1-455d-86de-28555323298d', form.getValue("userID"));
    card.load();
    var d1 = card.getValue("date_a");
    var year_a = parseInt(d1.substring(0,4));
    var month_a = parseInt(d1.substring(5,7).replace('0', ''))-1;
    var day_a = parseInt(d1.substring(8,10));
    var hh_a = parseInt(d1.substring(11,13));
    var mi_a = parseInt(d1.substring(14,16));
    var sec_a = parseInt(d1.substring(17));
    var date_1 = new Date(year_a, month_a, day_a, hh_a, mi_a, sec_a);

    var d2 = card.getValue("date_b");
    var year_b = parseInt(d2.substring(0,4));
    var month_b = parseInt(d2.substring(5,7).replace('0', ''))-1;
    var day_b = parseInt(d2.substring(8,10));
    var hh_b = parseInt(d2.substring(11,13));
    var mi_b = parseInt(d2.substring(14,16));
    var sec_b = parseInt(d2.substring(17));
    var date_2 = new Date(year_b, month_b, day_b, hh_b, mi_b, sec_b);

    var dif = (date_2.getTime()-date_1.getTime())/86400000;
    form.setValue("cmp-a",Math.floor(dif));
    form.save();
    var result=true;
    var message = "Привет, мир!";


Количество строк в дин. таблице и сумма значений компонентов дин.таблицы
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID);
    form.load();
    form.setValue("cmp-c", form.getRowsCount("table"));
    var sum=0;
    for (i = 0; i < form.getRowsCount("table"); i ++) {
        sum = sum + form.getNumericValue("table", "cmp-table", i);
    }
    form.setValue("cmp-b",sum);
    form.setValue("cmp-8",sum);
    form.save();
    var result=true;
    var message = "ОК";

Успешное и неуспешное завершение процесса
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: javascript

    var form = platform.getFormsManager().getFormData (dataUUID);
    form.load();
    form.save();
    if (form.getNumericValue("sum_one") < 100000){
         result = true;
         message = "Успешно отправлено по маршруту";
    } else {
         result = false;
         message = "Заявка не выполнена. Сумма превышает стандарт" ;
    }

Использование REST API Synergy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

На данный момент итерпретатор позволяет обращаться ко всем
доступным методам REST API Synergy. Для этого нужно
прописывать запросы необходимых методов непосредственно в
скрипт.

**Пример 1.** *POST-запрос API-метода*

.. code-block:: javascript

    // Создаём объект POST-запроса
    var post = new org.apache.commons.httpclient.methods.PostMethod("http://192.168.4.6:8080/Synergy/rest/api/storage/copy");
    // Добавляем параметры согласно спецификации метода "rest/api/storage/copy"
    post.addParameter("fileID", fileReportID);
    post.addParameter("documentID", documentID);
    // Создаём HTTP-клиент и авторизационные данные
    var client = new org.apache.commons.httpclient.HttpClient();
    var creds = new org.apache.commons.httpclient.UsernamePasswordCredentials(synergyUser, synergyPass);
    // Задаём клиенту способ авторизации и передаём авторизационные данные
    client.getParams().setAuthenticationPreemptive(true);
    client.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
    // Настраиваем заголовки запроса
    post.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Выполняем метод
    var status = client.executeMethod(post);
    // Обязательно закрываем соединение
    post.releaseConnection();
    var result = true;

**Пример 2.** *GET-запрос API-метода*

.. code-block:: javascript

    // Блок аналогичен расположенному выше
    var get = new org.apache.commons.httpclient.methods.GetMethod("http://127.0.0.1:8080/Synergy/rest/api/departments/list");
    var client = new org.apache.commons.httpclient.HttpClient();
    var creds = new org.apache.commons.httpclient.UsernamePasswordCredentials(synergyUser, synergyPass);
    client.getParams().setAuthenticationPreemptive(true);
    client.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
    get.setRequestHeader("Content-type", "application/json");
    var status = client.executeMethod(get);

    // Получаем HTTP-код возврата и преобразуем его в строку
    // далее используем по своему усмотрению
    var message = "" + status;
    // Обязательно закрываем соединение
    get.releaseConnection();
    var result = true;

**Пример 3.** *GET-запрос API-метода*

.. code-block:: javascript

    // Блок аналогичен тому расположенному выше
    var get = new org.apache.commons.httpclient.methods.GetMethod("http://127.0.0.1:8080/Synergy/rest/api/departments/list");
    var client = new org.apache.commons.httpclient.HttpClient();
    var creds = new org.apache.commons.httpclient.UsernamePasswordCredentials("ivanov", "1");
    client.getParams().setAuthenticationPreemptive(true);
    client.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
    get.setRequestHeader("Content-type", "application/json");
    var status = client.executeMethod(get);

    // Возвращает тело запроса HTTP, если такое есть, как String
    var responseBody = get.getResponseBodyAsString();
    var json = eval("(" + responseBody + ")");

    var message = "" + status + " " + json[0].departmentID;

    get.releaseConnection();

    var result = true;
    //
    var responseBody = get.getResponseBodyAsString();
    var json = eval("(" + responseBody + ")");
    var message = "" + status + " " + json[0].documentID;
