Добавить в корзинуПозвонить
Найти в Дзене

МойСклад: заказ создан → Битрикс24: назначить товары и привязать контакты в сделку

Продолжаем серию статей на тему интеграции МойСклад и Битрикс24 (начало здесь). Как автоматически создавать сделки в Битрикс24, если в МойСклад создан заказ, мы рассмотрели в этой статье. Сегодня разберем еще 2 сценария интеграции: когда создается заказ в МойСклад → в Битрикс24 добавить (назначить) товары в сделку и привязать остаточные контакты (для юридических лиц). Для вашего удобства мы добавили шаблон данных интеграций в публичный доступ. Вы можете просто установить шаблоны по ссылке и донастроить их под свои бизнес-процессы или настроить интеграции с нуля по описанию ниже. Указываем Пинкит и интеграцию, настроенную ранее. 1.2. Шаг 2: Инструменты 1.2.1. Получаем информацию о товарных позициях Получить Meta ссылку на позиции товара Преобразуем строку в массив в поле source.int11996.source.positions.meta.href. Используем API-запрос Методом GET с указанием URL = {{step1.1}} Используем инструмент Для каждого в поле step2.rows. Используем преобразование массивов данных в поле step3. Пр
Оглавление

Продолжаем серию статей на тему интеграции МойСклад и Битрикс24 (начало здесь). Как автоматически создавать сделки в Битрикс24, если в МойСклад создан заказ, мы рассмотрели в этой статье. Сегодня разберем еще 2 сценария интеграции: когда создается заказ в МойСклад → в Битрикс24 добавить (назначить) товары в сделку и привязать остаточные контакты (для юридических лиц).

Для вашего удобства мы добавили шаблон данных интеграций в публичный доступ. Вы можете просто установить шаблоны по ссылке и донастроить их под свои бизнес-процессы или настроить интеграции с нуля по описанию ниже.

1. Сделка - назначить товары

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

Указываем Пинкит и интеграцию, настроенную ранее.

-2

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

1.2.1. Получаем информацию о товарных позициях

Получить Meta ссылку на позиции товара

Преобразуем строку в массив в поле source.int11996.source.positions.meta.href.

-3
  • Получаем позиции товара (Пока зашита конкретная ссылка)

Используем API-запрос Методом GET с указанием URL = {{step1.1}}

-4
  • Для каждого товара из заказа

Используем инструмент Для каждого в поле step2.rows.

-5
  • Сделать одиночный товар снова массивом

Используем преобразование массивов данных в поле step3.

-6
  • Получить Meta ссылку на развернутую информацию о товаре

Преобразуем строку в массив в поле step3.assortment.meta.href.

-7
  • Получаем развернутую информацию о товарной позиции на стороне МойСклад

Используем API-запрос Методом GET с указанием URL = {{step5.1}}.

-8

1.2.2. Создание товара при необходимости

  • Ищем товар в Битрикс24 по идентификатору МойСклад

Используем API-запрос Методом GET с указанием URL = /crm.product.list?filter[PROPERTY_70]={{step6.id}}.

-9
  • Если товар по UID не найден, тогда готовимся к созданию товара

Используем инструмент Если-Иначе в поле step7.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при успешной проверке = 0.

-10
  • Товар был по 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}}"
}
}

-11
  • Выбрать новый товар или уже существующий

Используем инструмент Если-Иначе в поле step10.result.Условие*(Логическое) Истина, Результат при успешной проверке = {{step10.result}}, Результат при неуспешной проверке = {{step7.result.0.ID}}.

-12
  • Собрать массив товаров

Объединяем прогоны.

-13
  • Подогнать массив с товаром в нужный формат

Используем Преобразование массива объектов в поле step12.

-14
  • Фильтр

Используем Фильтр элементов массива в поле step13. Условие - Существует.

-15

1.3. Шаг 3: Куда

Назначаем товары сделке.

-16

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

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

ID сделки - {{source.int11996.result.result}}

Массив товаров - {{step14}}

-17

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

Запускаем.

-18

2. Привязать остаточные контакты, если это юридическое лицо

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

Указываем Пинкит и интеграцию, настроенную ранее.

-19

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

1.2.1. Проверяем это ФЛ или ЮЛ

  • Если это физ.лицо, тогда СТОП

Используем проверку в поле source.int11996.stepstepstep30. Условие*(Число) Равно, Сравниваемое значение = 3, Действие - Прервать, если проверка пройдена.

-20

2.2.2. Получаем список привязанных контактов

  • Получить ссылку на привязанных контрагентов

Преобразуем строку в массив в поле source.int11996.step28.contactpersons.meta.href.

-21
  • Получить список

Используем API-запрос Методом GET с указанием URL ={{step2.1}}.

-22
  • Если массив привязанных контактов пустой, тогда прервать

Используем проверку по полю step3.rows. Условие - Пустое значение, Действие - Прервать, если проверка пройдена.

-23

2.2.3. Перебор контактов

  • Для каждого контакта

Используем инструмент Для каждого в поле step3.rows.

-24
  • Превратить контакт обратно в одиночный массив

Используем Преобразование типов данных в поле step5. Тип данных - Массив.

-25

→ ищем контакт по UID→

Используем API-запрос Методом GET с указанием URL =/crm.contact.list?filter[UF_CRM_CONT_UID]={{step6.0.id}}.

-26

→ Если по UID нет → ищем по Email и Phone

Используем инструмент Если-Иначе в поле step7.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.

-27

Если поле Email существует, тогда искать по Email

Используем инструмент Если-Иначе в поле step6.0.email. Условие - существует, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.

-28

→ ищем контакт по email →

Используем API-запрос Методом GET с указанием URL =/crm.contact.list?filter[EMAIL]={{step6.0.email}}.

-29

→ Если по Email и UID нет → ищем по Phone

Используем инструмент Если-Иначе в поле step10.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.

-30
  • Если поле Телефон существует, тогда искать по Телефону

Используем инструмент Если-Иначе в поле step6.0.phone. Условие - Существует, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.

-31

→ закодировать + у телефона если он есть→

Используем Замену по регулярному выражению. Условие выполнения = step12, Название поля - step6.0.phone.

-32

→ ищем контакт по phone→

Используем API-запрос Методом GET с указанием URL = /crm.contact.list?filter[PHONE]={{step13}}.

-33

→ Если по Email, UID, Телефону нет → создаем контакт

Используем инструмент Если-Иначе в поле step14.result. Условие - (Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.

-34

→ создаём контакт

Используем 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()}}"
}
}

-35

2.2.4. Если мы создали новый контакт или нашли старый, определяем какой ID берем

  • Преобразовать созданный контакт в Массив

Используем Преобразование типов данных в поле step16.result|default().

-36
  • Преобразовать найденные результаты в 1

Используем Преобразование массива объектов в поле step7.result, step10.result, step14.result.

-37
  • Склеить полученный массив ID и убрать дубликаты ID

Используем Объединение массивов для массивов:

step17
step18.step7_result
step18.step10_result
step18.step14_result

-38

2.3. Шаг 3: Куда

Добавляем контакт к сделке.

-39

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

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

Идентификатор сделки - {{source.int11996.result.result}}

Идентификатор контакта - {{step19.0}}

-40

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

Запускаем.

-41

3. Итог

В статье мы разобрали, как можно настроить интеграции в Пинкит, которые автоматически будут привязывать (назначать) товары в сделки Битрикс24 и привязать к ним остаточные контакты, если был создан заказ в МойСклад.

Напоминаем, что две из 9 интеграций из кейса нашего заказчика, который занимается продажей товаров. МойСклад используется для управления заказами и складом, а Битрикс24 — для ведения сделок.

Вы можете просто установить шаблоны по ссылке и донастроить их под свои бизнес-процессы или настроить интеграции с нуля по инструкции, которую мы привели в статье.

Возникли сложности с настройкой? Напишите нам в Телеграм или WhatsApp, расскажите о вашем бизнес-сценарии. Эксперты Пинкит помогут настроить интеграцию без разработки (настроим первую интеграцию бесплатно).

Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно добавить авторизацию, необходимые события и действия без разработки.
Подберите свой шаблон интеграции без регистрации здесь.
Алексей Окара, продакт-менеджер Пинкит