December 7, 2023

Больше никаких «заявок Шрёдингера». О лимите в 100 символов для названий смарт-процессов Битрикс24

Прекрасно, когда потребность внедрения Битрикс24 (да и любой другой автоматизации) обусловлена ростом бизнеса компании-заказчика. Именно так произошло и в этой истории, о которой я сегодня расскажу.

Итак, self-made-агентство дизайна и полиграфии. Выросло из крошечного предприятия в известную на рынке компанию и стало внешним подрядчиком сразу для нескольких крупных торговых сетей. Десятки регионов, сотни магазинов, тысячи видов POS-материалов — и огромный поток заказов каждый день, справиться с которым вручную или только с помощью электронной почты уже было малореально. Время для платформы автоматизации пришло. Такой платформой выбрали "1С-Битрикс24: Интернет-магазин + CRM". Это “гибридный вариант” — такой, где сильные стороны системы управления сайтом дополнены возможностями CRM.

ИТ-подразделение блестяще решило задачу развертывания. В процессе удалось соединить личный кабинет покупателей, размещающих заказы на сайте, и менеджеров отдела продаж. Гибридная сущность лицензии помогла реализовать этот трюк бесшовно. Клиентам предлагалось спокойно формировать заказы в личных кабинетах, а менеджерам - работать в окружении привычной CRM-системы.

Что пошло не так

Сигнал тревоги поступил как раз из канала связи с клиентами. Заказчики стали массово жаловаться менеджерам на увеличившиеся сроки создания дизайна: “При общении по электронной почте такого не было!” Дизайнеры же со своей стороны удивлялись малому количеству заявок. Через Битрикс24 что первичных (от новых клиентов), что вторичных (пожелания поменять макет, дозаказать тираж и проч.) обращений поступало чуть ли не в 10 раз меньше, чем ранее.

Попытка разобраться своими силами ясности не добавила. Администраторы, которые курировали работу дизайнеров, видели все заявки в полном объеме. На стороне клиентов с их заявками тоже все было хорошо — они сохранялись в личном кабинете, были активными и ждали выполнения. В общем, единое информационное поле, в котором, по задумке, должны были жить дизайнеры, менеджеры по продажам и заказчики, разваливалось прямо на глазах.

Все ли в порядке с вашим порталом на Битрикс24? Напишите, мы проверим >>>

Айтишники агентства дизайна и полиграфии обратились к нам — у одного из коллег был опыт взаимодействия с ZeBrains на прошлом месте работы. Сбой бизнес-критичной системы — это не шутки, поэтому уже через 15 минут после звонка наша команда инженеров Битрикс24 “высадилась” на проекте.

Проблема 100 символов

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

Надо сказать, что заявка приземлялась в общую воронку заказов в CRM. Там она квалифицировалась менеджером исполнителя и отправлялась в отдел дизайна. Дизайнер уже видит заявку как новую сущность — смарт-процесс, в котором хранится вся информация о заказе, где есть возможность отслеживать ход выполнения работ, где есть функциональность получения комментариев о заказе из личного кабинета клиента прямо в карточку смарт-процесса.

В списке заявок для дизайнера (то есть в смарт-процессах заявка появлялась только на 1-2 секунды, и сразу же бесследно исчезала. “Баг” воспроизводился при поступлении нового заказа и при обработке составных заявок — когда клиент заказывал для себя несколько позиций (например, листовки, роллап и визитки), и когда дизайнер отмечал сделанным как минимум один пункт из составной заявки (готовы только визитки). Даже просто увидеть зафиксировать “заявки Шрёдингера” можно было одним способом — следя за личным кабинетом дизайнера не отрываясь. Такой роскоши, конечно, рыцари “Фотошопа” себе позволить не могли.

В то время как администраторы отдела дизайна подхватили распределение заявок в ручном режиме, мы поспешили разобраться в причинах появления “заявок Шрёдингера”. Выяснилось, что всё ломает функциональность передачи заявок по воронке, где для поля “Название карточки смарт-процесса” по умолчанию установлено ограничение в 100 символов. Сложно сказать, чем обусловлен лимит. Это может быть наследуемая особенность системы, которая перекочевала в “коробочную” версию из облачной. Или сознательный шаг разработчиков, которые таким либеральным, но все же ограничением, постарались предотвратить рост нагрузки на серверы.

На форуме Битрикс24 можно встретить замечания, что сотни знаков в названии заявки хватит на все случаи жизни. Однако наш заказчик может с этим поспорить. В его случае 100 символов получались довольно легко. Размещая заказ через сайт, клиент не просто складывает в корзину готовые товары. Он формирует то, что более уместно называть изделием — продукт с уникальным набором атрибутов. Скажем, в случае с визитками это будет материал (бумага или пластик), плотность, особенности оформления (вырубка, тиснение, фольгирование), загружаемый заказчиком логотип, шрифты и много чего еще. Из-за особенностей бизнес-процессов в агентстве конфигурация одного или нескольких (если заявка составная) “изделий” затаскивается в название заявки.

На поиск проблемы и воспроизведения ошибки мы потратили пару часов — потребовалось не просто удостовериться, что это не единичный баг, а зафиксировать “заявку Шрёдингера” инструментами тестировщиков. А на исправление проблемы и вовсе потребовалось 10 минут. Выяснилось, что починить ограничение можно с помощью ряда команд.

Чиним ограничения через команды

В базе b_crm_status колонка STATUS_ID и в b_crm_entity_perms колонка ATTR имеют разное значение максимальных символов для значения. Сами таблицы мы не исправляли (этого не требуется), а только изменяли символьный код, чтобы он помещался в b_crm_entity_perms.

Команды

- update b_crm_status set STATUS_ID = 'DT168_5:NEED_TO_IMP', CATEGORY_ID = 5 where STATUS_ID = 'DT168_5:NEED_TO_IMPROVE';

- update b_crm_dynamic_items_168 set STAGE_ID = 'DT168_5:NEED_TO_IMP' where STAGE_ID = 'DT168_5:NEED_TO_IMPROVE';

- update b_crm_entity_perms set ATTR = 'STAGE_IDDT168_5:NEED_TO_IMP' where ATTR = 'STAGE_IDDT168_5:NEED_TO_IMPROV';

Пошаговые комментарии

Команда 1:

Обновление таблицы b_crm_status:
- Заменить значение поля STATUS_ID на 'DT1685:NEEDTOIMP'
- Заменить значение поля CATEGORY_ID на 5
- Для строк, где значение поля STATUS_ID равно 'DT1685:NEEDTOIMPROVE'

Команда 2:

Обновление таблицы b_crm_dynamic_items_168:
- Заменить значение поля STAGE_ID на 'DT1685:NEEDTOIMP'
- Для строк, где значение поля STAGE_ID равно 'DT1685:NEEDTOIMPROVE'

Команда 3:

Обновление таблицы b_crm_entity_perms:
- Заменить значение поля ATTR на 'STAGEIDDT1685:NEEDTOIMP'
- Для строк, где значение поля ATTR равно 'STAGEIDDT1685:NEEDTOIMPROV'

Зачем проверять внедрения

Этот случай хорош тем, что подсветил проблему в первый же день коммерческой эксплуатации платформы и позволил применить эффективное решение, о котором мы исчерпывающе рассказали. А вот для ответа на вопрос, нет ли “под капотом” у вашей инсталляции Битрикс24 каких-либо скрытых проблем, требуется более фундаментальная работа по аудиту работы платформы. Поручите это нам! Мы проверим ваше внедрение, исправим очевидные проблемы и укажем на дополнительные точки роста.