Настройка обмена договорами контрагентов 1С и 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка обмена договорами контрагентов 1С и 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка обмена договорами контрагентов 1С и 1С-Битрикс

В B2B интернет-магазинах и оптовых порталах договоры — это не просто документы. Договор определяет: по какой цене работает клиент, какой кредитный лимит, какие условия доставки. Без передачи договоров из 1С в Битрикс сайт не может показать корректные цены и условия для конкретного контрагента.

Роль договора в 1С

В УТ, КА и ERP договор контрагента (ДоговорыКонтрагентов) — ключевой объект ценообразования. С договором связаны:

  • Вид цены — какой прайс применяется к этому клиенту
  • Скидки — персональные скидки или скидки по договору
  • Валюта расчётов
  • Кредитный лимит и срок кредита
  • Условия оплаты (предоплата, постоплата, дней отсрочки)

Если в 1С у клиента 3 действующих договора (например, розничный, оптовый и специальный), на сайте он должен видеть цены по нужному договору и иметь возможность выбрать договор при оформлении заказа.

Передача договоров: архитектура

Стандартный CommerceML не передаёт договоры. Нужна кастомная синхронизация через HTTP-сервис 1С или через файловый обмен.

Минимальный набор данных договора для сайта:

{
  "guid": "a1b2c3d4-1234-...",
  "number": "Д-2024-0015",
  "name": "Договор поставки №15 от 01.03.2024",
  "contractor_guid": "контрагент-guid",
  "price_type_guid": "вид-цены-guid",
  "price_type_name": "Оптовая",
  "credit_limit": 500000,
  "payment_delay_days": 14,
  "currency": "RUB",
  "valid_from": "2024-03-01",
  "valid_to": "2025-03-01",
  "is_active": true
}

В Битрикс договоры хранятся в HighloadBlock ContractorContracts. При открытии каталога — определяется активный договор пользователя, к нему привязывается тип цены в торговом каталоге.

Маппинг договора на цену в Битрикс

Ключевая задача: пользователь с определённым договором должен видеть цены из связанного вида цен.

Реализация:

  1. При авторизации пользователя — определяем его договор(а) из HighloadBlock
  2. Определяем тип цены по договору (price_type_guid → ID типа цены в Битрикс)
  3. Устанавливаем сессионную переменную или пользовательский параметр CURRENT_PRICE_TYPE
  4. Компонент каталога читает эту переменную и выводит цены нужного типа

Если у пользователя несколько договоров — предоставляем выбор в личном кабинете: «Работать по договору №...». Выбор сохраняется в сессии.

Синхронизация договоров: периодичность

Договоры меняются редко — новый договор подписывается раз в год, условия пересматриваются раз в квартал. Достаточно синхронизировать раз в час или даже раз в сутки.

Но есть критичный сценарий: договор расторгнут или истёк — клиент не должен продолжать видеть оптовые цены. Для этого в логику авторизации добавляем проверку valid_to договора. Если дата истекла — переводим пользователя на базовый тип цены.

Договор при оформлении заказа

При передаче заказа из Битрикс в 1С нужно указать договор, по которому выставляется заказ. В XML заказа:

<ЗначениеРеквизита>
  <Наименование>ДоговорId</Наименование>
  <Значение>a1b2c3d4-1234-...</Значение>
</ЗначениеРеквизита>

В УТ при создании заказа покупателя договор берётся из этого реквизита. Без договора — заказ создаётся по умолчанию (первый активный договор контрагента), что может привести к неверному ценообразованию в документах 1С.

Кейс: дистрибьютор с индивидуальными условиями

Дистрибьютор медицинского оборудования: 180 дилеров, у каждого — индивидуальный договор со своей ценой (скидка от 5% до 40% от розницы). Все цены ведутся в УТ как отдельные виды цен на каждого дилера (18 видов цен).

Задача на сайте: каждый дилер при входе видит только свои цены, цены других дилеров недоступны.

Реализация:

  • Синхронизация договоров из УТ в Битрикс — раз в 2 часа
  • При авторизации — определяется договор, из него берётся GUID вида цены
  • GUID маппится на тип цены в Битрикс (таблица маппинга в настройках)
  • Каталог показывает цены нужного типа

Дополнительно: у каждого дилера есть «менеджер-куратор» в УТ. При создании заказа на сайте — в заказ автоматически добавляется менеджер (из поля договора ОтветственныйМенеджер). Менеджер в УТ сразу видит заказ своего клиента.

Срок действия и автоматическое продление

Если договор истекает — за N дней до истечения отправляем уведомление ответственному менеджеру в Битрикс24 (через REST API). Регламентное задание в Битрикс проверяет valid_to всех договоров ежедневно.

// Агент проверки срока действия договоров
function checkContractExpiry() {
    $soon = date('Y-m-d', strtotime('+30 days'));
    $contracts = getContractsExpiringBefore($soon);
    foreach ($contracts as $contract) {
        notifyManager($contract['manager_id'], $contract);
    }
    return 'checkContractExpiry()'; // агент перезапускается
}