Местоположения в Битрикс имеют узконаправленный кейс использования и для того чтобы начать их использовать в широком смысле, нужны значительные доработки.
Нужно импортировать координаты и с этим все достаточно просто. Но нужно так же хранить обширные дополнительные данные и вот тут у меня есть некоторые затруднения:
1 Из-за того, что структурой не предусмотрено хранить склонения названий, необходим сторонний механизм хранения таких данных. Возможно я бы мог задействовать таблицу названий и хранить там альтернативные названия как названия на другом языке, например ru_gen для родительного падежа, но совершенно не ясно как получить эти данные из таблицы. Я могу получить названия только для одного языка -
А как проделать то же самое для двух языков?
2 Кроме того мне необходимы символьные коды для использования их в url. Очевидно для этого подойдет таблица ext. Я бы мог добавить внешний сервис URL_CODE например... Но теперь я хочу получить местоположение с этим кодом и индексом. С индексом понятно:
С момим кодом примерно то же:
А как с тем и другим?
Вообще говоря все проблемы - как сделать select по таблице без фильтрации по ней?
Можно это как-то решить или просто взять и использовать свою сущность под местоположения?
P.S.
Что такое CODE применительно к местоположениям? Не смог найти коды чего это.
Нужно импортировать координаты и с этим все достаточно просто. Но нужно так же хранить обширные дополнительные данные и вот тут у меня есть некоторые затруднения:
1 Из-за того, что структурой не предусмотрено хранить склонения названий, необходим сторонний механизм хранения таких данных. Возможно я бы мог задействовать таблицу названий и хранить там альтернативные названия как названия на другом языке, например ru_gen для родительного падежа, но совершенно не ясно как получить эти данные из таблицы. Я могу получить названия только для одного языка -
| Код |
|---|
$res = \Bitrix\Sale\Location\LocationTable::getList(array(
'filter' => array(
'=ID' => intval($id),
'=NAME.LANGUAGE_ID' => 'ru'
),
'select' => array(
'ID',
'NAME_RU' => 'NAME.NAME'
)
));
if ($arLocation = $res->fetch()) {
if ($childrens) {
$arLocation['CHILDRENS'] = $this->getChildrensById($arLocation['ID']);
}
return $arLocation;
}
|
2 Кроме того мне необходимы символьные коды для использования их в url. Очевидно для этого подойдет таблица ext. Я бы мог добавить внешний сервис URL_CODE например... Но теперь я хочу получить местоположение с этим кодом и индексом. С индексом понятно:
| Код |
|---|
$res = \Bitrix\Sale\Location\LocationTable::getList(array( 'filter' => array( '=ID' => intval($id), '=NAME.LANGUAGE_ID' => 'ru', '=EXTERNAL.SERVICE_ID' => 1 ), 'select' => array( 'ID', 'NAME_RU' => 'NAME.NAME', 'ZIP' => 'EXTERNAL.XML_ID' ) )); |
| Код |
|---|
$res = \Bitrix\Sale\Location\LocationTable::getList(array( 'filter' => array( '=ID' => intval($id), '=NAME.LANGUAGE_ID' => 'ru', '=EXTERNAL.SERVICE_ID' => идМоегоСервиса ), 'select' => array( 'ID', 'NAME_RU' => 'NAME.NAME', 'URL_CODE' => 'EXTERNAL.XML_ID' |
Вообще говоря все проблемы - как сделать select по таблице без фильтрации по ней?
Можно это как-то решить или просто взять и использовать свою сущность под местоположения?
P.S.
Что такое CODE применительно к местоположениям? Не смог найти коды чего это.