Наверное, все уже знают, что Битрикс выпустил Местоположения 2.0. После миграции у некоторых клиентов появились проблемы после перехода со свойством LOCATION заказа:
А пока нет документации, напишу что и как:
1. Теперь местоположения зависят от сайта!
Магазин -> Настройки -> Местоположения для сайтов
После миграции убедитесь, что местоположение "Россия" выбрано для вашего сайта. Если ничего не выбрано - не сможете редактировать заказ.Будет ошибка "Свойство Город не заполнено" или "Указанное местоположение не принадлежит выбранному сайту".
2. Теперь в свойстве LOCATION (тип местоположение) хранится не ID местоположения, а КОД.
Поэтому такой код у меня перестал работать для новых заказов:
Строчку можно было не указывать - тогда подставляется текущий язык. Но мне надо было именно по русски.
$parameters['filter']['NAME.LANGUAGE_ID'] = "ru";
3. Новое API позволяет красиво получить полное название местоположения:
$val = Bitrix\Sale\Location\Admin\LocationHelper::getLocationPathDisplay( "0000073738" );
//$val - "Москва, Московская область, Центр, Россия"
Получить местоположение можно и в старом стиле. CSaleLocation::GetByID будет работать:
$ID = CSaleLocation::getLocationIDbyCODE("0000073738");
$arVal = CSaleLocation::GetByID( $ID, "ru"); // параметр ru необязательный. По умолчанию текущий язык.
echo "<pre>".print_r( $arVal, true )."</pre>";
/*
Результат
Array
(
[ID] => 218
[SORT] => 100
[COUNTRY_NAME] => Россия
[COUNTRY_SHORT_NAME] =>
[COUNTRY_ID] => 1
[COUNTRY_NAME_ORIG] => Россия
[COUNTRY_NAME_LANG] => Россия
[REGION_NAME] => Московская область
[REGION_SHORT_NAME] =>
[REGION_ID] => 3
[REGION_NAME_ORIG] => Московская область
[REGION_NAME_LANG] => Московская область
[CITY_NAME] => Москва
[CITY_SHORT_NAME] =>
[CITY_ID] => 218
[CITY_NAME_ORIG] => Москва
[CITY_NAME_LANG] => Москва
)
*/
4. Приведу пример, как сейчас в Битриксе реализовано отображение местоположения на странице просмотра заказа /bitrix/modules/sale/admin/order_detail.php (sale 14.11.0)
Битрикс позаботился о тех, кто еще не перешел на местоположения 2.0
Зайцев Артемий написал: Я не знаю, что у вас поломалось в стандартной bitrix:sale.order.ajax и зачем нужны события.
Теперь нет служб доставок в форме заказа. Местоположение выбрано и указано, что оно местоположение. Именно это местоположение привязано к настраиваемой службе доставки (привязывал точно после зачистки старой базы и загрузки новой по местоположениям) и эта служба доставки не выводится в форме.
Анатолий Кирсанов, если у вас поломался стандартный функционал - пишите в техподдержку. Писать события, чтобы починить ошибку - верх извращения. Если это ошибка и техподдержка знает как её чинить - они сразу код ядра у вас поправят пока не вышло обновление.
аналогично , благо бэкап сделал и откатил. Битрикс конечно должен у таких обновлений ставить комментарий: "Внимание, установка данного обновления грозит стабильности работы Вашего проекта".
Tunkin Sergey, в моем случае все оказалось в порядке - мой недосмотр. Служба доставки имела ограничение по сумме заказа, которое я не выполнил. У меня были причины не верить Битрикс, т.к. была фатальная ошибка при обновлении. Потому были замылены глаза, поотлаживал код и увидел где причина
А я что то не соображу Вот у меня в $arResult['ORDER_PROP']['USER_PROPS_Y'] поле типа LOCATION array ( 'ID' => '6', '~ID' => '6', 'NAME' => 'Местоположение', '~NAME' => 'Местоположение', 'TYPE' => 'LOCATION', '~TYPE' => 'LOCATION', 'REQUIED' => 'Y', '~REQUIED' => 'Y', 'DEFAULT_VALUE' => 'demo_city_s1', '~DEFAULT_VALUE' => 'demo_city_s1', 'IS_LOCATION' => 'Y', '~IS_LOCATION' => 'Y', 'PROPS_GROUP_ID' => '2', '~PROPS_GROUP_ID' => '2', 'SIZE1' => '40', '~SIZE1' => '40', 'SIZE2' => '0', '~SIZE2' => '0', 'DESCRIPTION' => '', '~DESCRIPTION' => '', 'IS_EMAIL' => 'N', '~IS_EMAIL' => 'N', 'IS_PROFILE_NAME' => 'N', '~IS_PROFILE_NAME' => 'N', 'IS_PAYER' => 'N', '~IS_PAYER' => 'N', 'IS_LOCATION4TAX' => 'Y', '~IS_LOCATION4TAX' => 'Y', 'MULTIPLE' => 'N', '~MULTIPLE' => 'N', 'CODE' => 'LOCATION', '~CODE' => 'LOCATION', 'GROUP_NAME' => 'Данные для доставки', '~GROUP_NAME' => 'Данные для доставки', 'GROUP_SORT' => '200', '~GROUP_SORT' => '200', 'SORT' => '140', '~SORT' => '140', 'USER_PROPS' => 'Y', '~USER_PROPS' => 'Y', 'IS_ZIP' => 'N', '~IS_ZIP' => 'N', 'INPUT_FIELD_LOCATION' => '5', '~INPUT_FIELD_LOCATION' => '5', 'FIELD_NAME' => 'ORDER_PROP_6', 'FIELD_ID' => 'ORDER_PROP_LOCATION', 'REQUIED_FORMATED' => 'Y', 'VALUE' => '31903', 'VARIANTS' => array ( 0 => array ( 'ID' => '31903', 'SELECTED' => 'Y', ), ), ) А как теперь получить город не понятно, приведённые примеры не работают, до этого делал костыль Bitrix\Sale\Location\LocationTable::getPathToNodeByCode и там брал последнее значение, но если местоположения с улицами, то непонятно как определять, что там местоположения до улиц. Если можно было бы получить город и страну без этих плясок с бубуном то было бы здорово.
Только у меня в 14.11.9 слетела установка местоположения по умолчанию (из настроек "Свойство заказа -> Значение по умолчанию) в sale.order.ajax? штудирование кода показало, что его просто вычеркнули.. но, возможно, просто уже голова не варит.
Подтверждаю, что установка местоположения по-умолчанию больше не работает. DEFAULT_VALUE заполнен, а VALUE — пустой. Из-за этого перестали показываться службы доставки. Работало в 15.0.6, не работает в 15.0.16
А в 15.5 отвалилась подгрузка поумолчательных способов доставки при переключении типа плательщика... При чем стоит сменить профайл - всё работает. Похоже перенесли обработку этого события куда-то или ниже или выше. Никто не сталкивался?
Здравствуйте. Помогите пожалуйста, уже целую неделю мучаюсь ничего не выходит. Нужно в щаблон письма вывести полный адрес благодаря этому коду выводится последнее, улица
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».