Синхронизация контактов с ERP / 1С

Двусторонняя синхронизация контактов между Bitrix24 и внешней ERP. Сопоставление по ИНН (основное) или email (запасное). Cron каждый час.

Что делает

Выгружает контакты и из Bitrix24 (через actions.v2.fetchList.make), и из внешней ERP (в рецепте замокано — замените своим клиентом). Сопоставляет их по налоговому id (ufCrmInn) в первую очередь и по email как запасной вариант. Создаёт недостающие записи с каждой стороны и синхронизирует изменённые поля имени обратно в Bitrix24.

Стек

Node.js 18+, node-cron.

Установка

pnpm add node-cron

Переменные окружения

export B24_HOOK='https://your.bitrix24.com/rest/1/secret'

Запуск

npx tsx 04-erp-sync.ts

Исходник

skills/b24jssdk-recipes/examples/04-erp-sync.ts.

Примечания

  • Функции на стороне ERP (fetchErpContacts, createErpContact, updateErpContact) — заглушки. Подключите свой клиент (1С OData, REST и т.д.).
  • Ключ сопоставления — ufCrmInn; подгоните имя поля под пространство имён ваших пользовательских полей.
  • Для тысяч контактов узкое место — построчный цикл с await createBitrixContact. Замените его на actions.v2.batchByChunk.make({ calls: erpContacts.map((e) => ['crm.item.add', { entityTypeId: 3, fields: ... }]), options: { isHaltOnError: false } }) — базовую форму batch.make см. в рецепте 5 (Файлы Диска), а детали batchByChunk.make — в скиле b24jssdk-rest.