Skip to main content
Version: 52.0.0

Спеціальні типи форм

Документи​

Стани та заголовки​

Перевірка стану документа​

При зміні атрибута text001 перевіряємо поточний стан документа. Якщо стан draft (Чернетка) записуємо значення атрибута text002.

module.exports = {
document_attributeChanged_text001(eventa) {
if (event.document.state === 'draft') {
eventa.document.setAttribute('text002', eventa.value) // draft - код стану документа
}
}
}

Таб документа: Встановлення значення з текстового атрибута​

module.exports = {
formTitle(event) {
return `Документ/${event.document.getAttribute('ms01')}` // ms01 - текстовий атрибут
}
}

Таб документа: При редагуванні атрибута "Короткий опис"​

module.exports = {
formTitle(event) {
if (event.document.getNativeAttribute('subject') != null) { // якщо заповнений атрибут "Короткий опис" відображається кастомний таб документа
return `2022/${event.document.getAttribute('ms01')}`
}
}
}

Ролі та учасники документа​

Перевірка ролі користувача​

При натисканні на кнопку виводимо повідомлення, якщо поточний користувач документа має роль Автор.

const { showErrorWindow } = require('@unitybase/ub-pub')

module.exports = {
form_3_click(event) {
if (event.document.userHasRole('author')) { // author - код ролі автор
showErrorWindow('Це автор документа')
}
}
}

Кількість учасників ролі​

Перед збереженням документа виводимо повідомлення з кількістю учасників ролі "Відповідальний виконавець". Функція getParticipants повертає дані у вигляді масиву {ID: 3000012, unitType: 'ORG', code: '0123123', name: 'organization1', isFixed: true}

const { showErrorWindow } = require('@unitybase/ub-pub')

module.exports = {
beforeSave(event) {
const participantsOfResponsibleRole =
event.document.getParticipants('responsible') // responsible - код ролі "Відповідальний виконавець"
showErrorWindow('Кількість учасників ролі:' + participantsOfResponsibleRole.length)
}
}

Поточні ролі користувача​

При відкритті документа записати в атрибут text001 поточні ролі користувача.

module.exports = {
loaded(event) {
const userRoles = event.document.getCurrentUserRoles() // функція яка повертає поточні ролі у вигляді масиву ['author', 'manager']
event.document.setAttribute('text001', userRoles)
}
}

Видалення учасника ролі по ID при натисканні кнопки​

module.exports = {
form_14_click(event) {
event.document.removeParticipant('lawyer', 3000002212453) // lawyer - код ролі документа, 3000002212453 - ID організаційної одиниці
}
}

Встановлення учасника ролі типу "Суб'єкти адміністрування"​

Встановлення учасника ролі типу "Суб'єкти адміністрування" (користувача) по ID при натисканні кнопки

module.exports = {
form_14_click(event) {
event.document.addParticipant('lawyer', 3000002212453, 'admSubj') // lawyer - код ролі документа, 3000002212453 - ID користувача
}
}

Індикатори документа/завдання​

Індикатор з статичним текстом і заданими налаштуваннями​

module.exports = {
createIndicators(event) {
const text = 'Терміново' // установка тексту індикатора
const visible = true // статус індикатора включений
return [{
text,
visible,
type: 'danger',
size: 'medium',
style: 'dark'
}]
// можливі параметри опцій type - success, info, warning, danger, none - optional, default none ;
// size - medium, small, mini - optional, default small ;
// style - dark, light, plain - optional, default light
}
}

Індикатор по значенню текстового атрибута​

Індикатор активується по перемикачу (атрибут типу Логічний).

module.exports = {
createIndicators(event) {
const text = event.document.getAttribute('ms01') // установка тексту зі значення атрибута ms01 типу "Текст"
const visible = event.document.getAttribute('ms15') // установка статусу індикатора по значенню перемикача - атрибут ms15 типу "Логічний"
return [{text, visible, type: 'danger', size: 'medium', style: 'dark'}]
}
}

Індикатор по значенню числового атрибута​

Індикатор активується по перемикачу (атрибут типу Логічний). Тип індикатору змінюється при завантаженні файла в атрибут Образ документа.

module.exports = {
createIndicators(event) {
const text = String(event.document.getAttribute('ms05')) // установка значення з атрибута ms05 типу "Число", конвертуємо значення в String
const visible = event.document.getAttribute('ms15') // установка статусу індикатора по значенню перемикача - атрибут ms15 типу "Логічний"
const aaa = event.document.getNativeFileAttribute()
const type = event.document.getNativeFileAttribute()?.fileInfo?.fileName
? 'success'
: 'danger'
return [{text, visible, type, size: 'medium', style: 'dark'}]
}
}

Завдання​

Особливості скрипта для завдань BPMN​

При виконанні дій з нативними атрибутами завдання, замість об'єкта document використовується об'єкт task.

module.exports = {
loaded(event) {
console.log('Значення опису завдання:', event.task.getNativeAttribute('comment'))
}
}

Таб завдання​

Використовується та ж сама конструкція, що і для документа. У випадку, якщо в скрипті нічого не задавати, заголовок завдання за замовчуванням "Завдання".

module.exports = {
formTitle(event) {
return `Завдання/${event.task.getNativeAttribute('subject')}`
}
}

Контроль значення в текстовому полі для Завдання​

Використано нативний атрибут Завдання: description.

module.exports = {
task_validateNativeAttribute_description(event) {
if (event.value == 'Не погоджено') {
return 'Неможливо зберегти завдання якщо воно не погоджене'
}
}
}

Заповнення нативного атрибута "Коментар" кнопкою на формі завдання​

module.exports = {
form_22_click(event) { // 22 - id атрибута Кнопка
event.task.setNativeAttribute('comment', 'Взято в роботу ' +
event.task.getNativeAttribute('assigneeID'))
}
}

Користувацькі довідники​

Події довідників​

Виведення в консоль значень атрибутів користувацького довідника​

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

module.exports = {
loaded(event) {
console.log(
'Значення кастомного атрибута Текст02:', event.dictionaryItem.getAttribute('Attrtext02'),
'Значення нативного атрибута Опис:', event.dictionaryItem.getNativeAttribute('description')
)
}
}

Перезаписує значення їх одного атрибута в інший атрибут​

Спрацьовує під час редагування вихідного атрибута на формі редагування запису Користувацького довідника.

Для кастомних атрибутів

module.exports = {
dictionaryItem_attributeChanged_Attrtext01(event) {
event.dictionaryItem.setAttribute('Attrtext02', event.value)
}
}

Для нативних атрибутів

module.exports = {
dictionaryItem_nativeAttributeChanged_name(event) {
event.dictionaryItem.setNativeAttribute('description', event.value)
}
}

Управління видимістю кнопки видалення​

Обробник instance_canDelete керує видимістю кнопки Видалити, підтримує параметри:

  • canDelete (boolean) - enable or disable 'delete button'
  • hideButton (boolean) - hide delete button from toolbar
  • reason (string) - tooltip for disabled button with reason to not delete this entry

Приховуємо кнопку видалити в елементів користувацького довідника, якщо текстовий атрибут не порожній. Скрипт необхідно додавати на формі користувацького довідника.

module.exports = {
instance_canDelete(event) {
if (event.dictionaryItem.getAttribute('ms01') != null) { // ms01 - код текстового атрибута на формі користувацького довідника
return {canDelete: false, hideButton: true} // ховаємо кнопку "Видалити", якщо атрибут ms01 не порожній
}
return {canDelete: true, hideButton: false} // кнопка доступна за замовчуванням
}
}