Публичные кейсы уменьшения ручного труда с помощью Пинкит, интеграции между разными веб-сервисами и опыт наших клиентов.
Добро пожаловать в продолжение нашей серии об интеграции МойСклад и Битрикс24!
Если вы пропустили начало — не беда, здесь мы подробно рассказывали, как настроить обновление сделки в Битрикс24 при изменении заказа в МойСклад.
Сегодня же мы шагнем дальше и расскажем, как сделать так, чтобы при обновлении сделки в Битрикс24 автоматически обновлялись товары внутри неё.
Мы также покажем, как обратная интеграция поможет вам создавать заказы в МойСклад прямо из сделок в воронке «Продажи» Битрикс24 — чтобы ваш бизнес работал ещё быстрее и эффективнее.
Настроить интеграцию можно легко и просто — либо следуя нашему подробному гайду ниже, либо воспользовавшись готовыми шаблонами по ссылке и подстроив их под свои нужды.
А если возникнут вопросы — наши эксперты всегда готовы помочь и даже настроить вашу первую интеграцию бесплатно!
1. Интеграция "Сделка - назначить товары"
Рассмотрим, как автоматически обновлять товары в сделке.
Триггер: Сделка обновлена в Битрикс24.
Действие: Синхронизировать товары по UUID.
Шаг первый: Откуда
Указываем Пинкит и интеграцию, настроенную ранее.
Шаг второй: Инструменты
1.2.1. Получаем информацию о товарных позициях
- Получить Meta ссылку на позиции товара
Преобразуем строку в массив в поле source.int12081.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. Создание товара при необходимости
- Выбрать новый товар или уже существующий
Используем инструмент Если-иначе в поле step10.result. Условие - (Логическое) Истина, Результат при успешной проверке = {{step10.result}}, Результат при неуспешной проверке = {{step7.result.0.ID}}.
- Собрать массив товаров
Объединяем прогоны.
Подогнать массив с товаром в нужный формат
Используем Преобразование массива объектов в поле step12.
- Фильтр
Используем Фильтр элементов массива в поле step13.
Шаг третий: Куда
Назначаем товары сделке.
Шаг четвертый: Сопоставление данных
Сопоставляем данные:
ID сделки - {{source.int12081.step3}}
Массив товаров - {{step14}}
Шаг пятый: Запуск
Запускаем.
2. Битрикс24.Продажи = Сделка - создана => Создать заказ в МойСклад
Данная интеграция будет создавать заказ в МойСклад на основе сделки в Битрикс24.
Триггер: Создана сделка в воронке «Продажи» в Битрикс24.
Действие: Создать заказ в МойСклад.
Шаг первый: Откуда
Получаем данные в момент создания сделки в Битрикс24.
Шаг второй: Инструменты
2.2.1. Если есть компания → получаем её реквизиты (ИНН, название, email) → ищем в МойСклад по ИНН → если не нашли, создаём новую компанию
- Сопоставление_Проверяем выгружался ли ранее заказ в МойСклад
Используем Поиск ID соответствующий сущности в поле source.ID.
- Сопоставление_Если заказ ранее выгружался, тогда прервать, иначе продолжить
Используем проверку в поле step38. Условие - (Логическое) Истина, Действие - прервать, если проверка пройдена.
- Если есть компания →
Используем Если-Иначе в поле source.COMPANY_ID. Условие*(Логическое) Истина, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- получаем её реквизиты →
Используем API-запрос Методом GET с указанием URL = /crm.requisite.list?filter[ENTITY_ID]={{source.COMPANY_ID}}.
- получаем её телефон, email →
Используем API-запрос Методом GET с указанием URL = /crm.company.get?ID={{source.COMPANY_ID}}
- → ищем в МойСклад по ИНН →
Используем API-запрос Методом GET с указанием URL = /entity/counterparty?filter=inn~{{step2.result.0.RQ_INN}}.
- → Если компания найдена по ИНН в МойСклад, тогда Ложь, иначе Истина →
Используем Если-иначе в поле step4.rows. Условие*Пустое значение, результат при успешной проверке = 1, результат при успешной проверке = 0.
- Выбрать это ИП или Юр.лицо
Используем Сопоставление данных в поле step2.result.0.PRESET_ID.
- → если не нашли, создаём новую компанию
Используем API-запрос Методом POST с указанием URL = /entity/counterparty
Запрос:
{
"name": "{{step2.result.0.RQ_COMPANY_NAME|escape()}}",
"legalTitle": "{{step2.result.0.RQ_COMPANY_FULL_NAME|escape()}}",
"inn": "{{step2.result.0.RQ_INN}}",
"kpp": "{{step2.result.0.RQ_KPP}}",
"email":"{{step3.result.EMAIL.0.VALUE|default()}}",
"description":"{{step3.result.COMMENTS}}",
"phone":"{{step3.result.PHONE.0.VALUE|default()}}",
"companyType":"{{step6}}"
}
2.2.2. Если нет компании → получаем контакт (ФИО, email, телефон) → ищем в МойСклад по email/телефону → если не нашли, создаём новый контакт
- Если нет компании, проверяем контакт →
Используем Если-иначе по полю source.COMPANY_ID. Условие*(Логическое) Ложь, результат при успешной проверке = 1, результат при неуспешной проверке = 0.
- → получаем контакт (ФИО, email, телефон) →
Используем API-запрос Методом GET с указанием URL =/crm.contact.get?ID={{source.CONTACT_ID}}.
- → ищем в МойСклад по Phone →
Используем API-запрос Методом GET с указанием URL /entity/counterparty?filter=phone~{{step9.result.PHONE.0.VALUE}}
- Если по телефону контакт не найден, тогда продолжить поиск по Email
Используем Если-Иначе в поле step10.rows.
- → ищем в МойСклад по Email →
Используем API-запрос Методом GET с указанием URL = /entity/counterparty?filter=email~{{step9.result.EMAIL.0.VALUE}}
- Если по Email контакт не найден, тогда проверяем был ли найден контакт по Email или Телефон
Используем если-Иначе в поле step12.rows. Условие*Пустое значение, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → если не нашли, создаём новый контакт
Используем API-запрос Методом POST с указанием URL =/entity/counterparty. Запрос:
{
"name": "{{step9.result.NAME|escape()}}",
"email":"{{step9.result.EMAIL.0.VALUE|default()}}",
"description":"{{step9.result.COMMENTS}}",
"phone":"{{step9.result.PHONE.0.VALUE|default()}}",
"companyType":"individual"
}
- Делаем массив ссылок c полученными контрагентами
Используем Преобразование типов данных в поле step7.meta.href|default(), step4.rows.0.meta.href|default(), step10.rows.0.meta.href|default(), step12.rows.0.meta.href|default(), step14.meta.href|default().
- Склеить meta ссылки контрагентов, чтобы оставить только одну
Объединяем массивы:
step15.step7_meta_href|default()
step15.step4_rows_0_meta_href|default()
step15.step10_rows_0_meta_href|default()
step15.step12_rows_0_meta_href|default()
step15.step14_meta_href|default()
2.2.3. «Организация»
- Какую организацию выбрать при создании заказа
Используем Если-Иначе в поле source.UF_CRM_***. Условие*(Число) Равно, Сравниваемое значение = 330.
2.2.4. «Склад»
- Сопоставление ID склада
Используем Сопоставление данных в поле source.UF_CRM_*****.
- Получить список складов в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/store.
- Найти нужный клад из списка
Используем Фильтр элементов массива в поле step19.rows.
2.2.5. «План. дата отгрузки» (системное поле) «План. дата отгрузки» (доп. поле)
- «План. дата отгрузки» (доп. поле)
Используем Форматирование даты/времени в поле source.UF_CRM_*****.
2.2.6. «Проект» (системное поле) «Проект (Pinall)» (доп. поле)
- Проект
Используем Сопоставление данных в поле source.UF_CRM_*****.
- Получить список проектов в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/project
- Найти нужный Проект из списка
Используем Фильтр элементов массива в поле step23.rows. Условие - (Текст) Полностью совпадает, Сравниваемое значение = step22.
2.2.7. «Канал продаж»
- Канал продаж
Используем сопоставление данных в поле source.UF_CRM_*****.
- Получить список Каналов Продаж в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/saleschannel.
- Найти нужный Канал Продаж из списка
Используем Фильтр элементов массива в поле step26.rows. Условие*(Текст) Полностью совпадает, Сравниваемое значение = step25.
2.2.8. «Срок резерва» (доп. поле) и Заказ оплачен
- «Срок резерва» (доп. поле)
Используем Форматирование даты/времени в поле source.UF_CRM_*****.
- Заказ оплачен
Используем Сопоставление данных в поле source.UF_CRM_*****.
2.2.9. Сборщик заказа
- Сборщик заказа
Используем сопоставление данных в поле source.UF_CRM_*****.
- Получить список Сотрудников в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/employee
- Выбрать нужного сборщика из списка МойСклад
Используем Фильтр элементов массива в поле step31.rows. Условие*(Текст) Полностью совпадает, Сравниваемое значение = step30.
2.2.10. Метод оплаты
- Метод оплаты
Используем Сопоставление данных в поле source.UF_CRM_*****.
- Получить список Метод оплаты в МойСклад
Используем API-запрос Методом GET с указанием URL =/entity/customentity/
- Выбрать нужный Метод оплаты из списка
Используем Фильтр элементов массива в поле step34.rows. Условие*(Текст) Содержит, Сравниваемое значение = step33.
2.2.11. Сопоставление сотрудников
- Сотрудники
Используем Сопоставление данных в поле source.ASSIGNED_BY_ID.
- Выбрать нужного сотрудника из списка МойСклад
Используем Фильтр элементов массива в поле step31.rows. Условие - (Текст) Полностью совпадает, Сравниваемое значение = step36.
Шаг третий: Куда
Добавляем заказ в МойСклад.
Шаг четвертый: Сопоставление данных
Сопоставляем данные:
Название заказа покупателя - {{step38}}
Дополнительное тело запроса:
{
"name": "{{source.UF_CRM_**|default()}}",
"created": "{{now|date(Y-m-d H:i:s)}}",
"shared": false,
"applicable": false,
"owner":{
"meta": {
"href": "{{step37.0.meta.href}}",
"metadataHref": "{{step37.0.meta.metadataHref}}",
"type": "{{step37.0.meta.type}}",
"mediaType": "application/json",
"uuidHref": "{{step37.0.meta.uuidHref}}"
}
},
"store": {
"meta": {
"href": "{{step20.0.meta.href}}",
"metadataHref": "{{step20.0.meta.metadataHref}}",
"type": "{{step20.0.meta.type}}",
"mediaType": "application/json",
"uuidHref": "{{step20.0.meta.uuidHref}}"
}
},
"salesChannel": {
"meta": {
"href": "{{step27.0.meta.href}}",
"metadataHref": "{{step27.0.meta.metadataHref}}",
"type": "{{step27.0.meta.type}}",
"mediaType": "application/json",
"uuidHref": "{{step27.0.meta.uuidHref}}"
}
},
"organization": {
"meta": {
"href": "{{step17}}",
"type": "organization",
"mediaType": "application/json"
}
},
"agent": {
"meta": {
"href": "{{step16.0}}",
"type": "counterparty",
"mediaType": "application/json"
}
},
"shipmentAddress": "{{source.UF_CRM_**|default()}}",
"shipmentAddressFull": {
"comment": "{{source.UF_CRM_***|default()}}",
"addInfo":"{{source.UF_CRM_***|default()}}"
},
"deliveryPlannedMoment": "{{step21}}",
"project": {
"meta": {
"href": "{{step24.0.meta.href}}",
"metadataHref": "{{step24.0.meta.metadataHref}}",
"type": "{{step24.0.meta.type}}",
"mediaType": "application/json",
"uuidHref": "{{step24.0.meta.uuidHref}}"
}
},
"attributes": [
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 1346cbba-dc6a-11e8-91...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "time",
"value": "{{step28}}"
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 7d55d84f-7b99-11e8-91...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "boolean",
"value": {{step29|boolean()}}
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 49922556-d517-11e3-0e...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "string",
"value": "{{source.UF_CRM_1600454081|default()}}"
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 37793c78-2225-11ec-0a...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "employee",
"value": {
"meta": {
"href": "{{step32.0.owner.meta.href}}",
"type": "employee",
"mediaType": "application/json"
}
}
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 99abd13c-0254-11e9-91...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "link",
"value": "{{source.UF_CRM_***|default()}}"
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ a82ba1fe-0b1a-11f0-0a...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "link",
"value": "https:// crm.smartoffice-online.ru/crm/deal/details/{{source.ID}} /"
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 27bea58b-f9e6-11ea-0a...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "long",
"value": {{source.ID}}
},
{
"meta": {
"href": "https:// api.moysklad.ru/api/remap/1.2/entity/customerorder/metadata/attributes/ 4f83f12f-e215-11ee-0a...;,
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "customentity",
"value": {
"meta": {
"href": "{{step35.0.meta.href}}",
"type": "customentity",
"mediaType": "application/json"
}
}
}
]
}
Шаг пятый: Запуск
Запускаем.
Итог
Мы подробно рассказали, как настроить интеграцию в Пинкит, чтобы товары в сделке автоматически обновлялись при изменении сделки в Битрикс24.
Благодаря этой настройке все товары в сделке будут синхронизированы по уникальному идентификатору (UUID) — быстро, точно и без лишних хлопот.
Кроме того, мы разобрали обратную интеграцию: как при появлении новой сделки в воронке «Продажи» Битрикс24 автоматически создаётся заказ в МойСклад.
Такой подход значительно упрощает работу и экономит время вашей команды.
Стоит отметить, что эти две интеграции — лишь часть из девяти, которые мы реализовали для одного из наших клиентов, успешно продающего товары.
В их бизнесе МойСклад помогает управлять заказами и складом, а Битрикс24 — контролировать сделки и коммуникации с клиентами.
Вы можете легко стартовать — просто установите готовые шаблоны по ссылке и подстройте их под свои процессы.
Или, если хотите, настройте интеграции с нуля, следуя нашей пошаговой инструкции в статье.
![]()
Если у вас есть вопросы, пишите нам в Телеграм или WhatsApp, расскажите о вашем бизнес-сценарии, и наши инженеры помогут настроить интеграцию без ручного труда и разработки.
Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно настроить авторизацию, необходимые события и действия без разработки с ограниченным доступом к ним.
Подберите свой шаблон интеграции без регистрации здесь.
Алексей Окара,
продакт-менеджер Пинкит
|
Павел Филатов
|
|
Сервис – это незаменимый инструмент для обмена данными с внешними web-сервисами.
Самые востребованные интеграции по API: Google Sheets, Unisender, СберБанк, HH.ru, Контур.Фокус, GetCourse, Банки, iiko. |
|
Павел Филатов
|
|
А вы уже смотрели наш раздел ""? Здесь мы регулярно публикуем полезные материалы по работе с CRM.
|
|
Павел Филатов
|
|
Для тех, кто идет в ногу со временем, мы проводим регулярные
Если у Вас есть вопросы по настройке, по функционалу или вы просто хотите быть в курсе новых трендов, тогда регистрируйтесь и подключайтесь к нашим вебинарам. Для вас всегда интересные спикеры, разбор задач на примере реальных кейсов, а также подарки самым активным. |




























































