Интеграция 1С-Битрикс с DaData (подсказки по адресам)

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с DaData (подсказки по адресам)
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • 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С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с DaData (подсказки по адресам)

При оформлении заказа пользователи вводят адрес вручную в произвольном формате: «мск ленина 5 кв 12», «г. Москва, Ленина ул., д. 5». В базе — каша, интеграция с транспортными компаниями ломается, расчёт доставки не работает. DaData стандартизирует адрес и нормализует его по ФИАС прямо при вводе.

Что даёт DaData

  • Подсказки при вводе (Suggestions API) — автодополнение адреса с привязкой к ФИАС/КЛАДР.
  • Стандартизация (Cleaner API) — привести произвольный адрес к нормализованному виду.
  • Геокодирование — координаты по адресу и адрес по координатам.
  • Подсказки по организациям — ИНН → все реквизиты компании.

Подключение Suggestions API

Регистрируемся на dadata.ru, получаем API-ключ и секретный ключ. Лимиты бесплатного тарифа: 10 000 запросов/сутки. Для production рекомендуется платный тариф.

Frontend — подключаем виджет:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/css/suggestions.min.css">
<script src="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/js/jquery.suggestions.min.js"></script>
<script>
$("#delivery-address").suggestions({
    token: "<?= COption::GetOptionString('site', 'dadata_api_key') ?>",
    type: "ADDRESS",
    /* ограничиваем географию: */
    constraints: { locations: [{ country: "Россия" }] },
    onSelect: function(suggestion) {
        // Раскладываем адрес по полям формы
        const d = suggestion.data;
        $("#field-city").val(d.city || d.settlement);
        $("#field-street").val(d.street_with_type);
        $("#field-house").val(d.house);
        $("#field-flat").val(d.flat);
        $("#field-zip").val(d.postal_code);
        $("#field-fias-id").val(d.fias_id); // храним FIAS ID
        $("#field-region").val(d.region_with_type);
        $("#field-lat").val(d.geo_lat);
        $("#field-lon").val(d.geo_lon);
    }
});
</script>

Важно хранить fias_id — он используется для интеграции с транспортными компаниями (СДЭК, Boxberry) и позволяет однозначно идентифицировать адрес.

Серверная стандартизация адреса

Когда адрес вводится без виджета (импорт из CSV, API-заказы), нормализуем на сервере:

function standardizeAddress(string $rawAddress): array {
    $apiKey    = COption::GetOptionString('site', 'dadata_api_key');
    $secretKey = COption::GetOptionString('site', 'dadata_secret_key');

    $http = new \Bitrix\Main\Web\HttpClient();
    $http->setHeader('Authorization', 'Token ' . $apiKey);
    $http->setHeader('X-Secret', $secretKey);
    $http->setHeader('Content-Type', 'application/json');

    $response = $http->post(
        'https://cleaner.dadata.ru/api/v1/clean/address',
        json_encode([$rawAddress])
    );

    $result = json_decode($response, true)[0] ?? [];
    return [
        'city'      => $result['city'] ?? '',
        'street'    => $result['street_with_type'] ?? '',
        'house'     => $result['house'] ?? '',
        'flat'      => $result['flat'] ?? '',
        'fias_id'   => $result['fias_id'] ?? '',
        'postal'    => $result['postal_code'] ?? '',
        'qc'        => $result['qc'] ?? 3, // качество: 0-хорошо, 3-не распознан
    ];
}

Поле qc (quality code) критично: 0 — адрес распознан однозначно, 1 — с допущениями, 3 — не распознан. При qc = 3 помечаем заказ флагом для ручной проверки менеджером.

Реквизиты компании по ИНН

B2B-форма регистрации: пользователь вводит ИНН — автоматически подставляются название компании, КПП, юридический адрес, ФИО директора. Экономит 2–3 минуты при регистрации.

$("#inn").suggestions({
    token: dadataToken,
    type: "PARTY",
    onSelect: function(suggestion) {
        const d = suggestion.data;
        $("#company-name").val(d.name.short_with_opf);
        $("#kpp").val(d.kpp);
        $("#ogrn").val(d.ogrn);
        $("#legal-address").val(d.address.value);
        $("#director").val(d.management ? d.management.name : '');
    }
});

Данные из DaData сохраняем в свойства пользователя Битрикса (CUser::Update()) и в таблицу компании, если реализован B2B-кабинет.

Кеширование подсказок

Каждый символ в поле адреса — запрос к DaData API. При активных пользователях расходуется квота. Оптимизация: дебаунс 300 мс в JS, серверный прокси с кешированием частых запросов в memcached или Redis на 1 час.

Кейс: магазин сантехники, 800 заказов/день. Без оптимизации — 15 000 запросов к DaData ежедневно (перерасход на бесплатном тарифе). После внедрения дебаунса и прокси-кеша — 3 000 запросов/день.

Задача Трудозатраты
Подключение виджета подсказок 3–4 ч
Серверная стандартизация + обработка qc 4–6 ч
Подсказки по ИНН для B2B 3–4 ч
Прокси-кеш для снижения запросов 4–6 ч