Интеграция CRM с мобильным приложением: где рвётся обмен
Обрыв связи в лифте или метро — клиент оформляет заявку, нажимает «Отправить» и видит подтверждение. В учётной системе заявки нет: запрос ушёл в момент, когда соединение уже распалось, а повтора не последовало. Заявка потерялась при обрыве связи, и узнаёт об этом клиент от менеджера по телефону, а не из приложения, которое только что обещало обратное.
Второе место разрыва — ключ, по которому приложение и учётная система сопоставляют человека. Если поиск идёт по телефону, а в базе тот же клиент лежит с другим написанием номера, при следующем входе создаётся новая запись. Так появляются дубли карточек клиентов: история заказов разъезжается по двум записям, скидки и бонусы считаются дважды, а слияние потом делают вручную и с потерей части истории.
Третье — статусы. Менеджер переводит заказ в «Отгружен», приложение ещё час показывает «Собирается», потому что обмен идёт по расписанию, а не по событию. Расхождение статусов заказа даёт лишние обращения в поддержку и подрывает доверие к приложению сильнее, чем любая ошибка интерфейса.
Отдельная история — ручной перенос данных как заплатка: выгрузка из приложения, сверка в таблице, правки руками. Он съедает время сотрудников и добавляет новые расхождения ровно там, где их пытались убрать.
Причина у всех четырёх сбоев одна: между приложением и учётной системой нет слоя, который отвечает за повторную запись без дублей, разрешение конфликтов и доставку до конкретного устройства. Разбираем, как это закрывается.
Устранённые классы отказов и скорость работы менеджера
Дороже всего обходились не отказы сервера, а тихие потери: заявка, оформленная там, где связи нет, жила в памяти телефона и исчезала при перезапуске. Теперь она сразу ложится в очередь отложенной отправки и уходит в CRM, как только появляется канал; повторная отправка помечена ключом записи, поэтому обрыв сети даёт не дубль, а ту же карточку.
Второй класс — конфликт версий записи, когда менеджер и оператор правят одну карточку одновременно. Ревизии сравниваются по полям, а не по принципу «кто последний, тот и прав»: совпавшие изменения сливаются, расхождения помечаются и уходят на подтверждение с подсветкой различий. Заявка перестаёт затираться устаревшей формой.
Третий — повторный ввод данных. Раньше цикл выглядел так: заметка в блокнот, вечером ручной перенос, сверка с фотографиями. Теперь данные вводятся один раз на месте, вложения и подписи догружаются фоном, и менеджер закрывает заявку сразу, а не через день.
В цифрах это выглядит так: доля обращений, потерянных до попадания в CRM, падает с единиц процентов до нуля — каждый случай либо уходит в систему, либо остаётся в журнале с причиной отказа. Схему мы собирали и для Битрикс24, и переносим на любую CRM с открытым программным интерфейсом. Время обработки заявки на выезде сокращается в разы, потому что путь от записи до карточки в системе сжимается до одного действия.
Варианты связки: прослойка на сервере, прямой доступ, шина
Первое решение при связке — где живёт логика отбора данных и кто владеет доступом к учётной системе. Если приложение обращается к ней напрямую, любая правка структуры ломает выпуск, а права приходится раздавать наружу. Серверная прослойка держит учётную систему закрытой: приложение получает только подготовленные ответы под конкретный экран и не знает о её внутреннем устройстве.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Серверная прослойка | Мобильный сценарий отличается от учётного: свои экраны, свои поля, очередь офлайн-действий | Нужен отдельный контур, который кто-то сопровождает и выпускает вместе с приложением |
| Прямой доступ к учётной системе | Один узкий сценарий, немного пользователей, готовые интерфейсы системы покрывают его целиком | Правки в учётной системе сразу видны клиентам, права и лимиты запросов уходят наружу, откат невозможен |
| Обмен по расписанию | Данные нетребовательны к секундам: справочники, каталоги, сводки | Задержка между изменением и появлением в приложении, а конфликты при правках с двух сторон разрешаются вручную |
| Шина данных | Несколько учётных систем и каналов, нужен единый поток событий | Тяжелее в сопровождении: отдельный контур маршрутизации оправдан от трёх источников |
Выбор диктуют ограничения синхронизации. Там, где правки идут с обеих сторон, нужна явная стратегия разрешения конфликтов и повторяемые операции — иначе повторная отправка создаёт дубли записей. Мы начинаем с разбора сценариев: чаще всего достаточно прослойки и обмена по расписанию, а шина появляется, когда источников становится несколько и расхождения между ними перестают быть исключением.
Как идёт внедрение: от разбора данных до передачи
Чем раньше зафиксирована схема данных, тем дешевле каждая следующая правка. До первой строки кода разбираем, какие сущности CRM действительно нужны на экране, а какие тянуть в мобильный контур не стоит: лишнее поле — это вес ответа и новый повод для конфликта при синхронизации. Итог этапа — карта обмена, а не договорённость «надо интегрировать».
- Аудит схемы данных. Сводим сделки, контакты, задачи и историю активности к полям, которые реально попадают в интерфейс, и помечаем те, что меняются с обеих сторон, — это карта будущих конфликтов.
- Проектирование обмена. Решаем, что приложение запрашивает напрямую, а что получает через промежуточный слой: он собирает ответ из нескольких источников и отдаёт экрану один компактный набор вместо серии запросов.
- Настройка очередей отправки. Записи, сделанные без сети, ложатся в локальную очередь с порядком и повторными попытками. Сервер сверяет их по идентификатору и только потом пишет в CRM — повторная отправка не создаёт дублей.
- Испытания на конфликты. Ломаем сценарии намеренно: правка с двух устройств, обрыв сети в момент отправки, вход после смены прав доступа. Смотрим, какая версия записи побеждает и видит ли сотрудник, что правка не сохранилась.
- Передача и обучение команды. Отдаём схему обмена, конфигурацию очередей, справочник полей и разбор типовых сбоев, обучаем ваших разработчиков и поддержку — чтобы правки в сценариях не требовали возвращаться к нам.
- Сопровождение после запуска. Держим метрики доставки, долю успешных синхронизаций и глубину очереди: оповещение о её росте приходит раньше, чем пользователи замечают потерю данных.
Что остаётся у вас: схемы обмена, правила, регламенты
Интеграция считается завершённой не в момент, когда данные пошли, а когда сопровождение не требует автора решения. Поэтому в контуре заказчика остаётся комплект артефактов, по которым поддержка, служба безопасности и новые разработчики работают самостоятельно, без обращения к нам за пояснениями.
- Схема обмена данными — какие сущности CRM попадают в приложение, в каком виде, какие поля обязательны и как разрешается конфликт одновременных правок одной записи.
- Правила доступа и роли — матрица «роль → доступные сущности и операции», отдельными блоками для внешних пользователей и для отозванных учётных записей.
- Регламент обработки ошибок — какие отказы считаются временными, сколько попыток делается автоматически и в какой момент событие уходит в ручную разборку.
- Инструкция для поддержки — готовые сценарии: данные не пришли, уведомление не дошло, запись не сохранилась — и что именно проверять в каждом случае.
- Журналирование событий — какие события пишутся, срок их хранения и как по идентификатору обращения связать жалобу пользователя с конкретным обменом.
- Схема развёртывания — какие сервисы живут в контуре заказчика, где хранятся адреса и ключи доступа, как поднимается тестовый контур для проверок.
- Порядок изменений — как добавить поле или сущность, не ломая приложение на устройствах с прежними версиями.
Каждый документ подкреплён рабочими конфигурациями, а не описанием «в общем виде». Перед передачей проходим по артефактам вместе с вашей командой и отвечаем на вопросы — чтобы после запуска не осталось узлов, работающих только у нас в голове.
Кейс: как заявки перестали теряться при обрыве связи
Сервисная компания с выездными бригадами принимала заявки через мобильное приложение, а диспетчер вёл их в Битрикс24. При обрыве связи карточка создавалась на устройстве, но ответ сервера не доходил — приложение помечало отправку неуспешной и повтор не делало. За смену терялось до 14% обращений, и о части из них диспетчер узнавал от клиента по телефону, а не из системы.
Внедрили офлайн-очередь: заявка сохраняется локально и повторно уходит при восстановлении сети, а каждая получает ключ, по которому сервер отбрасывает дубли. Между приложением и CRM поставили слой-посредник с единым контрактом — приложение не зависит от того, как переименовали поля в CRM. Статусы идут обратно push-уведомлениями, поэтому оператор не звонит уточнять, принята ли заявка.
Что изменилось за первый месяц работы:
- доля потерянных обращений — 14% → 0,4%;
- среднее время обработки обращения — 26 → 9 минут;
- обращений на оператора за смену — 40 → 65 без расширения штата;
- доля клиентов, звонящих уточнить статус, — 31% → 6%.
Ценность здесь не в «стало удобнее», а в том, что потеря заявки перестала быть сценарием: сеть пропала, приложение закрыли, телефон разрядился — обращение всё равно доходит до диспетчера и возвращается клиенту со статусом.
Что делать, если учётная система уже развёрнута и ей пользуются?
Развёрнутый контур не останавливают ради обмена: новую логику наращивают рядом с работающей, а не вместо неё. Заявки, справочники и остатки продолжают идти по текущим маршрутам, пока изменения проверяются на копии трафика, — так внедрение проходит без простоя продаж. Переключение идёт не одним днём, а по группам пользователей и офисам, с планом этапов.
Обратная совместимость держится на версионировании методов: новые поля приходят опциональными, и старые сборки, которые ещё стоят на телефонах сотрудников, получают ответ в прежнем формате. Обмен идёт через BFF-слой, поэтому мобильный клиент не знает, в какой учётной системе (1С) лежат данные, и пересобирать его при каждом изменении схемы не нужно.
Перенос данных без потерь — отдельный этап, а не побочный эффект запуска. Идёт сверка контрольных сумм на источнике и приёмнике, каждая запись помечается ключом повтора, расхождения складываются в журнал и догружаются после основного прохода. Массовые операции ставим в ночное окно, когда нагрузка на учётную систему минимальна.
План отката готовят до старта, а не после сбоя: предыдущая сборка приложения остаётся доступной для установки, серверная часть держит переключатель на старый маршрут обмена, поэтому возврат занимает минуты. Решение принимается по контрольным метрикам — доля успешных синхронизаций, глубина очереди на отправку, время отклика. Что переключать первым — обмен, офлайн-очередь или push-уведомления — зависит от того, где в текущем контуре больше ручной работы.
Частые технические сомнения перед стартом
Перед стартом заказчик хочет понять, кто в системе главный по данным и что произойдёт при сбое синхронизации. Ниже — вопросы, которые возникают почти на каждой оценке, и наши ответы по существу.
Кто источник правды — CRM или мобильное приложение?
Источник правды — CRM. Приложение и промежуточный серверный слой только читают данные и отправляют правки, а сама запись проходит проверку на сервере. Поэтому устаревшая копия на устройстве не перезапишет актуальное состояние.
Что если одну запись правят с двух сторон одновременно?
Разрешение конфликтов строится на версии и времени изменения: сервер сравнивает их и либо принимает правку, либо помечает запись на ручной разбор. Поля, которые ведёт только CRM, изменениями из приложения не затрагиваются.
Как защищены данные клиентов?
Данные на устройстве хранятся в зашифрованном виде, авторизация — по короткоживущим токенам, права проверяются на сервере при каждом запросе, а не внутри приложения. Сессию можно отозвать удалённо, в журналах не остаётся персональных данных.
Можно ли менять правила учёта без переустановки приложения?
Да. Логика расчётов, статусы и справочники вынесены на сервер, в приложении остаётся отображение. Обновление правил приходит на устройство без выпуска новой сборки и без действий со стороны пользователя.
Что происходит при слабой связи?
Правки складываются в локальную очередь и уходят на сервер, как только связь появляется. Повторная отправка не создаёт дублей — каждая операция помечена своим идентификатором.
Обсудим задачу и вернёмся с оценкой и планом
Чтобы обсудить задачу интеграции предметно и вернуться с оценкой и планом по этапам, а не с общими словами, нужен минимальный набор вводных. Ниже — что прислать для разбора; если чего-то нет, зафиксируем это первым этапом работ.
- Сценарии работы в приложении: что пользователь смотрит и меняет с телефона, какие операции обязаны работать без сети и как данные догружаются при возврате связи.
- Доступы и стенды: тестовый контур CRM, учётные записи с разными ролями, правила сетевого доступа со стороны вашей инфраструктуры.
- Модель данных: сущности, которые уходят на устройство, связи между ними, примерный объём записей и частота изменений.
- Контракты: описание имеющегося программного интерфейса или выгрузка текущих запросов, форматы ответов, коды ошибок.
- Права и уведомления: кто что видит и может менять, какие события должны приходить на устройство, шаблоны текстов.
- Ограничения: расчётная нагрузка, ожидаемые сроки, что уже пробовали и почему решение не подошло.
Порядок взаимодействия простой: разбираем сценарии и ограничения, мы собираем план работ по этапам с составом вводных на каждом, затем возвращаемся с оценкой сроков и разбором рисков. Уточнения ведём письменно, чтобы оценка оставалась проверяемой. Опишите задачу — вернёмся с планом и сроками.







