Налаштування обміну взаєморозрахунками 1С та 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування обміну взаєморозрахунками 1С та 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування обміну взаєморозрахунками 1С і 1С-Бітрікс

Взаєморозрахунки в особистому кабінеті клієнта — функціональність, затребувана в B2B інтернет-магазинах і оптових порталах. Покупець має бачити поточний борг перед постачальником, історію платежів, заборгованість за конкретними замовленнями. Всі ці дані зберігаються в 1С — і їх потрібно передавати в 1С-Бітрікс.

Дані взаєморозрахунків: що зберігається в 1С

У 1С (УТ, КА, ERP, БП) взаєморозрахунки з контрагентами зберігаються в регістрі накопичення ВзаєморозрахункиЗКонтрагентами. Ключові дані:

  • Поточна дебіторська заборгованість — скільки контрагент винен організації
  • Кредиторська заборгованість — якщо організація винна контрагенту (переплата, повернення)
  • Прострочена заборгованість — заборгованість понад кредитний ліміт або строк
  • Історія платежів — коли і скільки платив
  • Документи-підстави — рахунки, замовлення, за якими є заборгованість

Стандартний CommerceML-обмін не передає взаєморозрахунки. Це потрібно реалізовувати окремо.

Архітектура рішення

Для передачі взаєморозрахунків у 1С-Бітрікс використовується один із двох підходів:

Підхід 1: HTTP-сервіс 1С. У 1С створюється HTTP-сервіс, який за запитом повертає взаєморозрахунки по конкретному контрагенту. 1С-Бітрікс викликає цей сервіс при відкритті сторінки «Мій баланс» в особистому кабінеті.

// Запит взаєморозрахунків із 1С-Бітрікс
$response = file_get_contents(
    "https://1c.example.com/ut/hs/balance/get?counterparty_id={$guid}&key={$apiKey}"
);
$balance = json_decode($response, true);

Перевага: дані завжди актуальні. Недолік: залежність від доступності сервера 1С.

Підхід 2: Періодична синхронізація. Регламентне завдання в 1С формує файл із даними взаєморозрахунків і передає в 1С-Бітрікс (через FTP, API або прямий запит до скрипту). 1С-Бітрікс зберігає дані у своїй БД і показує клієнту.

Перевага: незалежність від доступності 1С у момент завантаження сторінки. Недолік: дані із затримкою (рівною інтервалу синхронізації, зазвичай 30–60 хвилин).

Реалізація в 1С-Бітрікс: структура даних

Для зберігання взаєморозрахунків у 1С-Бітрікс рекомендую створити HighloadBlock — наприклад, ContractorBalance:

Поле Тип Опис
UF_CONTRACTOR_XML_ID Рядок GUID контрагента в 1С
UF_BITRIX_USER_ID Ціле ID користувача 1С-Бітрікс
UF_DEBT Decimal Поточний борг
UF_OVERDUE_DEBT Decimal Прострочений борг
UF_CREDIT_LIMIT Decimal Кредитний ліміт
UF_LAST_PAYMENT_DATE Дата Дата останнього платежу
UF_LAST_PAYMENT_SUM Decimal Сума останнього платежу
UF_UPDATED_AT Datetime Час останнього оновлення

Для історії платежів — окремий HighloadBlock ContractorPayments із записами по кожному платежу.

Прив'язка контрагента до користувача 1С-Бітрікс

Головне технічне завдання: знати, який користувач 1С-Бітрікс відповідає якому контрагенту в 1С. Варіанти:

  1. За XML_ID користувача. При реєстрації на сайті створюється контрагент у 1С (через REST API), його GUID зберігається в профілі користувача 1С-Бітрікс (поле UF_1C_CONTRACTOR_ID).

  2. За ІПН. Користувач при реєстрації вводить ІПН, система шукає контрагента в 1С за ІПН.

  3. Ручне зіставлення. Адміністратор у 1С-Бітрікс вручну прив'язує користувача до контрагента. Підходить для B2B з невеликою кількістю клієнтів.

Кредитний ліміт і заборона замовлення

Популярний сценарій: якщо у контрагента є прострочена заборгованість — забороняти оформлення нових замовлень на сайті. Або: якщо борг перевищує кредитний ліміт — показувати попередження.

Реалізація через подію 1С-Бітрікс OnSaleOrderBeforeSaved:

AddEventHandler('sale', 'OnSaleOrderBeforeSaved', 'checkDebtLimit');

function checkDebtLimit(\Bitrix\Main\Event $event) {
    $order = $event->getParameter('ENTITY');
    $userId = $order->getUserId();
    $debt = getContractorDebt($userId);
    $limit = getContractorCreditLimit($userId);

    if ($debt['overdue'] > 0) {
        $result = $event->getParameter('RESULT');
        $result->addError(new \Bitrix\Main\Error(
            'Оформлення замовлення недоступне: є прострочена заборгованість'
        ));
    }
}

Кейс: оптовий портал будівельних матеріалів

B2B-портал: 300 активних контрагентів, кожен із кредитним лімітом. Завдання: показувати в особистому кабінеті баланс і забороняти замовлення при перевищенні ліміту.

Використали підхід з HTTP-сервісом 1С для отримання поточного боргу в реальному часі. Кешували відповідь на 10 хвилин (Redis). При оформленні замовлення — завжди свіжий запит, без кешу.

Додатково: на сторінці особистого кабінету виводили деталізацію — список відкритих рахунків із сумами та датами оплати. Дані з HighloadBlock, що оновлюється раз на годину.

Результат: менеджери перестали вручну інформувати клієнтів про борги. Клієнти самі бачать заборгованість і самостійно оплачують до оформлення нового замовлення. Кількість дзвінків «чому не можу замовити» скоротилась.