Когда руководитель утверждает командировку, ему важно знать, как долго сотрудника не будет в офисе, а бухгалтеру надо рассчитать командировочные. Удобно, если в заявке есть не только даты командировки, но и её продолжительность:
Чтобы ваша форма с заявкой на командировку умела так же, добавьте в неё числовое поле Продолжительность. Теперь нужно настроить его автоматическое вычисление. Для этого в настройках формы нажмите Редактировать скрипты и скопируйте туда следующий текст. Если поля в вашей форме называются по-другому, замените эти названия прямо в скрипте.
form.onChange(['Дата начала', 'Дата окончания'])
.setValue('Продолжительность', state => {
const [start, end] = state.changes;
if (!start.date || !end.date)
return null;
return daysBetween(
new Date(start.date),
new Date(end.date)
) + 1;
});
function daysBetween(d1, d2) {
const msInDay = 1000 * 60 * 60 * 24;
return Math.floor((d2.getTime() - d1.getTime()) / msInDay);
}
Скрипты — это небольшие программы на языке Javascript, расширяющие возможности форм Pyrus. Подробнее о них вы можете прочитать в справке.
Этот же приём сработает в любой форме, где нужно рассчитать длительность события. Например, в форме запроса отпуска.
Подсказка: командировочный аванс можно рассчитать в этой же форме. Здесь скрипт не нужен: автоматическое вычисление можно настроить в редакторе шаблона.