Вернуться к списку Вернуться к статьям

Миграция с Мегаплана на Битрикс24: опыт переноса сделок оконной компании

Как проект оказался у нас

В сентябре 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 с полным набором исторических данных: сотни замеров, клиентская база, файлы, ответственные и связи между сущностями — всё, что накопилось за годы работы в Мегаплане.

Перенос занял один проход. Ни одной потерянной записи. Ни одного дубликата.