Публичные кейсы уменьшения ручного труда с помощью Пинкит, интеграции между разными веб-сервисами и опыт наших клиентов.
Давайте продолжим наше знакомство с настройками интеграции МойСклад и Битрикс24 (начало здесь).
Сегодня расскажем, как легко подключить еще две интеграции для автоматического обновления заказов в МойСклад — добавляя нужное количество товаров при изменении сделки в Битрикс24.
Вы можете настроить интеграции самостоятельно, следуя простым инструкциям ниже, либо сразу скачать готовые шаблоны по ссылке и адаптировать их под особенности вашего бизнеса.
А если хотите, можно и вовсе настроить всё с нуля — всё подробно расписано для вашего удобства!
1. Обновить заказ в МойСклад и добавить в него нужное количество товаров
Шаг первый: Откуда
Указываем сервис Пинкит и интеграцию, настроенную ранее.
Шаг второй: Инструменты
- Получить товары сделки
Используем API-запрос Методом GET с указанием URL = /crm.deal.productrows.get?id={{source.int12026.source.ID}}
- Для каждого полученного товара
Используем инструмент Для каждого в поле step1.result.
- Преобразовать товар в массив
Используем Преобразование типов данных в поле step2.
- Получить товар подробнее в Битрикс24
Используем API-запрос Методом GET с указанием URL = /crm.product.get?ID={{step2.PRODUCT_ID}}
- Поиск товара в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/product/{{step4.result.PROPERTY_70.value}}
- Собрать массив товаров
Объединяем прогоны.
- Собрать запрос с товаром
Используем Преобразование массива объектов в поле step7.
- Собрать массив товаров для комментария
Используем Преобразование массива объектов в поле step7.
- JSON
Преобразуем массив в JSON в поле step9.
- Убрать сначала [
Используем Замену по регулярному выражению в поле step10.
- Убрать сначала ]
Используем Замену по регулярному выражению в поле step11.
- Убрать сначала "
Используем Замену по регулярному выражению в поле step12.
- Фильтр
Используем Фильтр элементов массива в поле step8. Условие - Существует.
Шаг третий: Куда
Обновляем заказа в МойСклад.
Шаг четвертый: Сопоставление данных
Сопоставляем данные.
ID заказа - {{source.int12026.result.id}}
Позиции товаров
Тип: Тело
Название параметра: positions
Значение параметра: {{step14}}
Статус: Активно
description
Тип: Тело
Название параметра: description
Значение параметра: {{step13}}
Статус: Активно
Шаг пятый: Запуск
Запускаем.
2. Битрикс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. Условие*Пустое значение, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → ищем в МойСклад по 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_*****. Условие*(Число) Равно.
2.2.4. «Склад»
- Сопоставление ID склада
Используем Сопоставление данных в поле source.UF_CRM_*****.
- Получить список складов в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/store.
- Найти нужный склад из списка
Используем Фильтр элементов массива в поле step19.rows. Условие*(Текст) Полностью совпадает, Сравниваемое значение = step18.
2.2.5. «План. дата отгрузки» (доп. поле)
- «План. дата отгрузки» (доп. поле)
Используем Форматирование даты/времени в поле source.UF_CRM_*****. Условие выполнения - source.UF_CRM_*****.
2.2.6. «Проект» (системное поле)
- Проект
Используем Сопоставление данных в поле 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.
Шаг третий: Куда
Обновляем заказ в МойСКлад.
Шаг четвертый: Сопоставление данных
Сопоставляем данные:
ID заказа - {{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-9109-f8fc000be52d",
"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-9109-f8fc000a26fe",
"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-0e3e-002590a28eca",
"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-0a80-04cc0016a753",
"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-912f-f3d4001e99af",
"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-0a80-003500266be0",
"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-0a80-0197000f2af1",
"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-0a80-07480016ebe0",
"type": "attributemetadata",
"mediaType": "application/json"
},
"type": "customentity",
"value": {
"meta": {
"href": "{{step35.0.meta.href}}",
"type": "customentity",
"mediaType": "application/json"
}
}
}
]
}
Шаг пятый: Запуск
Запускаем.
Итог
Мы подробно рассказали, как подключить ещё две интеграции для автоматического обновления заказа в МойСклад — добавляя нужное количество товаров при изменении сделки в Битрикс24.
Напомним, что эти две интеграции — часть из девяти, которые использует один из наших клиентов, занимающийся продажей товаров.
В его бизнесе МойСклад помогает эффективно управлять заказами и складом, а Битрикс24 — вести сделки и контролировать процесс продаж.
Вы можете просто скачать готовые шаблоны по ссылке и легко адаптировать их под свои уникальные бизнес-процессы.
Либо настроить интеграции с нуля, используя нашу пошаговую инструкцию из статьи.
![]()
Если у вас есть вопросы, пишите нам в Телеграм или WhatsApp, расскажите о вашем бизнес-сценарии, и наши инженеры помогут настроить интеграцию без ручного труда и разработки.
Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно настроить авторизацию, необходимые события и действия без разработки с ограниченным доступом к ним.
Подберите свой шаблон интеграции без регистрации здесь.
Алексей Окара,
продакт-менеджер Пинкит































































