Скрипти користувача ISpro WEB

У поля документа та модуля, додана можливість прописувати користувацькі скрипти на події елементів керування.

Мова написання скриптів: JavaScript.

У налаштуванні події існує блок Скрипт користувача, в якому можна ввести будь-який довільний скрипт, який буде виконаний за даною подією.

У цьому розділі є два блоки До та Після.

Блок До:

Виконується до самої події, тобто якщо в комбо є подія отримання значення для комбо і ви прописали скрипт в блок до, то він виконається до виклику методу сервера.

Блок Після:

Скрипт виконається після виконання події для отримання даних для комбо.

У скрипті на даний момент доступно 3 локальні зміни, які можна використовувати:

isproControls – Словник елементів керування, які є на формі.

isproModule - Об'єкт модуля, де описані параметри модуля, в тому числі елементи керування та модель (у випадку документа, у моделі немає моделі)

isproToast – об'єкт/сервіс, за допомогою якого можна вивести повідомлення користувачу.

Для приклада роботи скриптів можна подивитися 2 документи, один з них це в системі Документообіг та управління процесами в модулі Документи, шаблон документа «Вхідні листи»

У налаштування шаблону додано подію ініціалізації документу, в якому проставляємо, наприклад, базові значення полів.

Для роботи зі скриптами потрібно мати хоча б базове розуміння роботи такої мови, як JavaScript.

А саме оператори розгалуження, типи даних та їх поведінка залежно від контексту.

Масиви та методи роботи з ними.

Приклад №1. Заповнення поля

Складність: Просто

Відкрити налаштування шаблону:

Переходимо на вкладку Події та обираємо подію InitModule:

У події з'являється новий блок Скрипт користувача:

При розкритті відображається редактор ДО і ПІСЛЯ, їх поведінка описана вище. У першому блоці написано простий скрипт, який при ініціалізації проставляє значення за деякими полями документа (Вхідний лист).

Текст скрипту:

isproControls.nmr = isproControls.nmr.value + 'Скрипт!';

isproControls.ssdoc = 'Це поле заповнене скриптом автоматично під час ініціалізації документа';

isproControls.na = '№555666777';

isproToast.showMessage('Скрипт', `Поля: ${isproControls.na.caption}, ${isproControls.ssdoc.caption}, ${isproControls.nmr.caption} заповнені автоматично скриптом`,1);

Спочатку потрібно зрозуміти яким чином набувати значення і надавати його.

isproControls в ньому знаходяться всі поля вікна, для отримання значення якого необхідно спочатку

визначити, яке поле цікавить.

Всі поля в даному об'єкті знаходяться під своїми id і ,наприклад, для отримання значення поля номер потрібно звернутися так : isproControls.nmr.value

Для надання значення достатньо звернеться isproControls.nmr = будь-яке значення.

У даному скрипті на 5 рядку, проводиться звернення до поля форми isproControls.nmr(Поле номер документа) і надається йому значення себе ж (isproControls.nmr.value) + текст «Скрипт!».

На шостому рядку присвоюємо значення поля Коментар - довільний текст.

На сьомому рядку аналогічно надають значення полю На № - довільний номер.

На восьмому рядку за допомогою об'єкта isproToast та його методу showMessage() виводиться користувачеві повідомлення, де першим параметром методу передається заголовок повідомлення, другим параметром текст повідомлення, останнім параметром тип повідомлення

Інформаційне повідомлення – 0,

Успішне повідомлення (зелена галочка) – 1,

Помилка – 2

Попередження – 3,

Приклад №2. Виконання умов.

Складність: Легко

Приклад із операторами розгалуження.

Модуль: Рахунки до оплати

Документ: Рахунки до оплати

Ця подія розташована аналогічно першому прикладу.

Текст скрипту:

if(isproControls.SumField.value != 0) {

isproToast.showMessage('Скрипт', `Поле: ${isproControls.SumField.caption} більше 0! `, 1);

}

У цьому скрипті перевіряємо суму по полю, якщо вона не дорівнює 0, то в даному випадку буде виведено повідомлення інакше нічого не відбудеться.

Приклад №3. Складові значення полів

Складність: Середня

Модуль: Документообіг та управління процесами/ Документи

Шаблон: Користувача Вхідний лист(номер шаблону 4 код 1)

У цьому прикладі скрипт доданий у вибір Від кого на подію зміни значення комбо:

Відкриваємо параметри поля Від кого.

Відкриваємо вкладку Події. Цікавить подія зміни значення.

Також відкриваємо налаштування події і дивимося в розділ Скрипт користувача:

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

Префікс формуватимемо за першими літерами ПІБ.

Приклад цього скрипту:

Текст скрипту:

let recipient = isproModule.model.ot.name;

if(isproControls.nmr.value == null || isproControls.nmr.value == '') {

isproControls.nmr = recipient.split(" ").map(s => s[0]).join("") + '-' + '';

isproToast.showMessage('Скрипт користувача 1', 'Скрипт відпрацював, перший блок', 1);

}else if (isproControls.nmr.value.includes('-')){

isproControls.nmr = isproControls.nmr.value.split('-')[1];

isproControls.nmr = recipient.split(" ").map(s => s[0]).join("") + '-' + isproControls.nmr.value;

console.log(isproControls);

isproControls.dat.isEnabled = 'false';

isproToast.showMessage('Скрипт користувача 2', 'Скрипт відпрацював, другий блок', 2);

}else{

isproControls.nmr = recipient.split(" ").map(s => s[0]).join("") + '-' + isproControls.nmr.value;

isproToast.showMessage('Скрипт користувача 3', 'Скрипт відпрацював, третій блок', 0);

}

Для його розуміння потрібно знати, як мінімум, методи роботи з масивами в мові JavaScript.

Приклад №4. Блокування полів

Складність: Середня

Модуль: Документообіг та управління процесами/Документи

Шаблон: Користувальницький Вхідний лист системний шаблон.

Поле На №, якщо значення даного поля буде більше 100, то поле номер буде заблоковано і якщо поле буде менше 100, то поле буде доступне для редагування.

Текст скрипта:

if(isproControls.na.value > 100) {

isproControls.nmr.isEnabled = 'false';

isproModule.updateState();

}else {

isproControls.nmr.isEnabled = 'true';

isproModule.updateState();

}