Интеграция 1С-Битрикс с сервисами проверки контрагентов

Ручная проверка контрагентов отнимает время и допускает ошибки, которые стоят бизнесу денег. Мы интегрируем 1С-Битрикс с сервисами проверки, чтобы данные о компаниях подтягивались автоматически. Наша команда реализует проект под ключ — от настройки API до сопровождения, обеспечивая надёжную работу и актуальность сведений.

Интеграция 1С-Битрикс с сервисами проверки контрагентов

Интеграция с 1ССредний~1-2 недели
Часто задаваемые вопросы

Интеграция 1С-Битрикс с сервисами проверки контрагентов

Представьте: B2B-магазин на Битрикс получает заявку от компании. Менеджер вручную проверяет ИНН через сторонние сайты, тратя 15 минут на каждую заявку. Мы внедряем автоматическую проверку контрагента прямо в момент регистрации организации, оформления заказа или создания сделки в CRM. Данные из ЕГРЮЛ, реестра дисквалифицированных лиц и финансовые отчёты подтягиваются в карточку за секунды. Ручная проверка — 15 минут, автоматическая — 2 секунды, в 450 раз быстрее. Экономия на каждой заявке: если у вас 500 заявок в месяц, высвобождается 125 часов менеджерского времени.

Почему важна автоматическая проверка контрагентов?

При ручной проверке человеческий фактор неизбежен: менеджер может пропустить ликвидированную компанию или ошибиться в ИНН. Интеграция с надёжными источниками (ФНС, Dadata, Контур.Фокус) исключает эти риски. Мы гарантируем, что каждая заявка проходит проверку по единому алгоритму, а данные всегда актуальны благодаря периодической перепроверке. Наш опыт — 10+ лет в Битрикс-разработке, сертифицированные специалисты.

Источники данных и API

Основные сервисы, с которыми интегрируется Битрикс:

Сервис Что даёт Тип запроса
ФНС ЕГРЮЛ (API) Статус компании, адрес, руководитель REST по ИНН/ОГРН
Контур.Фокус Реестры банкротств, арбитраж, финансовая отчётность REST + OAuth
СПАРК Скоринг надёжности, аффилированность REST + ключ API
Dadata.ru Обогащение реквизитов по ИНН, автодополнение REST, простой ключ
Прозрачный бизнес (ФНС) Дисквалифицированные лица, налоговые долги Публичный API

Dadata — наиболее распространённый выбор для автодополнения реквизитов при вводе: по ИНН возвращает полное наименование, КПП, ОГРН, юридический адрес, статус. [Контур.Фокус] или СПАРК подключают при необходимости глубокого финансового анализа.

Как хранить данные контрагентов?

Для хранения реквизитов организаций используем HL-блок CompanyRequisites. Поля:

  • UF_INN — ИНН (строка, уникальный индекс)
  • UF_OGRN — ОГРН
  • UF_KPP — КПП
  • UF_FULL_NAME — полное наименование
  • UF_ADDRESS_LEGAL — юридический адрес
  • UF_DIRECTOR — руководитель
  • UF_STATUS — статус (active, liquidated, reorganizing)
  • UF_RISK_SCORE — скоринговый балл (если используется СПАРК/Фокус)
  • UF_LAST_CHECK — дата последней проверки
  • UF_RAW_DATA — сырой JSON-ответ API

Привязка к пользователю Битрикс — поле UF_USER_ID на пользователе или связь через свойство COMPANY_ID в профиле.

Архитектура интеграции

Интеграция работает в двух режимах:

Режим 1 — онлайн-проверка при вводе ИНН. Клиент вводит ИНН в форму регистрации или профиля организации. AJAX-запрос уходит на промежуточный PHP-контроллер, тот запрашивает API Dadata, возвращает реквизиты на фронт. Пользователь видит заполненную форму автоматически.

Режим 2 — фоновая проверка существующих контрагентов. Агент Битрикс (CAgent) запускается ночью, перебирает компании из HL-блока «Организации» или из таблицы пользователей, отправляет ИНН в API, сохраняет результат.

Запрос к Dadata: реализация

class DadataContragentChecker
{
    private string $apiKey;
    private string $secretKey;

    public function __construct(string $apiKey, string $secretKey)
    {
        $this->apiKey = $apiKey;
        $this->secretKey = $secretKey;
    }

    public function getByInn(string $inn): ?array
    {
        $cacheKey = 'dadata_inn_' . md5($inn);
        $cache = \Bitrix\Main\Data\Cache::createInstance();
        if ($cache->initCache(86400, $cacheKey, '/dadata/inn/')) {
            return $cache->getVars();
        }

        $response = (new \Bitrix\Main\Web\HttpClient())->post(
            'https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party',
            json_encode(['query' => $inn, 'count' => 1]),
            [
                'Content-Type' => 'application/json',
                'Authorization' => 'Token ' . $this->apiKey,
                'X-Secret' => $this->secretKey,
            ]
        );

        $data = json_decode($response, true);
        if (empty($data['suggestions'][0])) {
            return null;
        }

        $result = $this->normalizeResponse($data['suggestions'][0]);
        $cache->startDataCache(86400, $cacheKey, '/dadata/inn/');
        $cache->endDataCache($result);
        return $result;
    }

    private function normalizeResponse(array $suggestion): array
    {
        $data = $suggestion['data'];
        return [
            'full_name' => $data['name']['full_with_opf'] ?? '',
            'inn' => $data['inn'] ?? '',
            'kpp' => $data['kpp'] ?? '',
            'ogrn' => $data['ogrn'] ?? '',
            'address' => $suggestion['unrestricted_value'] ?? '',
            'director' => $data['management']['name'] ?? '',
            'status' => strtolower($data['state']['status'] ?? 'unknown'),
        ];
    }
}

Кеширование на 24 часа — обязательно. Без него при массовой проверке быстро упираемся в лимиты API (Dadata: 10 000 запросов/сутки на бесплатном тарифе).

Встройка в форму регистрации

Компонент bitrix:system.auth.registration переопределяется в шаблоне. В форму добавляется поле ИНН с JavaScript-автодополнением:

document.getElementById('inn-field').addEventListener('blur', async function() {
    const inn = this.value.replace(/\D/g, '');
    if (inn.length !== 10 && inn.length !== 12) return;
    const resp = await fetch('/local/ajax/check-inn.php?inn=' + inn);
    const data = await resp.json();
    if (data.success) {
        document.getElementById('company-name').value = data.full_name;
        document.getElementById('kpp-field').value = data.kpp;
        document.getElementById('ogrn-field').value = data.ogrn;
        document.getElementById('address-field').value = data.address;
        if (data.status !== 'active') {
            showWarning('Компания не является действующей');
        }
    }
});

Поле /local/ajax/check-inn.php — тонкий контроллер, который вызывает DadataContragentChecker и возвращает JSON.

Как интегрировать с CRM Битрикс24?

Если используется CRM, проверка встраивается в момент создания контакта или компании через события:

  • OnAfterCrmContactAdd / OnAfterCrmCompanyAdd — запускает фоновую проверку через обработчик
  • Результат пишется в пользовательское поле UF компании CRM
  • При низком скоринге или статусе «ликвидирована» — автоматически создаётся задача менеджеру на ручную проверку
AddEventHandler('crm', 'OnAfterCrmCompanyAdd', function(&$fields) {
    $inn = $fields['fields']['UF_INN'] ?? '';
    if (!$inn) return;
    // Запускаем асинхронно через агент
    \CAgent::AddAgent(
        "checkContragentAgent({$fields['id']}, '{$inn}');",
        'my_module',
        'N',
        60
    );
});

Периодическая перепроверка

Компании меняют статус — ликвидируются, реорганизуются. Агент перепроверяет записи старше 30 дней:

function reCheckContragentsAgent(): string {
    $connection = \Bitrix\Main\Application::getConnection();
    $rows = $connection->query(
        "SELECT ID, UF_INN FROM b_hl17_company_requisites WHERE UF_LAST_CHECK < DATE_SUB(NOW(), INTERVAL 30 DAY) LIMIT 50"
    );
    $checker = new DadataContragentChecker(DADATA_API_KEY, DADATA_SECRET);
    while ($row = $rows->fetch()) {
        $data = $checker->getByInn($row['UF_INN']);
        if ($data) {
            updateHlBlockRecord($row['ID'], $data);
        }
    }
    return __FUNCTION__ . '();';
}

Лимит 50 записей за запуск — чтобы агент не превышал время выполнения PHP.

Что входит в работу (deliverables)

  • Аудит текущей архитектуры Битрикс (инфоблоки, HL-блоки, CRM)
  • Выбор оптимального API под ваши задачи (Dadata vs Контур.Фокус vs ФНС)
  • Разработка PHP-контроллера проверки по ИНН с кешированием
  • Создание HL-блока для хранения реквизитов и скоринга
  • Встройка автодополнения в форму регистрации (кастомизация шаблона)
  • Настройка фоновых агентов для перепроверки
  • Интеграция с CRM Битрикс24 (события + уведомления)
  • Тестирование на стенде и развёртывание в production
  • Документация по эксплуатации и обучение менеджеров
  • Поддержка в течение 1 месяца после запуска

Сроки реализации

Объём задачи Состав Срок
Автодополнение реквизитов по ИНН (Dadata) AJAX + кеш + форма регистрации 2–4 дня
HL-блок контрагентов + фоновый агент Хранение + периодическая проверка 1 неделя
Полная интеграция (CRM + скоринг + уведомления) Контур.Фокус или СПАРК + интеграция с CRM 2–3 недели

Оценим ваш проект

Свяжитесь с нами, чтобы получить предварительную оценку сложности и сроков. Мы проанализируем вашу текущую конфигурацию Битрикс, подберём оптимальные API и предложим решение под ключ с гарантией стабильной работы. Пишите — оценим проект.

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223