Что делает
Выгружает контакты и из 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.
Массовое обновление
Переносит тысячи сделок CRM на новую стадию через BatchByChunkV2 — автоматическое разбиение на чанки, обработка частичных ошибок и одна строка прогресса.
Файлы Диска
Список хранилищ и содержимого папок, создание подпапок, просмотр файлов. Загрузка файлов (multipart) намеренно вне области.