Битрикс24 перенос облака в коробку REST API
Решение о переезде из облака Битрикс24 в коробку бизнес принимает по разным причинам. В любом случае, это сложный процесс, требующий много ручного труда, если только не использовать инструменты для автоматизации. В статье даем подробную инструкцию, как перенести данные из облака в коробку Битрикс24 с помощью REST API. Рассмотрим процесс настройки миграции задач, контактов, компаний и сделок.
1. Переезд из облачного Битрикс24 в коробочный: проблема и решение
У каждого заказчика разный подход к миграции и собственный взгляд на то, какие данные необходимо переносить. По большей части это зависит от используемых на портале сущностей. В основном требуется перенос сделок и задач, а также контактов и компаний с сохранением связей между ними. В отдельных случаях переносятся смарт и бизнес-процессы.
Инструкцию по настройке обмена данными между облаком Битрикс24 и коробкой (создание и обновление сделок) читайте по ссылке.
Но главная проблема миграции — это ручной перенос данных (бэкап облака не предоставляется с 1 сентября 2023 года). Из-за этого процесс может серьезно затянуться, что приведет к простою рабочего портала, а следовательно и потерям клиентов или финансов. Можно перенести базовые настройки и даже пользователей, но когда у компании наработанные годами массивы данных: задачи с чек-листами, таймлайн сделок, смарт-процессы и так далее — их выгрузка невозможна без REST API.
Инструкция по обмену задачами Битрикс24 (из коробки в облако) и проверка интеграции на успех здесь.
С помощью интеграций на платформе Пинкит мы помогаем нашим заказчикам перенести данные из облака в коробку в том объеме и целостности, который позволит приступить к работе в коробочной версии портала Битрикс24 в короткие сроки. Интеграции можно настроить самостоятельно по подробной инструкции ниже.
Передача сделок из коробки Битрикс24 в облако Битрикс24 с сегментацией по пользовательским полям описана в этой нашей статье.
2. Инструкция по настройке интеграций Пинкит для переноса задач из облака в коробку Битрикс24
Переносить будем задачи вместе с последними 50 комментариями, файлы вложений, названия и пункты чек-листа, а также тайминг. Для этого потребуется настроить шесть интеграций.
2.1. Интеграция "Задача создана в облаке -> Задачу создать в коробке"
2.1.1. Шаг 1: Откуда
Откуда отправляем данные: Битрикс24 (Webhook), Когда - Задача создана. Подключаем доступ к облаку.
2.1.2. Шаг 2: Инструменты
- Сопоставление групп между облаком и коробкой
Используем инструмент Сопоставление данных по полю source.groupId, чтобы сопоставить группы задач между облаком и коробкой.
- Сопоставление Наблюдателей, Исполнителей, Постановщиков, Соисполнителей:
Сопоставление настроим по полям задач source.createdBy, source.responsibleId, source.auditors, source.accomplices.
- Получаем теги задачи:
Используем API-запрос GET-методом с указанием URL: /task.item.gettags?TASK_ID={{source.id}}.
- Получаем вложения задачи
Используем API-запрос GET-методом с указанием URL: /task.item.getfiles.json?TASKID={{source.id}}.
- Вложения в задаче найдены?
Используем инструмент "Если-Иначе", название поля - step4.result, Условие - "Не пустое значение", Результат при успешной проверке - 1, Результат при неуспешной проверке - 0.
- Получить ID Хранилища
Используем API-запрос GET-методом с указанием URL: /disk.storage.getlist?filter[ENTITY_ID]={{step1}}&filter[ENTITY_TYPE]=group
- Получить стадии канбана в облаке
Используем API-запрос GET-методом с указанием URL: /task.stages.get?entityId={{source.groupId}}&isAdmin=true
- Получить стадии канбана в коробке
Используем API-запрос GET-методом с указанием URL: /task.stages.get?entityId={{step1}}&isAdmin=true
- Отфильтровать стадию в облаке
Используем фильтр элементов массива, Название поля - step7.result, Условие - Текст содержит, Сравниваемое значение - source.stageId.
- Найти нужную стадию канбана в коробке
Используем фильтр элементов массива, Название поля - step8.result, Название поля внутри элемента массива - TITLE, Условие - Текст содержит, Сравниваемое значение - step9.0.TITLE.
2.1.3. Шаг 3: Куда
Куда отправляем данные - Битрикс24 (это уже будет коробка), Какое действие совершаем - Создать задачу.
2.1.4. Шаг 4: Сопоставление данных
Сопоставляем название и описание задачи в облаке и коробке.
Указываем дополнительные сопоставления из шага 2.
Дополнительное тело запроса:
И дополнительные сопоставления:
2.1.5. Шаг 5: Запуск
Указываем название интеграции, периодичность запросов данных и запускаем. Также можем указать режим отладки (если отметить данный чекбокс, то в журнал будут попадать абсолютно все запросы, которые происходят в интеграции).
2.2. Интеграция "Задача - добавить вложения"
2.2.1. Шаг 1: Откуда
Откуда отправляем данные - Пинкит, Когда - Интеграция - успех, подключаем аккаунт Пинкит и выбираем интеграцию, настроенную нами ранее.
2.2.2. Шаг 2: Инструменты
- Вложение было?
Используем инструмент Проверка, Название поля - source.int6551.step5, Условие - ЧислоРавно, Сравниваемое значение - 1, Действие - Продолжить, если проверка пройдена.
- Для каждого вложения
Тип шага - Для каждого, название поля - source.int6551.step4.result.
- Получить развернутую информацию о вложениях
Используем API-запрос GET-методом с указанием URL: /disk.attachedObject.get?id={{step2.ATTACHMENT_ID|default()}}
- Скачать файл
Тип шага - Скачать файл, для этого используем API-запрос GET-методом с указанием URL: {{step3.result.DOWNLOAD_URL|default()}}.
2.2.3. Шаг 3: Куда
Куда отправляем данные - коробка Битрикс24, когда: Задача - добавить вложение.
2.2.4. Шаг 4: Сопоставление данных
Настраиваем сопоставление:
2.2.5. Шаг 5: Запуск
Запускаем интеграцию.
2.3. Интеграция "Задача - Добавить комментарии 50 последних"
2.3.1. Шаг 1: Откуда
Откуда отправляем данные - Пинкит, Когда - Интеграция - успех, подключаем аккаунт Пинкит и выбираем интеграцию, настроенную нами ранее.
2.3.2. Шаг 2: Инструменты
- Получить комментарии из портала, откуда выгружаем
Используем API-запрос GET-методом с указанием URL: /task.commentitem.getlist.json?TASKID={{source.int6551.source.id}}&order[POST_DATE]=asc.
- Для каждого комментария
Используем инструмент "Для каждого", Название поля - step1.result.
- Убрать теги из комментария
Используем инструмент "Замена по регулярному выражению", Название поля - step2.POST_MESSAGE, Регулярное выражение - /\[USER=\d+\](.*?)\[\/USER\]/.
- Есть ли вложения
Используем тип шага Если-иначе, Название поля - step2.ATTACHED_OBJECTS, Условие - Существует, Результат при успешной проверке - 1, Результат при неуспешной проверке - 0.
- Отфильтровать файл
Используем фильтр элементов массива, Условие выполнения - step5, Название поля - step2.ATTACHED_OBJECTS|default(), Название поля внутри элемента массива - DOWNLOAD_URL, Условие - Не пустое значение.
- Развернутая информация о вложениях
Используем API-запрос GET-методом с указанием URL: /disk.attachedObject.get?id={{step6.0.ATTACHMENT_ID}}, Условие выполнения - step5.
- Скачать файл
Используем инструмент "Скачать файл", API-запрос GET-методом с указанием URL:{{step7.result.DOWNLOAD_URL}}, Условие выполнения - step5.
- Загрузить файл на диск в Хранилище группы
Используем API-запрос POST-методом с указанием URL: /disk.storage.uploadfile.
Тело запроса:
Условие выполнения - step5.
- Закрепить файл или нет
Используем инструмент "Если-Иначе", название поля - step5, Условие - "ЧислоРавно", Сравниваемое значение - 1, Результат при успешной проверке - n{{step9.result.ID|default()}}, результат при неуспешной проверке - {{step9.result.ID|default()}}.
2.3.3. Шаг 3: Куда
Куда отправляем данные - Битрикс24, Какое действие совершаем - "Задача - добавить комментарий", указываем пользователя, от чьего имени будут добавлены комментарии.
2.3.4. Шаг 4: Сопоставление данных
Настраиваем сопоставление:
И пользовательское сопоставление:
2.3.5. Шаг 5: Запуск
Запускаем интеграцию.
2.4. Интеграция "Задача. Добавить название чек-листа"
2.4.1. Настройка 1 шага выполняется аналогично предыдущей интеграции.
2.4.2. Шаг 2: Инструменты
- Получить чек-листы Задачи
Используем API-запрос GET-методом с указанием URL: /task.checklistitem.getlist?TASKID={{source.int6551.source.id}}
- Чек-листы есть?
Тип шага - "Проверка", Название поля - step1.result, Условие - "Пустое значение", Действие - "Прервать, если проверка пройдена".
- Отфильтровать заголовок чек-листа
Инструмент - фильтр элементов массива, Название поля - step1.result, Название поля внутри элемента массива - PARENT_ID, Условие - ЧислоРавно.
- Для каждого заголовка чек-листа
Тип шага - "Для каждого", Название поля - step3.
2.4.3. Шаг 3: Куда
Выбираем Битрикс24, действие - "Создать элемент чек-листа", подключаем доступ к коробке.
2.4.4. Шаг 4: Сопоставление данных
Сопоставляем данные следующим образом:
И пользовательское сопоставление:
2.4.5. Запускаем интеграцию
2.5. Интеграция "Пункты чек-листа"
2.5.1. Шаг 1 аналогичен описанному выше, только интеграцию указываем по чек-листам.
2.5.2. Шаг 2: Инструменты
- Отфильтровать чек-листы
Используем фильтр элементов массива, Название поля - source.int6690.step1.result, Название поля внутри элемента массива -PARENT_ID, Условие - ЧислоРавно, Сравниваемое значение -source.int6690.step3.0.ID.
- Для каждого пункта
Тип шага - Для каждого, Название поля - step1.
2.5.3. Шаг 3: Куда
Выбираем Битрикс24, действие - Создать элемент чек-листа, подключаем доступ к коробке.
2.5.4. Шаг 4: Сопоставление данных
Настраиваем сопоставление:
Дополнительное тело запроса:
Пользовательское сопоставление:
2.5.5. Шаг 5: Запуск
Запускаем интеграцию.
2.6. Интеграция "Учёт рабочего времени"
2.6.1. Шаг 1 аналогичен описанному выше, выбираем самую первую интеграцию.
2.6.2. Шаг 2: Инструменты
- Получить тайминг по задаче
Используем API-запрос GET-методом с указанием URL: /task.elapseditem.getlist?TASKID={{source.int6551.source.id}}
- Для каждого тайминга
Тип шага - Для каждого, Название поля - step1.result.
- Сопоставить пользователей
Используем сопоставление данных по названию поля step2.USER_ID.
2.6.3. Шаг 3: Куда
Выбираем Битрикс24, действие - Добавить запись учета времени.
2.6.4. Шаг 4: Сопоставление данных
Сопоставляем данные:
2.6.5. Запускаем.
3. Итог
Так же переносятся контакты, компании, сделки и другие нужные сущности из облака Битрикс24 в коробку с сохранением связей между сущностями.
Регистрируйтесь по ссылке: https://lk.pinkit.io/register в личном кабинете Пинкит и тестируйте интеграции переноса облака в коробку самостоятельно по нашей инструкции или с нашей помощью.