Как проект оказался у нас
В сентябре 2025 года к нам обратилась компания астраханский производитель окон, дверей и светопрозрачных конструкций. Почти тридцать лет на рынке, два выставочных зала, собственное производство и больше тысячи установленных изделий в год.
До этого с компанией уже работал другой интегратор Битрикс24. Он настроил CRM: создал смарт-процесс для замеров, наладил воронки, прописал роботов. Но когда дошло до главного — переноса исторических данных из Мегаплана, где компания работала много лет — случилась пробуксовка. Интегратор не смог решить эту задачу. Проект застопорился.
Клиент передал проект с конкретным запросом: «В Битрикс24 уже всё настроено, но сделок там нет. Перенесите данные из Мегаплана, и чтобы всё работало».
Что было в Мегаплане
Мегаплан — российская CRM, которую компания использовала для управления замерами. Внутри была схема сделок с программой №13, и в ней накопились сотни записей: выезды замерщиков, коммерческие предложения, договоры. Каждая сделка содержала:
- Данные клиента: контактное лицо или компания, телефон, email
- Параметры замера: адрес, дата и время, корпоративный или частный
- Назначенного замерщика — конкретного сотрудника из бригады
- Файлы замера: чертежи, схемы, фотографии объектов
- Комментарий к замеру и сумму договора
- Премию замерщику и зону доставки
- Связанные сделки (в Битрикс24 уже были созданы параллельные сделки, которые надо было слинковать)
Мегаплан отдаёт данные через REST API v3. Документация есть, но не сахар: пагинация курсорная, состав полей зависит от конкретной схемы сделок, файлы нужно вытягивать отдельным запросом и прокидывать через base64.
Предыдущий интегратор попытался решить задачу и не довёл до конца. Работа началась с изучения того, что уже было сделано на стороне Битрикс24, и затем — с погружения в API Мегаплана.
Что было сделано
Изучение API Мегаплана и разработка приложения
Первым делом была поднята документация Мегаплана по API v3 и проверены все конечные точки, которые потребуются:
/api/v3/deal— список сделок с фильтрацией по программе и пагинацией по 100 записей/api/v3/deal/{id}— полная карточка сделки со всеми кастомными полями/api/v3/deal/{id}/linkedDeals— связанные сделки/api/v3/deal/{id}/allFiles— файлы, прикреплённые к сделке- Скачивание файлов по внутренним путям Мегаплана с Bearer-аутентификацией
Затем было написано приложение для Битрикс24 — компонент fabricant_v1, работающий внутри фреймворка Битрикс24 и использующий REST-клиент для общения с обоими API.
Пайплайн миграции
Логика переноса состоит из трёх этапов:
Этап 1. Сбор данных из Мегаплана. Приложение последовательно запрашивает все сделки из программы №13 через курсорную пагинацию. Для каждой сделки, у которой статус «выполнена» или «отменена» (id 99, 100, 101) и дата изменения раньше контрольной точки, запрашивается полная карточка с двадцатью кастомными полями: замерщик, адрес, дата замера, корпоративный замер, файлы, премия, сумма договора и другие.
Этап 2. Трансформация данных. Каждое поле Мегаплана мапится в соответствующее пользовательское поле смарт-процесса Битрикс24:
- Название сделки → заголовок элемента
- Адрес замера → UF-поле адреса
- Дата замера → UF-поле даты
- Файлы замера → скачиваются из Мегаплана, кодируются в base64 и прикрепляются к элементу смарт-процесса
- Замерщик → сопоставляется по справочнику из 14 фамилий с ID пользователей Битрикс24
- Тип клиента (компания или контакт) → поиск существующего контакта или компании в Битрикс24 по телефону и email
- Статус сделки (99/100 = успешно, 101 = провал) → стадия смарт-процесса SUCCESS или FAIL
- Наблюдатели и ответственные → поиск по имени и фамилии среди пользователей портала
Этап 3. Загрузка в Битрикс24 с дедупликацией. Перед созданием каждого элемента приложение проверяет: нет ли уже записи с такой же ссылкой на сделку Мегаплана. Если есть — пропускает. Если нет — создаёт новый элемент смарт-процесса 1040 с заполненными UF-полями, файлами и привязкой к сделке Битрикс24.
Связанные сделки
Одна из нетривиальных частей — привязка элементов смарт-процесса к уже существующим сделкам Битрикс24. Мегаплан хранит связи между сделками, и часть из них ссылается на сделки, которые уже были созданы в Битрикс24 предыдущим интегратором.
Приложение запрашивает связанные сделки через /api/v3/deal/{id}/linkedDeals, ищет соответствующие сделки в Битрикс24 по пользовательскому полю с URL Мегаплана, и при нахождении единственного совпадения привязывает элемент смарт-процесса к найденной сделке.
Обработка файлов
Файлы в Мегаплане хранятся на внутреннем файловом сервере. Приложение скачивает каждый файл через HTTP-клиент Битрикс24 с Bearer-авторизацией, определяет MIME-тип, кодирует в base64 и прикрепляет к элементу смарт-процесса через множественное UF-поле. Имена файлов сохраняются оригинальные.
Какие данные были перенесены
В результате миграции в Битрикс24 попали:
- Сделки из программы замеров Мегаплана (схема №13, статусы 99/100/101) — в смарт-процесс 1040
- 20+ пользовательских полей: адрес замера, дата, замерщик, сумма договора, премия, зона доставки, форма оплаты
- Файлы замера (чертежи, схемы, фотографии)
- Клиенты: контакты и компании с телефонами и email
- Связи: найденные сделки Битрикс24 прилинкованы к элементам смарт-процесса
- Наблюдатели и ответственные из числа сотрудников портала
Что пошло не так у предыдущего интегратора
Несколько вероятных причин, почему предыдущая попытка миграции не увенчалась успехом:
Курсорная пагинация. Мегаплан v3 использует курсорную пагинацию через pageAfter с указанием ID последней записи и её contentType. Это не тривиальный offset/limit — нужно аккуратно обрабатывать рекурсивные запросы, проверять флаг hasMoreNext и не терять данные на стыках страниц.
Кастомные поля с префиксами схем. Поля в API Мегаплана возвращаются с префиксом конкретной схемы: Category1000060CustomFieldAdresZamera, а не просто AdresZamera. Без знания ID схемы найти нужные поля невозможно — их надо вычислять.
Связь сделок через linkedDeals. Связанные сделки в Мегаплане — это отдельный endpoint. Предыдущий интегратор мог не учесть, что часть сделок уже создана в Битрикс24 и их нужно искать по кастомному полю с URL Мегаплана, а не создавать заново.
Справочник замерщиков. 14 фамилий замерщиков из Мегаплана нужно было сопоставить с ID пользователей Битрикс24. Часть из них не имела прямого соответствия — пришлось использовать текстовые комментарии вместо числовых привязок.
Файлы. Скачивание файлов из Мегаплана требует отдельной обработки: авторизация Bearer, определение MIME-типа, base64-кодирование, загрузка в множественное UF-поле Битрикс24. Это не копирование ссылок, а полноценный перенос бинарных данных.
Технический стек
- Мегаплан API v3 — REST, Bearer-аутентификация, курсорная пагинация
- Битрикс24 REST API — через модуль
swebs.rest2(обёртка над стандартным API) - Приложение — PHP-компонент для Битрикс24 Marketplace
- Смарт-процесс 1040 — целевая сущность для замеров в Битрикс24
- Дедупликация — через UF-поле с URL сделки Мегаплана
Итог
Проект, который застопорился у предыдущего интегратора, был завершён. компания получила работающую CRM с полным набором исторических данных: сотни замеров, клиентская база, файлы, ответственные и связи между сущностями — всё, что накопилось за годы работы в Мегаплане.
Перенос занял один проход. Ни одной потерянной записи. Ни одного дубликата.