Інтеграція Бітрікс24 з 1С-ЕДО
У Бітрікс24 немає вбудованого модуля ЕДО. CRM вміє виставляти рахунки, формувати комерційні пропозиції, але юридично значущий документообіг — УПД, акти, накладні з КЕП — залишається поза системою. Менеджер працює у Бітрікс24, закриває угоду, а бухгалтер паралельно створює документи у 1С-ЕДО. Це розрив: менеджер не бачить статус документів, а бухгалтер не бачить контекст угоди.
Інтеграція Бітрікс24 з 1С-ЕДО закриває цей розрив: статус ЕДО-документів відображається у картці угоди, створення документів автоматизовано за стадіями воронки.
Архітектура інтеграції
Прямого API у 1С-ЕДО немає — він вбудований у 1С-конфігурацію. Тому інтеграція будується через ланцюжок:
Бітрікс24 (угода закрита)
→ Webhook → Middleware-сервіс
→ REST 1С (створити реалізацію)
→ 1С-ЕДО (автовідправка)
→ Оператор ЕДО → Контрагент
→ 1С: статус отримано
→ Middleware: polling 1С статусів
→ Bitrix24 REST API: оновити поле в угоді
Middleware — окремий сервіс (PHP/Node.js/Python), що є клеєм між Bitrix24 REST і 1С REST. Його завдання: трансляція подій і синхронізація даних.
Webhook від Бітрікс24 при зміні стадії
// Middleware: обробник webhook від Бітрікс24
// POST /webhooks/bitrix24/deal-stage
class DealStageWebhookHandler
{
public function handle(array $payload): void
{
$dealId = $payload['data']['FIELDS']['ID'];
$stageId = $payload['data']['FIELDS']['STAGE_ID'];
$prevStage = $payload['data']['FIELDS']['PREVIOUS_STAGE_ID'] ?? '';
// Реагуємо тільки на конкретну стадію (закриття угоди)
if ($stageId !== 'WON' && $stageId !== 'C1:WON') {
return;
}
// Отримуємо дані угоди з Бітрікс24
$deal = $this->b24->call('crm.deal.get', ['ID' => $dealId]);
// Передаємо у 1С
$onecResult = $this->onec->createRealization([
'dealId' => $dealId,
'inn' => $deal['UF_CRM_INN'],
'amount' => $deal['OPPORTUNITY'],
'items' => $this->getDealProducts($dealId),
]);
// Записуємо ID документа у користувацьке поле угоди
$this->b24->call('crm.deal.update', [
'ID' => $dealId,
'FIELDS' => [
'UF_CRM_1S_DOC_ID' => $onecResult['docId'],
'UF_CRM_EDO_STATUS' => 'Очікує відправки',
'UF_CRM_EDO_SENT_DATE' => date('d.m.Y H:i'),
],
]);
}
}
REST-сервіс у 1С для прийому документів
На стороні 1С створюється опублікований HTTP-сервіс:
// У конфігурації 1С:
// Публікація HTTP-сервісу → CreateRealization
// URL: /1c/hs/bitrix/create-realization
Сервіс приймає JSON з параметрами угоди, створює документ «Реалізація товарів та послуг» у 1С, проводить його і ставить у чергу 1С-ЕДО на відправку.
Синхронізація статусів ЕДО назад у Бітрікс24
// Cron: кожні 15 хвилин
class EdoStatusSync
{
public function run(): void
{
// Запитуємо у 1С список документів зі зміненими статусами за останню годину
$changed = $this->onec->getChangedEdoStatuses(
(new DateTime())->modify('-1 hour')
);
foreach ($changed as $doc) {
$dealId = $this->getDealIdByDocId($doc['docId']);
if (!$dealId) continue;
$this->b24->call('crm.deal.update', [
'ID' => $dealId,
'FIELDS' => [
'UF_CRM_EDO_STATUS' => $doc['edoStatus'],
'UF_CRM_EDO_SIGNED' => $doc['signedDate'],
],
]);
// Додаємо запис у лог активності угоди
$this->b24->call('crm.timeline.comment.add', [
'ENTITY_TYPE' => 'deal',
'ENTITY_ID' => $dealId,
'COMMENT' => "ЕДО: статус змінено на «{$doc['edoStatus']}»",
]);
}
}
}
Кейс: інтеграція для IT-аутсорсингової компанії
50 менеджерів, 200–300 закритих угод/місяць, всі — на послуги (акти приймання робіт, рахунки-фактури). Бухгалтер створювала документи вручну у 1С після закриття угод — із затримкою 1–3 дні, з помилками у реквізитах (менеджери не завжди передавали вірні дані контрагента).
Реалізація:
-
У Бітрікс24 додано поля угоди: ІНН, КПП, BoxId ЕДО, тип документа (акт/УПД). Поля заповнюються при роботі з угодою.
-
При переході у стадію «Послуги надано» — webhook → Middleware → REST 1С. У 1С створюється акт, відправляється через 1С-ЕДО.
-
У картці угоди — віджет застосунку Бітрікс24 (React, вбудований через
CRM_DEAL_DETAIL_TAB), що показує статус ЕДО-документів по угоді з кнопкою «Відкрити у 1С». -
При підписанні акта контрагентом — 1С оновлює поле в угоді, угода автоматично переходить у стадію «Закрита. Документи підписано».
| Показник | До | Після |
|---|---|---|
| Затримка створення документа | 1–3 дні | < 30 хвилин |
| Помилки у реквізитах | ~15% угод | < 2% |
| Видимість статусу ЕДО для менеджера | Немає | У картці угоди |
| Час бухгалтера на ЕДО | ~3 год/день | ~30 хвилин (контроль виключень) |
Анулювання та коригування
При скасуванні угоди у Бітрікс24 — webhook на анулювання документа у 1С-ЕДО. Процедура: 1С відправляє пропозицію про анулювання контрагенту, при згоді — документ анулюється на стороні оператора.
if ($stageId === 'LOSE' && !empty($deal['UF_CRM_1S_DOC_ID'])) {
$this->onec->annulDocument($deal['UF_CRM_1S_DOC_ID'], [
'reason' => $deal['COMMENTS'] ?? 'Угоду скасовано',
]);
}
Склад робіт
- Розробка Middleware-сервісу: webhook-обробники, REST-клієнти Б24 і 1С
- Налаштування HTTP-сервісу у 1С
- Налаштування 1С-ЕДО: правила автовідправки, типи документів
- Користувацькі поля угоди у Бітрікс24
- Синхронізація статусів: cron + timeline коментарі
- Віджет у картці угоди (опціонально)
- Тестування на реальних документах
Терміни: базова інтеграція (webhook → 1С → статуси назад) — 4–6 тижнів. З віджетом і обробкою анулювань — 7–10 тижнів.







