Skip to main content
Version: 53.0.0

Основні події форм

Життєвий цикл форм​

Події ініціалізації​

Існує дві події:

  • loaded — можна викликати оновленням документа
  • inited — виконується тільки один раз при першому відкритті документа

Виведення кастомних атрибутів в console.log.​

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

module.exports = {
loaded(event) {
console.log(
'Значення першого атрибута:', event.document.getAttribute('text001'),
'Значення другого атрибута:', event.document.getAttribute('text002')
)
}
}

Виведення Нативних атрибутів в console.log.​

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

module.exports = {
loaded(event) {
console.log(
'Значення атрибутів:',
event.document.getNativeAttribute('docNumber'),
event.document.getNativeAttribute('regNumber'),
event.document.getNativeAttribute('regDate'),
event.document.getNativeAttribute('subject'),
event.document.getNativeAttribute('authorID')
)
}
}

Вставка фіксованого значення в атрибут.​

module.exports = {
loaded(event) {
console.log('Inside "loaded" event handler')
event.document.setAttribute('text001', 'Значення атрибута')
}
}

Вставка значення атрибута із іншого атрибута.​

Копіювання атрибута text001 в text002 при відкритті форми документа.

module.exports = {
loaded(event) {
console.log('Inside "loaded" event handler')
event.document.setAttribute('text002',
event.document.getAttribute('text001'))
}
}

Вставка фіксованого значення в атрибут типу "Довідник" (валюти).​

module.exports = {
loaded(event) {
console.log('Inside "loaded" event handler')
event.document.setAttribute('currency', 3000000001781)
}
}

Вставка фіксованого значення в атрибут типу "Довідник з множинним вибором" (валюти).​

module.exports = {
loaded(event) {
console.log('Inside "loaded" event handler')
event.document.setAttribute('test_multidict_1', [
3000000001781,
3000000001748
])
}
}

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

Event: inited

module.exports = {
inited(event) {
console.log(
'Ім\'я:', event.document.getAttribute('name'),
'Прізвище:', event.document.getAttribute('surname')
)
}
}

Події завершення​

Відображення в консолі номер документа після його закриття​

Подія form_<nodeId>_destroyed

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

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

module.exports = {
form_1_destroyed(event) { // 1 - ID елемента "Вкладки" на формі документа
console.log('Закрито документ' + ' ' +
event.document.getNativeAttribute('docNumber'))
}
}

Збереження форм​

Збереження форми event.form.save(), закриття форми closed(event)

В події closed(event) немає можливості виконувати операції над атрибутами форми, т.к. вона виконується коли форма вже закрита - відразу після закриття.

Збереження при натисканні на кнопку​

module.exports = {
form_5_click(event) { // скрипт виконується при натисканні на кнопку на формі документа. 5 - ID кнопки
event.form.save()
}
}

Автозбереження кожні 5 хвилин​

let intervalId

module.exports = {
inited(event) {
intervalId = setInterval(() => { // запускаємо таймер при завантаженні форми
event.form.save()
}, 5 * 60 * 1000) // тривалість 5 хвилин
},
closed(event) {
clearInterval(intervalId) // відключаємо таймер при закритті форми
}
}

Події редагування атрибутів​

Кастомні атрибути​

Копіювання одного атрибута в інший​

Event: attributeChanged_<attr_code>. Копіювання одного атрибута в інший, вихідний атрибут - Кастомний. Копіювання атрибута text001 в text002 при редагуванні атрибута text001.

module.exports = {
document_attributeChanged_text001(event) {
event.document.setAttribute('text002', event.value)
}
}

Копіювання декількох атрибутів в третій атрибут — 1 спосіб​

Event: attributeChanged (без вказання конкретного атрибута). Копіювання декількох атрибутів в третій атрибут, вихідні атрибути Кастомні

module.exports = {
document_attributeChanged(event) {
if (event.attributeCode === 'text001' || event.attributeCode === 'text002') {
event.document.setAttribute('text003',
event.document.getAttribute('text001') + ' ' +
event.document.getAttribute('text002'))
}
}
}

Копіювання декількох атрибутів в третій атрибут — 2 спосіб​

Event: attributeChanged_<attr_code>. Обігравання попереднього прикладу за допомогою окремих івентів: копіювання кількох атрибутів у третій атрибут.

module.exports = {
document_attributeChanged_text001(eventa) {
eventa.document.setAttribute('text003', eventa.value + ' ' +
eventa.document.getAttribute('text002'))
},
document_attributeChanged_text002(eventb) {
eventb.document.setAttribute('text003', eventb.document.getAttribute('text001') + ' ' +
eventb.value)
}
}

Копіювання декількох атрибутів в третій атрибут — 3 спосіб​

Event: attributeChanged_<attr_code> (oldValue). Приклад подібний до попереднього, але використано oldValue (попереднє значення атрибута).

module.exports = {
document_attributeChanged_text001(eventa) {
eventa.document.setAttribute('text003', eventa.oldValue + ' ' +
eventa.document.getAttribute('text002'))
},
document_attributeChanged_text002(eventb) {
eventb.document.setAttribute('text003', eventb.document.getAttribute('text001') + ' ' +
eventb.oldValue)
}
}

Нативні атрибути​

Копіювання одного атрибута в інший — 1 спосіб​

Event: nativeAttributeChanged_<attr_code>. Копіювання одного атрибута в інший, вихідний атрибут – Нативний.

module.exports = {
document_nativeAttributeChanged_subject(event) {
event.document.setAttribute('text001', event.value)
}
}

Копіювання одного атрибута в інший — 2 спосіб​

Event: nativeAttributeChanged.

module.exports = {
document_nativeAttributeChanged(event) {
if (event.attributeCode === 'subject') {
event.document.setAttribute('text003', event.document.getNativeAttribute('subject') +
' ' + event.document.getNativeAttribute('stateID'))
}
}
}

Файлові атрибути​

AttributeChanged для файлового атрибута документа.​

При додаванні файла його назва вставляється в текстовий атрибут. Використані ? щоб відпрацювати null.

module.exports = {
document_attributeChanged_Attrfile19(event) {
const aaa = event.document.getFileAttribute('Attrfile19')
const bbb = aaa?.fileInfo?.fileName
event.document.setAttribute('Attrtext03', bbb)
}
}

AttributeChanged для образа документа.​

При додаванні файла в образ його назва вставляється в текстовий атрибут. Використані ? щоб відпрацювати null.

module.exports = {
document_nativeAttributeChanged_docImage(event) {
const aaa = event.document.getNativeFileAttribute()
const bbb = aaa?.fileInfo?.fileName
event.document.setAttribute('Attrtext03', bbb)
}
}

AttributeChanged для файлового атрибута таблиці.​

При додаванні файла в таблицю його назва вставляється в текстовий атрибут таблиці. Використані ? щоб відпрацювати null.

module.exports = {
documentItem_attributeChanged_Attrfile22_20Mb(event) {
const aaa = event.documentItem.getFileAttribute('Attrfile22_20Mb')
const bbb = aaa?.fileInfo?.fileName
event.documentItem.setAttribute('Attrtext01', bbb)
}
}

Комбіновані події​

Використання декількох подій в одному скрипті​

Дві різних події в одному скрипті. Перша записує text001 в text002 при редагуванні, друга записує text002 в text003 при відкритті форми документа, події через кому.

module.exports = {
document_attributeChanged_text001(eventa) {
eventa.document.setAttribute('text002', eventa.value)
},
loaded(eventb) {
eventb.document.setAttribute('text003',
eventb.document.getAttribute('text002'))
}
}