Таблицы
Облачный Pyrus
Безоблачный Pyrus
Для форм с таблицами скрипты позволяют:
- вычислять значения полей таблицы по соседним полям строки;
- ссылаться на сумму колонки таблицы при вычислении обычных полей. В отличие от формул в таблицах, скрипты позволяют описывать условия и поддерживают не только числовые поля.
Вычисляемое поле таблицы
Есть форма с таблицей товаров, в которой для каждого товара содержится «Название», «Цена», «Количество», «Сумма» и «Ставка НДС» (поле мультивыбор со значениями «0%», «10%» и «18%»): Поле «Сумма» можно заполнять автоматически с помощью следующего кода:
form.onChange(['Цена', 'Количество', 'Ставка НДС']) .setValue('Сумма', state => { const [price, quantity, ndsRate] = state.changes; if (!price || !price.value || !quantity || !quantity.value || !ndsRate) return 0; let cost = price.value * quantity.value; const nds = ndsRate.choice_name ? parseInt(ndsRate.choice_name) : 0; if (ndsRate.choice_name) cost += cost * (nds / 100); return cost; });
Сумма колонки таблицы
Добавим в форму с таблицей товаров два поля после таблицы: «Процент скидки» и «Итого». Следующий код позволит заполнить поле «Итого» по товарам из таблицы с учетом скидки:
form.onChange(['Сумма', 'Процент скидки']) .setValue('Итого', state => { const [cost, discount] = state.changes; if (!cost || !discount) return null; const total = cost.sum * (1 - discount.value / 100); return total; });
Оба блока кода могут работать совместно, образуя цепочку зависимых полей.