Интеграция 1С-Битрикс с ФИАС
ФИАС (Федеральная информационная адресная система) — официальный государственный реестр адресов России. Интеграция нужна, когда адреса должны совпадать с базой ФНС, для работы с транспортными компаниями, для автозаполнения адресных форм с привязкой к официальному реестру.
Варианты подключения ФИАС
Вариант 1. Локальная база ФИАС — скачиваем полный дамп (~10 ГБ в XML, ~5 ГБ после импорта в PostgreSQL), разворачиваем в собственной БД. Плюс: нет зависимости от внешних сервисов, полный контроль. Минус: база обновляется еженедельно, нужен процесс синхронизации.
Вариант 2. API сторонних сервисов — DaData, Fias.nalog.ru API, GeoSuggest. Проще в интеграции, но лимиты запросов и внешняя зависимость.
Вариант 3. Готовые модули Битрикса — на маркетплейсе есть несколько модулей адресных подсказок с ФИАС. Цена 3 000–15 000 руб. Подходит для стандартных форм.
Структура базы ФИАС
Ключевые таблицы (после импорта XML в PostgreSQL или MySQL):
| Таблица ФИАС | Содержание |
|---|---|
ADDROBJ |
Адресные объекты: регионы, города, улицы |
HOUSE |
Дома с привязкой к улице |
SOCRBASE |
Словарь сокращений (ул., пр-т, пер.) |
NORDOC |
Нормативные документы (для юридических задач) |
Поле AOGUID — глобальный уникальный идентификатор адресного объекта (ФИАС ID). Именно его нужно хранить в заказах и передавать в транспортные компании.
Запрос к локальной базе ФИАС
// Поиск улиц по названию в указанном городе
function searchFiasStreets(string $cityGuid, string $streetName): array {
$connection = \Bitrix\Main\Application::getConnection();
$streetName = $connection->getSqlHelper()->forSql($streetName);
$sql = "
SELECT ao.AOGUID, ao.FORMALNAME, ao.SHORTNAME
FROM fias_ADDROBJ ao
WHERE ao.PARENTGUID = '{$cityGuid}'
AND ao.AOLEVEL = 7 -- уровень: улица
AND ao.LIVESTATUS = 1 -- только актуальные
AND LOWER(ao.FORMALNAME) LIKE LOWER('%{$streetName}%')
LIMIT 20
";
$result = $connection->query($sql);
$rows = [];
while ($row = $result->fetch()) {
$rows[] = [
'guid' => $row['AOGUID'],
'name' => $row['FORMALNAME'] . ' ' . $row['SHORTNAME'] . '.',
];
}
return $rows;
}
Автодополнение в форме заказа
На сервере поднимаем простой Ajax-обработчик (компонент или контроллер):
// ajax_handler.php в папке компонента
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$type = $_POST['type']; // 'region', 'city', 'street', 'house'
$query = trim($_POST['query']);
$parent= $_POST['parent_guid'] ?? null;
$results = FiasSearch::search($type, $query, $parent);
header('Content-Type: application/json');
echo json_encode(['suggestions' => $results]);
die();
}
На frontend — jQuery Autocomplete или собственная реализация, последовательный выбор: регион → город/населённый пункт → улица → дом. Каждый выбор передаёт AOGUID выбранного объекта как parent_guid для следующего уровня.
Обновление базы ФИАС
ФИАС обновляется каждую неделю. Для обновления используем Delta-обновления (не полный дамп):
- Скачиваем Delta-файл с сайта ФИАС (fias.nalog.ru/updates).
- Парсим XML и обновляем таблицы через
INSERT ... ON DUPLICATE KEY UPDATEилиUPSERTв PostgreSQL. - Процесс автоматизируем агентом Битрикса или cron-задачей раз в неделю.
Время обработки Delta-обновления на сервере среднего класса — 15–30 минут. Полный импорт с нуля — 2–4 часа.
Хранение ФИАС ID в заказах
В свойствах заказа создаём поля:
-
FIAS_REGION_GUID— GUID региона. -
FIAS_CITY_GUID— GUID города/населённого пункта. -
FIAS_STREET_GUID— GUID улицы. -
FIAS_HOUSE_GUID— GUID дома (если есть в базе ФИАС).
Эти GUID передаём напрямую в API СДЭК, Boxberry, Почты России — они принимают ФИАС ID для точного определения отделения доставки.
| Задача | Трудозатраты |
|---|---|
| Разворачивание локальной базы ФИАС | 8–12 ч |
| API-эндпоинты для автодополнения | 6–8 ч |
| Форма последовательного выбора адреса | 6–10 ч |
| Автоматическое обновление базы | 4–6 ч |







