Продолжаем серию статей на тему интеграции МойСклад и Битрикс24 (начало здесь). Как автоматически создавать сделки в Битрикс24, если в МойСклад создан заказ, мы рассмотрели в этой статье. Сегодня разберем еще 2 сценария интеграции: когда создается заказ в МойСклад → в Битрикс24 добавить (назначить) товары в сделку и привязать остаточные контакты (для юридических лиц).
Для вашего удобства мы добавили шаблон данных интеграций в публичный доступ. Вы можете просто установить шаблоны по ссылке и донастроить их под свои бизнес-процессы или настроить интеграции с нуля по описанию ниже.
1. Сделка - назначить товары
1.1. Шаг 1: Откуда
Указываем Пинкит и интеграцию, настроенную ранее.
1.2. Шаг 2: Инструменты
1.2.1. Получаем информацию о товарных позициях
Получить Meta ссылку на позиции товара
Преобразуем строку в массив в поле source.int11996.source.positions.meta.href.
- Получаем позиции товара (Пока зашита конкретная ссылка)
Используем API-запрос Методом GET с указанием URL = {{step1.1}}
- Для каждого товара из заказа
Используем инструмент Для каждого в поле step2.rows.
- Сделать одиночный товар снова массивом
Используем преобразование массивов данных в поле step3.
- Получить Meta ссылку на развернутую информацию о товаре
Преобразуем строку в массив в поле step3.assortment.meta.href.
- Получаем развернутую информацию о товарной позиции на стороне МойСклад
Используем API-запрос Методом GET с указанием URL = {{step5.1}}.
1.2.2. Создание товара при необходимости
- Ищем товар в Битрикс24 по идентификатору МойСклад
Используем API-запрос Методом GET с указанием URL = /crm.product.list?filter[PROPERTY_70]={{step6.id}}.
- Если товар по UID не найден, тогда готовимся к созданию товара
Используем инструмент Если-Иначе в поле step7.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при успешной проверке = 0.
- Товар был по UID не найден, создать товар
Используем API-запрос Методом POST с указанием URL = /catalog.product.add.
Запрос:
{
"fields": {
"name": "{{step6.name|escape()}}",
"code": "{{step6.code|default()}}",
"PROPERTY_70": "{{step6.id|default()}}",
"DETAIL_TEXT": "{{step6.description|escape()}}",
"PROPERTY_82": "{{step6.article|default}}",
"PRICE": "{{step9}}"
}
}
- Выбрать новый товар или уже существующий
Используем инструмент Если-Иначе в поле step10.result.Условие*(Логическое) Истина, Результат при успешной проверке = {{step10.result}}, Результат при неуспешной проверке = {{step7.result.0.ID}}.
- Собрать массив товаров
Объединяем прогоны.
- Подогнать массив с товаром в нужный формат
Используем Преобразование массива объектов в поле step12.
- Фильтр
Используем Фильтр элементов массива в поле step13. Условие - Существует.
1.3. Шаг 3: Куда
Назначаем товары сделке.
1.4. Шаг 4: Сопоставление данных
Сопоставляем данные:
ID сделки - {{source.int11996.result.result}}
Массив товаров - {{step14}}
1.5. Шаг 5: Запуск
Запускаем.
2. Привязать остаточные контакты, если это юридическое лицо
2.1. Шаг 1: Откуда
Указываем Пинкит и интеграцию, настроенную ранее.
2.2. Шаг 2: Инструменты
1.2.1. Проверяем это ФЛ или ЮЛ
- Если это физ.лицо, тогда СТОП
Используем проверку в поле source.int11996.stepstepstep30. Условие*(Число) Равно, Сравниваемое значение = 3, Действие - Прервать, если проверка пройдена.
2.2.2. Получаем список привязанных контактов
- Получить ссылку на привязанных контрагентов
Преобразуем строку в массив в поле source.int11996.step28.contactpersons.meta.href.
- Получить список
Используем API-запрос Методом GET с указанием URL ={{step2.1}}.
- Если массив привязанных контактов пустой, тогда прервать
Используем проверку по полю step3.rows. Условие - Пустое значение, Действие - Прервать, если проверка пройдена.
2.2.3. Перебор контактов
- Для каждого контакта
Используем инструмент Для каждого в поле step3.rows.
- Превратить контакт обратно в одиночный массив
Используем Преобразование типов данных в поле step5. Тип данных - Массив.
→ ищем контакт по UID→
Используем API-запрос Методом GET с указанием URL =/crm.contact.list?filter[UF_CRM_CONT_UID]={{step6.0.id}}.
→ Если по UID нет → ищем по Email и Phone
Используем инструмент Если-Иначе в поле step7.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
Если поле Email существует, тогда искать по Email
Используем инструмент Если-Иначе в поле step6.0.email. Условие - существует, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
→ ищем контакт по email →
Используем API-запрос Методом GET с указанием URL =/crm.contact.list?filter[EMAIL]={{step6.0.email}}.
→ Если по Email и UID нет → ищем по Phone
Используем инструмент Если-Иначе в поле step10.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- Если поле Телефон существует, тогда искать по Телефону
Используем инструмент Если-Иначе в поле step6.0.phone. Условие - Существует, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
→ закодировать + у телефона если он есть→
Используем Замену по регулярному выражению. Условие выполнения = step12, Название поля - step6.0.phone.
→ ищем контакт по phone→
Используем API-запрос Методом GET с указанием URL = /crm.contact.list?filter[PHONE]={{step13}}.
→ Если по Email, UID, Телефону нет → создаем контакт
Используем инструмент Если-Иначе в поле step14.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
→ создаём контакт
Используем API-запрос Методом POST с указанием URL = /crm.contact.add.
Запрос:
{
"fields": {
"NAME": "{{step6.0.name|escape()}}",
"PHONE": [
{
"VALUE": "{{step6.0.phone|default()}}",
"VALUE_TYPE": "WORK"
}
],
"EMAIL": [
{
"VALUE": "{{step6.0.email|default()}}",
"VALUE_TYPE": "WORK"
}
],
"UF_CRM_UID": "{{step6.0.id}",
"COMPANY_ID": "{{source.int11996.step41.0|default()}}"
}
}
2.2.4. Если мы создали новый контакт или нашли старый, определяем какой ID берем
- Преобразовать созданный контакт в Массив
Используем Преобразование типов данных в поле step16.result|default().
- Преобразовать найденные результаты в 1
Используем Преобразование массива объектов в поле step7.result, step10.result, step14.result.
- Склеить полученный массив ID и убрать дубликаты ID
Используем Объединение массивов для массивов:
step17
step18.step7_result
step18.step10_result
step18.step14_result
2.3. Шаг 3: Куда
Добавляем контакт к сделке.
2.4. Шаг 4: Сопоставление данных
Сопоставляем данные:
Идентификатор сделки - {{source.int11996.result.result}}
Идентификатор контакта - {{step19.0}}
2.5. Шаг 5: Запуск
Запускаем.
3. Итог
В статье мы разобрали, как можно настроить интеграции в Пинкит, которые автоматически будут привязывать (назначать) товары в сделки Битрикс24 и привязать к ним остаточные контакты, если был создан заказ в МойСклад.
Напоминаем, что две из 9 интеграций из кейса нашего заказчика, который занимается продажей товаров. МойСклад используется для управления заказами и складом, а Битрикс24 — для ведения сделок.
Вы можете просто установить шаблоны по ссылке и донастроить их под свои бизнес-процессы или настроить интеграции с нуля по инструкции, которую мы привели в статье.
Возникли сложности с настройкой? Напишите нам в Телеграм или WhatsApp, расскажите о вашем бизнес-сценарии. Эксперты Пинкит помогут настроить интеграцию без разработки (настроим первую интеграцию бесплатно).
Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно добавить авторизацию, необходимые события и действия без разработки.
Подберите свой шаблон интеграции без регистрации здесь.
Алексей Окара, продакт-менеджер Пинкит