Публичные кейсы уменьшения ручного труда с помощью Пинкит, интеграции между разными веб-сервисами и опыт наших клиентов.
Продолжаем нашу полезную серию статей об интеграции МойСклад и Битрикс24 (если пропустили, начало тут).
Ранее мы уже показали, как автоматически создавать сделки в Битрикс24 при появлении заказа в МойСклад.
Также разобрали два полезных сценария: добавление товаров в сделку и автоматическое связывание контактов — все подробности доступны здесь.
Сегодня расскажем о ещё одном важном шаге — как настроить интеграцию, при которой обновление заказа в МойСклад будет автоматически отражаться в сделке в Битрикс24.
Это позволит вам всегда держать данные в актуальном состоянии без лишних усилий.
Чтобы сделать процесс максимально удобным, мы подготовили готовый шаблон этой интеграции и сделали его доступным для всех.
Просто скачайте шаблон по ссылке, настройте под особенности вашего бизнеса — и вперед!
А если хотите, можно создать интеграцию самостоятельно, следуя подробным инструкциям ниже.
МойСклад: заказ обновлён → Битрикс24: обновить сделку
Шаг первый: Откуда
Получаем данные в МойСклад в момент обновления заказа.
Шаг второй: Инструменты
2.1. Проверяем подходит ли заказ под условия для выгрузки
- Синхронизировать с Битрикс24
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Синхронизировать с Битрикс24.
- Если "Синхронизировать с Битрикс24 = Да", тогда продолжить, иначе прервать
Используем проверку в поле step1.0.value. Условие*(Логическое) Истина, Действие - Продолжить, если проверка пройдена.
- Найти сопоставление с заказом в Битрикс24
Используем Поиск ID соответствующий сущности в поле source.id. Сопоставим заказ и сделку.
- Если заказ не найден, тогда прервать, иначе продолжить
Используем проверку в поле step3. Условие - (Логическое) Истина, Действие - Продолжить, если проверка пройдена.
2.2. Организация
- Какую организацию выбрать при создании заказа
Используем инструмент Если-иначе в поле source.organization.meta.href. Условие*(Текст) Содержит, Сравниваемое значение - api.moysklad.ru/api/remap/1.2/entity/organization/c37b9504-cfe5-11ea-0a80-09ca001feaaa, Результат при успешной проверке = 330, Результат при неуспешной проверке = 331.
2.3. Склад
- Получить список складов в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/store.
- Найти нужный склад в списке
Используем Фильтр элементов массива в поле step6.rows. Условие - (Текст) Содержит, Сравниваемое значение - source.store.meta.href.
- Сопоставить название склада и ID с Битрикс24
Используем Сопоставление данных в поле step7.0.name.
2.4. Проект
- Получить список проектов в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/project.
- Найти нужный Проект из списка
Используем Фильтр элементов массива в поле step9.rows. Условие - (Текст) Содержит, Сравниваемое значение = source.project.meta.href.
- Сопоставить название проекта и ID с Битрикс24
Используем Сопоставление данных в поле step10.0.name.
2.5. Канал продаж
- Получить список Каналов Продаж в МойСклад
Используем API-запрос Методом GET с указанием URL = /entity/saleschannel.
- Найти нужный КаналПродаж из списка
Используем Фильтр элементов массива в поле step12.rows. Условие*(Текст) Содержит, Сравниваемое значение = source.salesChannel.meta.href.
- Сопоставить название Канал Продаж и ID с Битрикс24
Используем Сопоставление данных в поле step13.0.name.
2.6. Заказ оплачен
- Найти в доп.полях "Заказ оплачен"
Используем Фильтр элементов массива в поле source.attributes. Условие - (Текст) Содержит, Сравниваемое значение - Заказ оплачен.
- Сопоставить true и false с Битрикс24
Используем Сопоставление данных в поле step15.0.value. Условие выполнения - step15. Название поля - step15.0.value.
2.7. Сборщик
- Найти в доп.полях "Сборщик"
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Сборщик.
- Найти сотрудника в Битрикс24, по ФИО из МойСклад
Используем Сопоставление данных в поле step17.0.value.name. Условие выполнения - step17.
2.8. Метод оплаты
- Найти в доп.полях "Метод оплаты"
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Метод оплаты.
- Получить список Метод оплаты в МойСклад
Используем Сопоставление данных в поле step19.0.value.name. Условие выполнения - step19. Сопоставляем метод оплаты.
2.9. Получаю все остальные поля, которые не справочники
- Срок резерва
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Срок резерва.
- Имя
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Имя.
- Ярлык заказа
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Ярлык заказа.
2.10. Преобразуем все даты к формату ISO 8601 для Битрикс24
- Дата создания и Плановая дата доставки
Используем Форматирование даты/времени в поле source.created, source.deliveryPlannedMoment.
- Найти доп.поле "Срок резерва"
Используем Фильтр элементов массива в поле source.attributes. Условие*(Текст) Содержит, Сравниваемое значение - Срок резерва.
- Срок резерва
Используем Форматирование даты/времени в поле step25.0.value. Условие выполнения - step25.
2.11. Получаем информацию о контрагенте в МойСклад
- Обрезать ссылку с контрагентом, чтобы дальше его получить через API-запрос
Преобразуем строку в массив в поле source.agent.meta.href.
- Получаем контрагента по полученной ссылке
Используем API-запрос Методом GET с указанием URL = {{step27.1}}.
2.12. Определяем тип контрагента
- Определяем тип контрагента Юр.лицо, ИП, Физ.лицо
Используем Сопоставление данных в поле step28.companyType.
- Если это Юр.лицо ИЛИ ИП, тогда Истина и ищем по ИНН в Битрикс24
Используем сопоставление данных в поле step29.
2.13. Создание контрагента в Битрикс24 если это Юр.лицо или ИП
- → Ищем контрагента по ИНН →
Используем API-запрос Методом GET с указанием URL = /crm.requisite.list?filter[RQ_INN]={{step28.inn}}.
- → Если не нашли → ищем по UID →
Используем инструмент Если-иначе в поле step31.result. Условие*(Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → ищем по UID →
Используем API-запрос Методом GET с указанием URL = /crm.company.list?filter[UF_CRM_UID]={{step28.id}}.
- → Если и по UID нет → создаём компанию →
Используем инструмент Если-иначе в поле step33.result. Условие*(Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → создаём компанию →
Используем API-запрос Методом POST с указанием URL = /crm.company.add. Запрос:
{
"fields": {
"TITLE": "{{step28.name|escape()}}",
"PHONE": [
{
"VALUE": "{{step28.phone|default()}}",
"VALUE_TYPE": "WORK"
}
],
"EMAIL": [
{
"VALUE": "{{step28.email|default()}}",
"VALUE_TYPE": "WORK"
}
],
"COMMENTS": "{{step28.description|default()}}",
"UF_CRM_UID": "{{step28.id}}"
}
}
- → для созданной компании добавляем реквизиты→
Используем API-запрос Методом POST с указанием URL = /crm.requisite.add. Запрос:
{
"fields": {
"NAME": "{{step28.name|escape()}}",
"ENTITY_TYPE_ID": 4,
"ENTITY_ID": "{{step35.result}}",
"PRESET_ID": "{{step29}}",
"RQ_COMPANY_FULL_NAME": "{{step28.legalTitle|escape()}}",
"RQ_COMPANY_NAME": "{{step28.name|escape()}}",
"RQ_EMAIL": "{{step28.email|default()}}",
"RQ_PHONE": "{{step28.phone|default()}}",
"RQ_INN": "{{step28.inn|default()}}",
"RQ_KPP": "{{step28.kpp|default()}}",
"RQ_OGRN": "{{step28.ogrn|default()}}",
"RQ_OKPO": "{{step28.okpo|default()}}"
}
}
- → добавляем к реквизитам адрес
Используем API-запрос Методом POST с указанием URL = /crm.address.add. Запрос:
{
"fields": {
"TYPE_ID": 6,
"ENTITY_TYPE_ID": 8,
"ENTITY_ID": "{{step36.result}}",
"ADDRESS_1": "{{step28.legalAddress}}"
}
}
2.14. Если мы создали новую компанию или нашли старую, определяем какой ID берем
- Преобразовать созданную компанию в Массив
Используем Преобразование типов данных в поле step35.result|default().
- Преобразовать найденную компанию по ИНН в Массив
Используем Преобразование массива объектов в поле step31.result.
- Преобразовать найденную компанию по UID в Массив
Используем Преобразование массива объектов в поле step33.result.
- Объединить все найденные ID и взять 1й
Используем Объединение массивов. Условие выполнения step30.
step38
step39
step40
2.15. Создание контакта в Битрикс24, если это физик в МС
- Если это физ.лицо, тогда начать поиск контакта в Битрикс24
Используем Если-иначе в поле step28.companyType. Условие*(Текст) Содержит, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → ищем контакт по email →
Используем API-запрос Методом GET с указанием URL = /crm.contact.list?filter[EMAIL]={{step28.email}}.
- → ЕслиEmail нет → ищем по Phone →
Используем Если-иначе в поле step43.result. Условие*(Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → закодировать + у телефона если он есть→
Используем замену по регулярному выражению в поле step28.phone. Строка для замены %2B.
- → ищем контакт по phone→
Используем API-запрос Методом GET с указанием URL = /crm.contact.list?filter[PHONE]={{step45}}.
- → Если по Email и Phone нет → ищем по UID →
Используем Если-иначе в поле step46.result. Условие*(Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → ищем контакт по UID→
Используем API-запрос Методом GET с указанием URL = /crm.contact.list?filter[UF_CRM_CONT_UID]={{step28.id}}
- → Если и по UID нет → создаём контакт →
Используем Если-иначе в поле step48.result. Условие*(Логическое) Ложь, Результат при успешной проверке = 1, Результат при неуспешной проверке = 0.
- → создаём контакт
Используем API-запрос Методом POST с указанием URL = /crm.contact.add. Запрос:
{
"fields": {
"NAME": "{{step28.name|escape()}}",
"PHONE": [
{
"VALUE": "{{step28.phone|default()}}",
"VALUE_TYPE": "WORK"
}
],
"EMAIL": [
{
"VALUE": "{{step28.email|default()}}",
"VALUE_TYPE": "WORK"
}
],
"COMMENTS": "{{step28.description|default()}}",
"UF_CRM_UID": "{{step28.id}}"
}
}
- → для созданного контакта добавляем реквизиты→
Используем API-запрос Методом POST с указанием URL = /crm.requisite.add. Запрос:
{
"fields": {
"NAME": "{{step28.name|escape()}}",
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": "{{step50.result}}",
"PRESET_ID": "{{step29}}",
"RQ_EMAIL": "{{step28.email|default()}}",
"RQ_PHONE": "{{step28.phone|default()}}"
}
}
- добавляем к реквизитам адрес
Используем API-запрос Методом POST с указанием URL = /crm.address.add. Запрос:
{
"fields": {
"TYPE_ID": 1,
"ENTITY_TYPE_ID": 8,
"ENTITY_ID": "{{step51.result}}",
"ADDRESS_1": "{{step28.legalAddress}}"
}
}
2.16. Если мы создали новый контакт или нашли старый, определяем какой ID берем
- Преобразовать созданный контакт в Массив
Используем Преобразование типов данных в поле step50.result|default().
- Преобразовать найденные результаты в 1
Используем Преобразование массива объектов в поле step43.result, step46.result, step48.result.
- Склеить полученный массив ID и убрать дубликаты ID
Используем Объединение массивов:
step53
step54.step43_result
step54.step46_result
step54.step48_result
2.17. Сопоставление пользователей
- Обрезать ссылку на ответственного сотрудника
Преобразуем строку в массив в поле source.owner.meta.href.
- Получить подробно сотрудника из МойСклад
Используем API-запрос Методом GET с указанием URL = {{step56.1}}.
- Сопоставить сотрудника по ФИО
Используем Сопоставление данных по полю step57.shortFio.
Шаг третий: Куда
Обновляем сделку в Битрикс24.
Шаг четвертый: Сопоставление данных
Сопоставляем данные:
Номер заказа МС
Тип: Тело
Название параметра: fields.UF_CRM_******
Значение параметра: {{source.name|default()}}
Статус: Активно
Дата заказа МС
Тип: Тело
Название параметра: fields.UF_CRM_******
Значение параметра: {{source.created|date(c)}}
Статус: Активно
Организация
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step5|default()}}
Статус: Активно
Склад
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step8|default()}}
Статус: Активно
Адрес (тип адрес)
Тип: Тело
Название параметра: fields.UF_CRM_****
Значение параметра: {{source.shipmentAddressFull.addInfo|default()}}
Статус: Активно
Комментарий для доставки
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{source.shipmentAddressFull.comment|default()}}
Статус: Активно
План. дата отгрузки
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step24.source_deliveryPlannedMoment|default()}}
Статус: Активно
Проект
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step11|default()}}
Статус: Активно
Канал продаж
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step14|default()}}
Статус: Активно
Срок резерва
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step26|default()}}
Статус: Активно
Заказ оплачен
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step16|default()}}
Статус: Активно
Имя
Тип: Тело
Название параметра: fields.UF_CRM_******
Значение параметра: {{step22.0.value|default()}}
Статус: Активно
Сборщик
Тип: Тело
Название параметра: fields.UF_CRM_****
Значение параметра: {{step18|default()}}
Статус: Активно
Ссылка на фото
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step23.0.value|default()}}
Статус: Активно
Метод оплаты
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: {{step20|default()}}
Статус: Активно
Ответственный
Тип: Тело
Название параметра: fields.ASSIGNED_BY_ID
Значение параметра: {{step58}}
Статус: Активно
Заказа создан Битрикс24/МС
Тип: Тело
Название параметра: fields.UF_CRM_*****
Значение параметра: 2004
Статус: Активно
Идентификатор МойСклад
Тип: Тело
Название параметра: fields.UF_CRM_DEAL_UID
Значение параметра: {{ID товара}}
Статус: Активно
Шаг пятый: Запуск
Запускаем.
Итог
В статье мы разобрали, как настроить интеграцию в Пинкит, чтобы автоматически обновлялись сделки в Битрикс24 при обновлении заказа в МойСклад.
Напоминаем, что одна из 9 интеграций из кейса нашего заказчика, который занимается продажей товаров. МойСклад используется для управления заказами и складом, а Битрикс24 — для ведения сделок.
Вы можете просто установить шаблоны по ссылке и донастроить их под свои бизнес-процессы или настроить интеграции с нуля по инструкции, которую мы привели в статье.
![]()
Если у вас есть вопросы, пишите нам в Телеграм или WhatsApp, расскажите о вашем бизнес-сценарии, и наши инженеры помогут настроить интеграцию без ручного труда и разработки.
Если вам нужна интеграция с сервисом, которого в Пинкит нет, или приватное событие/действие, через Пинкитбилдер вы можете самостоятельно настроить авторизацию, необходимые события и действия без разработки с ограниченным доступом к ним.
Подберите свой шаблон интеграции без регистрации здесь.
Алексей Окара,
продакт-менеджер Пинкит
|
Павел Филатов
|
|
Сервис – это незаменимый инструмент для обмена данными с внешними web-сервисами.
Самые востребованные интеграции по API: Google Sheets, Unisender, СберБанк, HH.ru, Контур.Фокус, GetCourse, Банки, iiko. |
|
Павел Филатов
|
|
А вы уже смотрели наш раздел ""? Здесь мы регулярно публикуем полезные материалы по работе с CRM.
|
|
Павел Филатов
|
|
Для тех, кто идет в ногу со временем, мы проводим регулярные
Если у Вас есть вопросы по настройке, по функционалу или вы просто хотите быть в курсе новых трендов, тогда регистрируйтесь и подключайтесь к нашим вебинарам. Для вас всегда интересные спикеры, разбор задач на примере реальных кейсов, а также подарки самым активным |
































































