В систему загружены все местоположения (2.0), кроме улиц - то есть включая поселки, села, деревни и т.д.
При получении списка местоположений с помощью CSaleLocation::GetList() столкнулся с двумя проблемами:
1) Метод возвращает местоположения только типа "Область" и "Город". А как получить остальные 200k+ местоположений (села и т.д.)?
2) Не работает фильтр по маске. Например, передавая "CITY_NAME" => "Мос%", я ожидал увидеть хотя бы Москву, но метод не вернул вообще ничего. При этом "CITY_NAME" => "Москва" дает правильный результат.
Для Местоположений 2.0 CSaleLocations не всегда корректно работает. Юзай возможности D7.
Код
CModule::IncludeModule('sale');
$res = \Bitrix\Sale\Location\LocationTable::getList(array(
'filter' => array(
'=TYPE.ID' => '', // ID из Типов местоположения, Т.е. (Улица, село и все что тебе необходимо)
),
'select' => array(
'ID',
'NAME_RU' => 'NAME.NAME', // Вернет название
)
));
if ($item = $res->fetch()) {
$List[$item["ID"]] = $item;
}
}