Інтеграція 1С-Бітрікс з КЛАДР
КЛАДР (Класифікатор адрес Російської Федерації) — попередник ФІАС, підтримується ФПС. До 2014 року був основним стандартом адресації. КЛАДР зберігає актуальність у legacy-системах, для роботи з ФПС та при інтеграції зі старими обліковими системами 1С, які оперують кодами КЛАДР.
КЛАДР vs ФІАС: коли потрібен саме КЛАДР
- Інтеграція з обліковою системою 1С:Підприємство, яка використовує коди КЛАДР.
- Передача даних до ФПС у форматах, що вимагають код КЛАДР.
- Робота з транспортними компаніями, які ще не перейшли на ФІАС.
- Імпорт даних з БД, де адреси зберігаються з кодами КЛАДР.
Якщо вибір не обмежений legacy-системами, перевагу варто надати ФІАС — він актуальніший і детальніший.
Структура КЛАДР
Код КЛАДР — 11-значне або 13-значне число (з ознакою актуальності). Структура:
РР РРРРР МММ НПН ВУЛИЦ
2 5 3 3 4 = 17 символів (з доповненнями)
-
РР— код суб'єкта РФ (регіон). -
РРРРР— код району. -
МММ— код міста. -
НПН— код населеного пункту. -
ВУЛИЦ— код вулиці.
Файли бази КЛАДР завантажуються з сайту ФПС (fias.nalog.ru — там само, розділ КЛАДР). Формат — DBF-файли.
Імпорт КЛАДР у MySQL/PostgreSQL
# Конвертація DBF → SQL через утиліту dbf2sql або Python
python3 -c "
import dbf, csv
table = dbf.Table('KLADR.DBF')
table.open()
for record in table:
print(','.join([str(f) for f in record]))
table.close()
" > kladr.csv
Після імпорту в таблицю kladr_objects створюємо індекси по коду і батьківському коду для швидкого пошуку.
Пошук по КЛАДР у Бітріксі
function searchKladrCities(string $regionCode, string $cityName): array {
$connection = \Bitrix\Main\Application::getConnection();
$name = $connection->getSqlHelper()->forSql(mb_strtolower($cityName));
$sql = "
SELECT CODE, NAME, SOCR
FROM kladr_objects
WHERE CODE LIKE '{$regionCode}%'
AND LENGTH(CODE) = 13 -- рівень міста
AND LOWER(NAME) LIKE '%{$name}%'
AND STATUS = '1' -- актуальні записи
LIMIT 20
";
// ...
}
Маппінг КЛАДР ↔ ФІАС
Оскільки сучасні системи використовують ФІАС, а legacy — КЛАДР, часто потрібна таблиця відповідності. У базі ФІАС є поле CODE — це і є код КЛАДР. Таблиця ADDROBJ містить обидва ідентифікатори: AOGUID (ФІАС) і CODE (КЛАДР).
// Отримати код КЛАДР за GUID ФІАС
$sql = "SELECT CODE FROM fias_ADDROBJ WHERE AOGUID = '" . $fiasGuid . "'";
Автодоповнення адреси через DaData з кодом КЛАДР
DaData у відповіді підказки повертає і kladr_id, і fias_id. Якщо потрібен саме КЛАДР:
$("#address").suggestions({
token: dadataToken,
type: "ADDRESS",
onSelect: function(suggestion) {
const d = suggestion.data;
$("#kladr-id").val(d.kladr_id);
$("#fias-id").val(d.fias_id);
// Зберігаємо обидва — для різних downstream-систем
}
});
Зберігати обидва ідентифікатори — правильна практика при міграції з КЛАДР на ФІАС.
Передача в 1С:Підприємство
При синхронізації замовлень з 1С:Підприємство через CommerceML або прямий REST-обмін — адреса передається у форматі, який 1С розпізнає. Якщо версія 1С стара (до 8.3.14) — вона приймає коди КЛАДР. Передаємо kladr_id з поля замовлення разом з рядковою адресою.
| Завдання | Трудовитрати |
|---|---|
| Імпорт бази КЛАДР у БД | 4–6 год |
| API-ендпоінти пошуку по ієрархії | 6–8 год |
| Маппінг КЛАДР ↔ ФІАС | 3–4 год |
| Інтеграція з 1С за кодами КЛАДР | 4–8 год |







