Інтеграція 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 год |







