Мхитар Манасян › bestmdidi Паспорт верифицирован
Сайты, Telegram-боты и Mini Apps - Next.js, Nest.js, Node.js
Рейтинг
80 753
№ 5 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
9 /10
Город
Москва
Опыт работы
6 лет
На сайте с
2022 года
Юридический статус
Самозанятый
Эксперт
Национальной Гильдии Фрилансеров
Freelance.Boutique
Премиум-сервис для лучших исполнителей
Безопасная сделка
Деньги списываются после приёмки

Битрикс24: две воронки продаж и смарт-процесс лаборатории. Два маршрута, обратная связь клиента с историей, PHP в бизнес-процессах, обработчики событий, запреты на этапах

Используемые навыки API Bitrix24 CRM CRM PHP Бизнес инжиниринг

Описание

Заказчик - производственная компания: выпускает пигменты и лакокрасочные материалы (название по договорённости не публикуется). У компании два потока продаж и собственная лаборатория. Когда клиент заказывает новый продукт или типовой образец, заявка должна уходить в лабораторию, а после согласования с клиентом возвращаться в продажи.

До проекта всё это переносили руками: менеджер дублировал данные в лабораторию, лаборатория сообщала результат в чате, часть заявок терялась, сроки никто не контролировал.

Работа шла в два этапа на боевом портале. Первый этап: связать в CRM Битрикс24 две воронки продаж со смарт-процессом «Лаборатория», чтобы заявка шла по цепочке продажи => лаборатория => продажи автоматически, без ручного переноса и потерь.

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

Ограничения: сотрудники работают в портале днём, поэтому заметные им правки делались по вечерам и по согласованию. Тип продукта в сделках синхронизируется с 1С, коды его значений менять нельзя. Действующие автоматизации заказчика нужно было сохранить.

Решение

Работал на боевом портале (Битрикс24, коробочная версия), в два этапа.

Этап 1, связка воронок с лабораторией:
- Карточка в смарт-процессе «Лаборатория» создаётся сама, когда сделка переходит на стадию проработки. Типовые продукты идут мимо лаборатории.
- Клиента и поля заказа в карточку переносит PHP-блок в бизнес-процессе: штатная привязка элементов этого не делает.
- Защита от дублей: повторный заход сделки на стадию возвращает существующую карточку, а не создаёт вторую.
- Обратный перевод сделки из лаборатории в продажи. Смарт-процесс штатно не может двигать сделку, а исходящие вебхуки сервер портала не выпускал, поэтому сделку переводит PHP-блок.
- Блокировка сделки на время работы лаборатории правами роли, уведомления руководителям, обязательная «Сумма». Всё в двух воронках с разными кодами стадий.

Этап 2, два маршрута и обратная связь:
- Третий тип продукта «Типовой образец». Поле общее с 1С, поэтому значение заведено с кодом из 1С, а переименование сделано в классической форме поля: новая форма пересоздаёт коды, и обмен перестал бы узнавать тип.
- Два маршрута в одной воронке лаборатории. Новый продукт: сбор требований => разработка => расчёт себестоимости => тестирование => согласование с клиентом. Типовой образец: сбор требований => подготовка образца => тестирование => согласование.
- Карточка идёт сама: пять триггеров по завершению задачи и отметке экономиста. Триггер по статусу задачи штатно срабатывает на любую задачу карточки, даже прошлого круга, поэтому у триггеров условие на этап и тип, а старые задачи закрываются сами.
- Защита чужих этапов. Права ролей задаются на этап целиком, по типу карточки этап не закрыть. На этапах первым стоит PHP-блок: карточку чужого типа он тихо возвращает на прежний этап, без запуска роботов, и пишет тому, кто её перевёл.
- Окно результата: при переводе на согласование Битрикс требует результат тестирования и комментарий. Обязательность полей-списков выставлена скриптом, иначе окно настройки пересохраняет коды значений.
- Возврат на доработку: PHP-блок дописывает в «Историю обратной связи» дату, результат и комментарий, очищает поля и закрывает задачи прошлого круга.
- Сделка уходит на «Внутренний акцепт», только когда карточку завершают с принятым результатом. При переводе кодом роботы этапа не запускаются, поэтому запрос суммы руководителям отправляет сам блок.
- Задачу «Разработать рецептуру» нельзя завершить без файла рецептуры. Штатно Битрикс не запрещает завершение задачи по полю CRM: отказ даёт обработчик события задач. Новая карточка задач текст отказа не показывает, поэтому он дублируется уведомлением через фоновое задание: отправленное внутри отказа откатывалось вместе с запросом.
- Сделку нельзя увести с проработки дальше «Внутреннего акцепта»: второй обработчик, на изменение сделки. Работает на канбане, в карточке и через REST.
- Автоматизации заказчика, сломавшиеся после смены кодов в справочнике, общем с 1С, перепривязаны к новым кодам.

Проверка: 23 сквозных сценария на портале в обеих воронках на тестовых данных, код обработчиков сначала на макете Битрикса в Docker, 72 автоматические проверки. Для каждой доработки есть скрипт выключения.

Технологии: Битрикс24 коробочная версия, CRM, смарт-процессы, бизнес-процессы, роботы и триггеры, PHP в бизнес-процессах и обработчики событий, D7-фабрики CRM, REST API, права ролей, обмен с 1С, Docker.

Результат

Заявки на новые продукты и типовые образцы идут по цепочке продажи => лаборатория => продажи без ручного переноса. Лаборатория ведёт два маршрута в одной воронке, карточка сама идёт по своим этапам: задачи ставятся один раз, переходы срабатывают по завершению задачи и по отметке экономиста.

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

Объём второго этапа: 4 новых поля, 5 триггеров, 9 новых роботов и ещё 12 с переписанными условиями, 3 новых PHP-блока в бизнес-процессах, 2 обработчика событий, около 410 строк рабочего PHP, 23 служебных скрипта для диагностики, установки и отката. Срок второго этапа - около трёх недель, с 11 сентября по 2 октября 2026.

Заказчик получил инструкции по обоим этапам. По второму - PDF на 55 страниц: каждый шаг настройки и как его повторить или поправить, правила для менеджеров и лаборатории, 16 проверок, полный код блоков и обработчиков в приложениях.

Портал рабочий, закрытый, публичной ссылки нет: скриншоты сняты на боевой системе и обезличены.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT AI-чат-бот и AI-визуализация рекламы на LED-экране для сайта поставщика LED-экранов: RAG на трёх языках, заявки в Telegram, FLUX и проверка качества Claude. Python, FastAPI
AI-чат-бот и AI-визуализация рекламы на LED-экране для сайта поставщика LED-экранов: RAG на трёх языках, заявки в Telegram, FLUX и проверка качества Claude. Python, FastAPI
121
Веб-разработка и IT Интернет-магазин на 1С-Битрикс «ПрофиТекМед» — доработка и запуск, оптовые продажи, интеграция с 1С, ЮKassa и СДЭК, SMS-авторизация и переезд без потери URL
Интернет-магазин на 1С-Битрикс «ПрофиТекМед» — доработка и запуск, оптовые продажи, интеграция с 1С, ЮKassa и СДЭК, SMS-авторизация и переезд без потери URL
150
Веб-разработка и IT Доработка сайта санитарной службы на WordPress: вернул доступ после фильтрации, подтверждение заявок по SMS и умная маска телефона, два сервера с автопереключением
Доработка сайта санитарной службы на WordPress: вернул доступ после фильтрации, подтверждение заявок по SMS и умная маска телефона, два сервера с автопереключением
94
Веб-разработка и IT Trenergy - SaaS для фитнес-тренеров: Telegram Mini App, бот и панель управления. Тренировки, питание с КБЖУ, прогресс, чаты, оплата | React.js, Nest.js, Node.js
Trenergy - SaaS для фитнес-тренеров: Telegram Mini App, бот и панель управления. Тренировки, питание с КБЖУ, прогресс, чаты, оплата | React.js, Nest.js, Node.js
257