Справка

Таблицы

Облачный 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;
  });

Оба блока кода могут работать совместно, образуя цепочку зависимых полей.

Была ли эта статья полезной?