Тестовое · облачный Битрикс24 · портал не поднимали

АвтоИмпорт

Вымышленная компания везёт дорогой товар под заказ. Сделка идёт месяцами: депозит, бронь, оплата, доставка, выдача. Ниже три стенда из задания. Это не кабинет Битрикс24 и не данные SILENKO.

Задание 1

Сделка и одна карточка заказа

Карточку ведёт другая команда. Робот создаёт её на брони и пишет id в сделку. Пока id на месте, второй карточки нет.

Карточка заказа

Пока нет. Появится один раз на стадии «Товар забронирован», если поля заполнены.

Сейчас стадия: Заявка

Задачи, по одной

  • Чат с клиентом ещё не нужен.
  • Ошибки создания карточки нет.
  • Уведомления об оплате нет.
  • Контроль срока ещё не открыт.
  • Задачи на возврат депозита нет.
СтадияРоботУсловиеПовтор или ошибка
Депозит полученЗадача менеджеру «создать чат с клиентом»Сумма депозита не пустая, такой задачи ещё нетВторую не создаёт, пока первая открыта
Товар забронированСоздать карточку заказа и записать её id в сделкуПоле «Карточка заказа» пустое, заполнены поставщик, артикул, цена и срокПовтор и возврат стадии не создают вторую. Если создание упало, id не пишется, менеджеру одна задача
ОплаченОдин раз уведомить команду заказаКарточка уже есть, дата уведомления пустаяВторое сообщение не уходит
В доставкеЗадача «контроль срока поставки»Такой задачи нет, срок берётся из карточкиОткрытую задачу не дублирует
ОтказКарточку перевести в «Отменён», финансисту задача «вернуть депозит»Депозит был, возврат ещё не отмеченКарточку не удаляет. Вторую задачу на возврат не ставит

Уведомления: одно событие, один адресат. Менеджер сделки, команда заказа только при карточке, финансист только на возврат депозита. Общий чат не используем.

Задание 2 · расчёт на 01.11.2026

Стаж двигают роботы

Ожидание стоит не «ждать N дней с запуска», а «ждать до даты». Дата считается от приёма: плюс 3, 6 и 12 календарных месяцев. Точное попадание уходит в следующую стадию. «До 3 месяцев» значит строго меньше трёх.

Поле «Дней в компании» пишет робот «Изменить элемент» формулой datediff. Для работающего это datediff от даты приёма до сегодня, для уволенного — до даты увольнения. Третий аргумент «%a»: общее число дней. «%d» сюда нельзя, это только дневная часть интервала, и на границе месяца она даёт ноль.

{{=if({Дата увольнения}="",
  datediff({Дата приёма}, {=System:Now}, "%a"),
  datediff({Дата приёма}, {Дата увольнения}, "%a"))}}

Пересчёт трижды: при создании карточки, при правке даты приёма или увольнения и раз в сутки у тех, кто ещё работает. Робот стадии сам в полночь поле не обновляет, для суток нужен отдельный запуск. Плюс одного дня в формуле нет.

А

Приём 15.09.2026

Увольнение —

Испытательный срок

47 дней

Б

Приём 01.08.2026

Увольнение —

В штате, 3–6 мес.

92 дней

В

Приём 31.07.2026

Увольнение —

В штате, 3–6 мес.

93 дней

Г

Приём 01.05.2026

Увольнение —

В штате, 6–12 мес.

184 дней

Д

Приём 01.11.2025

Увольнение —

В штате, от 12 мес.

365 дней

Е

Приём 10.01.2024

Увольнение 20.03.2025

Уволен

435 дней

Сотрудник Б · пауза уже запущена

Робот ждёт до 01.11.2026. Это дата из приёма 01.08.2026 плюс три месяца.

Если дату увольнения заполнили во время ожидания, отдельный запуск по изменению поля ставит «Уволен» и гасит паузу. Сам спящий робот поле не перечитывает.

Задание 3

Согласование платежа

Пороги, срок, согласующие и заместители — параметры. Их меняют без переписывания блоков.

  1. Проверить сумму, получателя, статью, срок и файл счёта. Пустое поле возвращает заявку инициатору, согласование не стартует.
  2. Выбрать согласующего по порогам. Если он в отпуске, задача уходит заместителю из параметра, а не зависает.
  3. Поставить задачу на один рабочий день.
  4. Срок вышел без ответа — напоминание тому же человеку.
  5. После напоминания ответа всё ещё нет — эскалация на уровень выше.
  6. Отказ только с комментарием. Заявка возвращается инициатору, круг плюс один. После правки схема начинается со шага 2: сумма могла сменить порог.
  7. Третий отказ останавливает процесс. Директору уходит одно уведомление, четвёртый круг не открывается.
  8. Согласие записывает согласованную сумму отдельно. Финансист получает задачу «Оплатить».
  9. В «Оплачено» пускают только заполненные дата и сумма оплаты. Иначе стадия не сохраняется, финансист видит, каких полей не хватает. Робот — запасной контур, если стадию сменят в обход формы.
  10. Сумму изменили после согласия, и она не равна согласованной — возврат на шаг 2. Это не круг отказа.
50 000 ₽
порог финансиста
500 000 ₽
порог руководителя
1 рабочий день
срок согласования
3 круга
потолок отказов

Согласует Руководитель финансового отдела.

Кругов отказа: 0 из 3. Смена суммы круг не тратит.

В «Оплачено»

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

Бонус · код не писали

Тридцать сделок и суммы платежей

Один crm.deal.list с фильтром стадии. Страница отдаёт 50 записей и поле next. На тридцати сделках хватает одной страницы, цикл по next всё равно нужен.

Один crm.item.list по смарт-процессу платежей, фильтр связи на список id сделок. Это не запрос на каждую сделку. Список карточек тоже листается по 50.

Суммы складываются отдельно по сделке и по валюте. Рубли с долларами не складываются: это разные единицы, нужен курс и дата курса, а валюта платежа может не совпасть с валютой сделки.

Если фильтр не примет набор id, один batch до 50 команд. Это всё ещё один HTTP-запрос.

Ответ собирал ИИ. Руками сверены граница календарных месяцев, дни шести сотрудников на 01.11.2026, формула datediff с «%a» по справке Битрикс, порог 50 000 включительно и то, что повтор брони не создаёт вторую карточку. Скринов портала и файла .bpt нет: портал не поднимали.