Рассчитать стоимость неполного периода услуги
Робот «Рассчитать стоимость неполного периода услуги» вычисляет часть переданного тарифа по фактическим календарным дням и явно выбранным границам периода.

Видимая часть формы настройки в Битрикс24. Скриншот показывает поля действия; он не подтверждает выполнение учебного примера.
Для кого и какую задачу решает
Администратору расчётов услуг и менеджеру, который согласует стоимость фактических дней внутри полного оплачиваемого периода.
Фраза «за половину месяца» неоднозначна: важны даты, включение последнего дня и округление денег. Робот делает эти правила явными и возвращает учтённые дни вместе с суммой. Банковские соглашения вроде 30/360 автоматически не предполагаются.
Параметры и подготовка
| Поле | Как заполнить |
|---|---|
Единая валюта, код из трех латинских букв (CURRENCY) |
Обязательное поле |
Число дробных знаков: 0–6 (SCALE) |
Обязательное поле |
Тариф полного периода (FULL_AMOUNT) |
Обязательное поле |
Начало полного периода (PERIOD_START) |
Обязательное поле |
Конец полного периода (PERIOD_END) |
Обязательное поле |
Начало фактического периода (ACTIVE_START) |
Обязательное поле |
Конец фактического периода (ACTIVE_END) |
Обязательное поле |
База дней (DAY_BASIS) |
Обязательное поле. Фактические календарные дни (actual) |
Границы периода (BOUNDARY) |
Обязательное поле. Конец не включен [start,end) (half_open); Обе даты включены (inclusive_dates) |
Выход за полный период (OUTSIDE_POLICY) |
Обязательное поле. Отклонить (reject); Взять пересечение (clip) |
Округление (ROUNDING) |
Обязательное поле. Только точная сумма (exact); Ближайшее, половина вверх (half_up); Вниз (down); Вверх (up) |
Перед настройкой выберите, откуда процесс получит каждое значение: постоянная настройка, поле карточки или результат предыдущего шага. Подписи в таблице соответствуют полям робота. Коды в скобках помогают различать похожие параметры при передаче данных между шагами.
Как использовать
- Укажите тариф полного периода, валюту и SCALE. Заполните даты полного и фактического периодов строго YYYY-MM-DD, без времени.
- Выберите DAY_BASIS=actual. Для BOUNDARY задайте half_open, если конец не включён, либо inclusive_dates для включения обеих дат.
- Явно выберите OUTSIDE_POLICY: reject отклоняет выход за полный период, clip берёт пересечение. Затем выберите правило округления суммы.
- Проверьте статус, fullDays, billedDays и clipped. Передайте расчёт в согласование; для изменения счёта потребуется отдельное действие.
Учебный пример и ожидаемый результат
FULL_AMOUNT=300.00 RUB, SCALE=2, полный период 2026-10-01 → 2026-10-31, фактический 2026-10-01 → 2026-10-16. При DAY_BASIS=actual, BOUNDARY=half_open, OUTSIDE_POLICY=reject, ROUNDING=exact полный период содержит 30 дней, фактический 15. Ожидаются amount=150.00 и ratio=15/30. При включении обеих дат число дней изменится.
Пример показывает подготовленные учебные данные. Фактический результат зависит от переданных значений и доступных данных вашего процесса.
Что возвращает и как продолжить процесс
- «Сумма неполного периода» (
amount). - «Дней полного периода» (
fullDays). - «Учтено фактических дней» (
billedDays). - «Отношение учтенных дней к полным» (
ratio). - «Фактический период ограничен» (
clipped). - «Начало пересечения» (
effectiveStart). - «Конец пересечения» (
effectiveEnd). - «Валюта» (
currency). - «Дробных знаков» (
scale).
Эффективные начало и конец показывают учтённое пересечение, а ratio хранит отношение дней дробью. Пустое пересечение даёт нулевую сумму и пустые эффективные даты. clipped помогает увидеть, что исходный фактический период выходил за границы полного.
Выход «Статус выполнения» проверяйте перед передачей результата дальше. При отрицательном статусе прочитайте «Пояснение ошибки» и направьте процесс на исправление исходных данных. Успешный статус подтверждает выполнение действия; содержательные признаки результата проверяйте отдельно.
Ограничения и разбор ошибок
Все даты строго YYYY-MM-DD, без времени. DAY_BASIS=actual выбирается явно; 30/360 и банковские соглашения не выводятся. BOUNDARY=half_open считает [начало,конец), inclusive_dates включает обе даты. Полный период должен иметь положительное число дней; фактический может быть пустым в half_open. OUTSIDE_POLICY=reject запрещает выход за полный период, clip берет пересечение. Сумма = FULL_AMOUNT × фактические дни / полные дни. ROUNDING выбирается явно: exact/half_up/down/up. Возвращает расчет и число дней, не изменяет счета/CRM. Пустое пересечение или нулевой тариф дают валидный ноль. Валюта и SCALE от 0 до 6 обязательны; тариф неотрицательный, меньше 10^24, до 36 значащих и 18 дробных цифр и точно соответствует SCALE. Налоговые правила не вычисляются.
Робот не определяет условия договора и не рассчитывает налоги. Положительный полный период обязателен. Если exact не позволяет выразить сумму при выбранном SCALE, действие завершится с ошибкой; выберите согласованное правило округления явно.