Местоположения в Битрикс имеют узконаправленный кейс использования и для того чтобы начать их использовать в широком смысле, нужны значительные доработки.
Нужно импортировать координаты и с этим все достаточно просто. Но нужно так же хранить обширные дополнительные данные и вот тут у меня есть некоторые затруднения:
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 применительно к местоположениям? Не смог найти коды чего это.