Интеграция 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 ч |







