Битрикс24 перенос облака в коробку REST API

Решение о переезде из облака Битрикс24 в коробку бизнес принимает по разным причинам. В любом случае, это сложный процесс, требующий много ручного труда, если только не использовать инструменты для автоматизации. В статье даем подробную инструкцию, как перенести данные из облака в коробку Битрикс24 с помощью REST API. Рассмотрим процесс настройки миграции задач, контактов, компаний и сделок.

Битрикс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), Когда - Задача создана. Подключаем доступ к облаку.

Битрикс24 перенос облака в коробку REST API

2.1.2. Шаг 2: Инструменты

Битрикс24 перенос облака в коробку REST API
  • Сопоставление групп между облаком и коробкой

Используем инструмент Сопоставление данных по полю source.groupId, чтобы сопоставить группы задач между облаком и коробкой.

Битрикс24 перенос облака в коробку REST API
  • Сопоставление Наблюдателей, Исполнителей, Постановщиков, Соисполнителей:

Сопоставление настроим по полям задач source.createdBy, source.responsibleId, source.auditors, source.accomplices.

Битрикс24 перенос облака в коробку REST API
  • Получаем теги задачи:

Используем API-запрос GET-методом с указанием URL: /task.item.gettags?TASK_ID={{source.id}}.

Битрикс24 перенос облака в коробку REST API
  • Получаем вложения задачи

Используем API-запрос GET-методом с указанием URL: /task.item.getfiles.json?TASKID={{source.id}}.

Битрикс24 перенос облака в коробку REST API
  • Вложения в задаче найдены?

Используем инструмент "Если-Иначе", название поля - step4.result, Условие - "Не пустое значение", Результат при успешной проверке - 1, Результат при неуспешной проверке - 0.

Битрикс24 перенос облака в коробку REST API
  • Получить ID Хранилища

Используем API-запрос GET-методом с указанием URL: /disk.storage.getlist?filter[ENTITY_ID]={{step1}}&filter[ENTITY_TYPE]=group

Битрикс24 перенос облака в коробку REST API
  • Получить стадии канбана в облаке

Используем API-запрос GET-методом с указанием URL: /task.stages.get?entityId={{source.groupId}}&isAdmin=true

Битрикс24 перенос облака в коробку REST API
  • Получить стадии канбана в коробке

Используем API-запрос GET-методом с указанием URL: /task.stages.get?entityId={{step1}}&isAdmin=true

Битрикс24 перенос облака в коробку REST API
  • Отфильтровать стадию в облаке

Используем фильтр элементов массива, Название поля - step7.result, Условие - Текст содержит, Сравниваемое значение - source.stageId.

Битрикс24 перенос облака в коробку REST API
  • Найти нужную стадию канбана в коробке

Используем фильтр элементов массива, Название поля - step8.result, Название поля внутри элемента массива - TITLE, Условие - Текст содержит, Сравниваемое значение - step9.0.TITLE.

Битрикс24 перенос облака в коробку REST API

2.1.3. Шаг 3: Куда

Куда отправляем данные - Битрикс24 (это уже будет коробка), Какое действие совершаем - Создать задачу.

Битрикс24 перенос облака в коробку REST API

2.1.4. Шаг 4: Сопоставление данных

Сопоставляем название и описание задачи в облаке и коробке.

Битрикс24 перенос облака в коробку REST API

Указываем дополнительные сопоставления из шага 2.

Дополнительное тело запроса:

{ "fields": { "RESPONSIBLE_ID": "{{step2.source_responsibleId|default()}}", "MARK": "{{source.mark|default()}}", "PRIORITY": "{{source.priority|default()}}", "MULTITASK": "{{source.multitask|default()}}", "NOT_VIEWED": "{{source.notViewed|default()}}", "REPLICATE": "{{source.replicate|default()}}", "STAGE_ID": "{{step10.0.ID|default()}}", "START_DATE_PLAN": "{{source.startDatePlan|default()}}", "END_DATE_PLAN": "{{source.endDatePlan|default()}}", "XML_ID": "{{source.xmlId|default()}}", "ALLOW_CHANGE_DEADLINE": "{{source.allowChangeDeadline|default()}}", "TASK_CONTROL": "{{source.taskControl|default()}}", "ADD_IN_REPORT": "{{source.addInReport|default()}}", "TIME_ESTIMATE": "{{source.timeEstimate|default()}}", "TIME_SPENT_IN_LOGS": "{{source.timeSpentInLogs|default()}}", "MATCH_WORK_TIME": "{{source.matchWorkTime|default()}}", "FORUM_TOPIC_ID": "{{source.forumTopicId|default()}}", "FORUM_ID": "{{source.forumId|default()}}", "SITE_ID": "{{source.siteId|default()}}", "SUBORDINATE": "{{source.subordinate|default()}}", "EXCHANGE_MODIFIED": "{{source.exchangeModified|default()}}", "EXCHANGE_ID": "{{source.exchangeId|default()}}", "OUTLOOK_VERSION": "{{source.outlookVersion|default()}}", "VIEWED_DATE": "{{source.viewedDate|default()}}", "SORTING": "{{source.sorting|default()}}", "DURATION_FACT": "{{source.durationFact|default()}}", "IS_MUTED": "{{source.isMuted|default()}}", "IS_PINNED": "{{source.isPinned|default()}}", "IS_PINNED_IN_GROUP": "{{source.isPinnedInGroup|default()}}", "DURATION_PLAN": "{{source.durationPlan|default()}}", "DURATION_TYPE": "{{source.durationType|default()}}", "FAVORITE": "{{source.favorite|default()}}", "ALLOW_TIME_TRACKING":"Y", "UF_AUTO_299592262349":"{{source.ufAuto418665225732}}" } }

И дополнительные сопоставления:

groupId Тип: Тело Название параметра: fields.GROUP_ID Значение параметра: {{step1}} Дата создания Тип: Тело Название параметра: fields.CREATED_DATE Значение параметра: {{Дата создания}} Дата изменения Тип: Тело Название параметра: fields.CHANGED_DATE Значение параметра: {{Дата изменения}} Статус Тип: Тело Название параметра: fields.STATUS Значение параметра: {{Статус}} Крайний срок Тип: Тело Название параметра: fields.DEADLINE Значение параметра: {{Крайний срок}} Постановщик Тип: Тело Название параметра: fields.CREATED_BY Значение параметра: {{step2.source_createdBy}} Дата начала Тип: Тело Название параметра: fields.DATE_START Значение параметра: {{Дата начала}} AUDITORS Тип: Тело Название параметра: fields.AUDITORS Значение параметра: {{step2.source_auditors}} ACCOMPLICES Тип: Тело Название параметра: fields.ACCOMPLICES Значение параметра: {{step2.source_accomplices}} TAGS Тип: Тело Название параметра: fields.TAGS Значение параметра: {{step3.result|default()}}

2.1.5. Шаг 5: Запуск

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

Битрикс24 перенос облака в коробку REST API

2.2. Интеграция "Задача - добавить вложения"

2.2.1. Шаг 1: Откуда

Откуда отправляем данные - Пинкит, Когда - Интеграция - успех, подключаем аккаунт Пинкит и выбираем интеграцию, настроенную нами ранее.

Битрикс24 перенос облака в коробку REST API

2.2.2. Шаг 2: Инструменты

  • Вложение было?

Используем инструмент Проверка, Название поля - source.int6551.step5, Условие - ЧислоРавно, Сравниваемое значение - 1, Действие - Продолжить, если проверка пройдена.

Битрикс24 перенос облака в коробку REST API
  • Для каждого вложения

Тип шага - Для каждого, название поля - source.int6551.step4.result.

Битрикс24 перенос облака в коробку REST API
  • Получить развернутую информацию о вложениях

Используем API-запрос GET-методом с указанием URL: /disk.attachedObject.get?id={{step2.ATTACHMENT_ID|default()}}

Битрикс24 перенос облака в коробку REST API
  • Скачать файл

Тип шага - Скачать файл, для этого используем API-запрос GET-методом с указанием URL: {{step3.result.DOWNLOAD_URL|default()}}.

Битрикс24 перенос облака в коробку REST API

2.2.3. Шаг 3: Куда

Куда отправляем данные - коробка Битрикс24, когда: Задача - добавить вложение.

Битрикс24 перенос облака в коробку REST API

2.2.4. Шаг 4: Сопоставление данных

Настраиваем сопоставление:

ID задачи - {{source.int6551.result.result.task.id|default()}} Название файла - {{step3.result.NAME}} URL файла - {{step4}}
Битрикс24 перенос облака в коробку REST API

2.2.5. Шаг 5: Запуск

Запускаем интеграцию.

Битрикс24 перенос облака в коробку REST API

2.3. Интеграция "Задача - Добавить комментарии 50 последних"

2.3.1. Шаг 1: Откуда
Откуда отправляем данные - Пинкит, Когда - Интеграция - успех, подключаем аккаунт Пинкит и выбираем интеграцию, настроенную нами ранее.

Битрикс24 перенос облака в коробку REST API

2.3.2. Шаг 2: Инструменты

  • Получить комментарии из портала, откуда выгружаем

Используем API-запрос GET-методом с указанием URL: /task.commentitem.getlist.json?TASKID={{source.int6551.source.id}}&order[POST_DATE]=asc.

Битрикс24 перенос облака в коробку REST API
  • Для каждого комментария

Используем инструмент "Для каждого", Название поля - step1.result.

Битрикс24 перенос облака в коробку REST API
  • Убрать теги из комментария

Используем инструмент "Замена по регулярному выражению", Название поля - step2.POST_MESSAGE, Регулярное выражение - /\[USER=\d+\](.*?)\[\/USER\]/.

Битрикс24 перенос облака в коробку REST API
  • Есть ли вложения

Используем тип шага Если-иначе, Название поля - step2.ATTACHED_OBJECTS, Условие - Существует, Результат при успешной проверке - 1, Результат при неуспешной проверке - 0.

Битрикс24 перенос облака в коробку REST API
  • Отфильтровать файл

Используем фильтр элементов массива, Условие выполнения - step5, Название поля - step2.ATTACHED_OBJECTS|default(), Название поля внутри элемента массива - DOWNLOAD_URL, Условие - Не пустое значение.

Битрикс24 перенос облака в коробку REST API
  • Развернутая информация о вложениях

Используем API-запрос GET-методом с указанием URL: /disk.attachedObject.get?id={{step6.0.ATTACHMENT_ID}}, Условие выполнения - step5.

Битрикс24 перенос облака в коробку REST API
  • Скачать файл

Используем инструмент "Скачать файл", API-запрос GET-методом с указанием URL:{{step7.result.DOWNLOAD_URL}}, Условие выполнения - step5.

Битрикс24 перенос облака в коробку REST API
  • Загрузить файл на диск в Хранилище группы

Используем API-запрос POST-методом с указанием URL: /disk.storage.uploadfile.

Тело запроса:

{ "id": {{source.int6551.step6.result.0.ID}}, "fileContent": ["file", "{{step8|get_http_content()|base64_encode()}}"], "data": {"NAME": "{{step7.result.NAME|default()}}"}, "generateUniqueName": true }

Условие выполнения - step5.

Битрикс24 перенос облака в коробку REST API
  • Закрепить файл или нет

Используем инструмент "Если-Иначе", название поля - step5, Условие - "ЧислоРавно", Сравниваемое значение - 1, Результат при успешной проверке - n{{step9.result.ID|default()}}, результат при неуспешной проверке - {{step9.result.ID|default()}}.

Битрикс24 перенос облака в коробку REST API

2.3.3. Шаг 3: Куда

Куда отправляем данные - Битрикс24, Какое действие совершаем - "Задача - добавить комментарий", указываем пользователя, от чьего имени будут добавлены комментарии.

Битрикс24 перенос облака в коробку REST API

2.3.4. Шаг 4: Сопоставление данных

Настраиваем сопоставление:

ID задачи - {{source.int6551.result.result.task.id}} ​ Текст комментария - от: {{step2.AUTHOR_NAME}} {{step4}}

И пользовательское сопоставление:

Файл в комментарий Тип: Тело Название параметра: fields.UF_FORUM_MESSAGE_DOC.0 Значение параметра: {{step10}}
Битрикс24 перенос облака в коробку REST API

2.3.5. Шаг 5: Запуск

Запускаем интеграцию.

Битрикс24 перенос облака в коробку REST API

2.4. Интеграция "Задача. Добавить название чек-листа"

2.4.1. Настройка 1 шага выполняется аналогично предыдущей интеграции.

2.4.2. Шаг 2: Инструменты

  • Получить чек-листы Задачи

Используем API-запрос GET-методом с указанием URL: /task.checklistitem.getlist?TASKID={{source.int6551.source.id}}

Битрикс24 перенос облака в коробку REST API
  • Чек-листы есть?

Тип шага - "Проверка", Название поля - step1.result, Условие - "Пустое значение", Действие - "Прервать, если проверка пройдена".

Битрикс24 перенос облака в коробку REST API
  • Отфильтровать заголовок чек-листа

Инструмент - фильтр элементов массива, Название поля - step1.result, Название поля внутри элемента массива - PARENT_ID, Условие - ЧислоРавно.

Битрикс24 перенос облака в коробку REST API
  • Для каждого заголовка чек-листа

Тип шага - "Для каждого", Название поля - step3.

Битрикс24 перенос облака в коробку REST API

2.4.3. Шаг 3: Куда

Выбираем Битрикс24, действие - "Создать элемент чек-листа", подключаем доступ к коробке.

Битрикс24 перенос облака в коробку REST API

2.4.4. Шаг 4: Сопоставление данных

Сопоставляем данные следующим образом:

ID задачи - {{source.int6551.result.result.task.id|default()}} ​ Название - {{step4.TITLE}} ​ Завершено? (Y/N) - {{step4.IS_COMPLETE}} Важное? (Y/N) - {{step4.IS_IMPORTANT}}

И пользовательское сопоставление:

PARENT_ID Тип: Тело Название параметра: FIELDS.PARENT_ID Значение параметра: 0

2.4.5. Запускаем интеграцию

2.5. Интеграция "Пункты чек-листа"

2.5.1. Шаг 1 аналогичен описанному выше, только интеграцию указываем по чек-листам.

2.5.2. Шаг 2: Инструменты

  • Отфильтровать чек-листы

Используем фильтр элементов массива, Название поля - source.int6690.step1.result, Название поля внутри элемента массива -PARENT_ID, Условие - ЧислоРавно, Сравниваемое значение -source.int6690.step3.0.ID.

Битрикс24 перенос облака в коробку REST API
  • Для каждого пункта

Тип шага - Для каждого, Название поля - step1.

Битрикс24 перенос облака в коробку REST API

2.5.3. Шаг 3: Куда

Выбираем Битрикс24, действие - Создать элемент чек-листа, подключаем доступ к коробке.

2.5.4. Шаг 4: Сопоставление данных

Настраиваем сопоставление:

ID задачи - {{source.int6551.result.result.task.id}} Название - Тест Завершено? (Y/N) - {{step2.IS_COMPLETE}} ​ Важное? (Y/N) - {{step2.IS_IMPORTANT}}

Дополнительное тело запроса:

{ "FIELDS": { "TITLE": "{{step2.TITLE}}" } }

Пользовательское сопоставление:

PARENT_ID Тип: Тело Название параметра: FIELDS.PARENT_ID Значение параметра: {{source.int6690.result.result|default()}} SORT_INDEX Тип: Тело Название параметра: FIELDS.SORT_INDEX Значение параметра: {{step2.SORT_INDEX}}
Битрикс24 перенос облака в коробку REST API

2.5.5. Шаг 5: Запуск

Запускаем интеграцию.

2.6. Интеграция "Учёт рабочего времени"

2.6.1. Шаг 1 аналогичен описанному выше, выбираем самую первую интеграцию.

Битрикс24 перенос облака в коробку REST API

2.6.2. Шаг 2: Инструменты

  • Получить тайминг по задаче

Используем API-запрос GET-методом с указанием URL: /task.elapseditem.getlist?TASKID={{source.int6551.source.id}}

Битрикс24 перенос облака в коробку REST API
  • Для каждого тайминга

Тип шага - Для каждого, Название поля - step1.result.

Битрикс24 перенос облака в коробку REST API
  • Сопоставить пользователей

Используем сопоставление данных по названию поля step2.USER_ID.

Битрикс24 перенос облака в коробку REST API

2.6.3. Шаг 3: Куда

Выбираем Битрикс24, действие - Добавить запись учета времени.

Битрикс24 перенос облака в коробку REST API

2.6.4. Шаг 4: Сопоставление данных

Сопоставляем данные:

Идентификатор задачи - {{source.int6551.result.result.task.id|default()}}​ Длительность (секунд) - {{step2.SECONDS}} ​ Комментарий - {{step2.COMMENT_TEXT}} ​ Пользователь - {{step3}} ​ Время создания - {{step2.CREATED_DATE}}
Битрикс24 перенос облака в коробку REST API

2.6.5. Запускаем.

3. Итог

Так же переносятся контакты, компании, сделки и другие нужные сущности из облака Битрикс24 в коробку с сохранением связей между сущностями.

Регистрируйтесь по ссылке: https://lk.pinkit.io/register в личном кабинете Пинкит и тестируйте интеграции переноса облака в коробку самостоятельно по нашей инструкции или с нашей помощью.
Алексей Окара, основатель Пинол и продакт-менеджер Пинкит
Битрикс24 перенос облака в коробку REST API
22
Начать дискуссию