Интеграция 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 и предложим решение под ключ с гарантией стабильной работы. Пишите — оценим проект бесплатно.







