Пока нашел еще один способ, может кому пригодится))
Создал свойство заказа, служебное "Полный адрес" и в init.php добавил следующее:
Код |
---|
use \Bitrix\Main\EventManager;
use \Bitrix\Main\Event;
// Событие перед записью заказа
EventManager::getInstance() -> addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'addOrderAddress');
function addOrderAddress(\Bitrix\Main\Event $event)
{
// Сам заказ
$order = $event->getParameter("ENTITY");
// Массив со свойствами
$properties = $order->getPropertyCollection();
// Получаем "Индекс"
$zipProperty = $properties->getDeliveryLocationZip();
$zip = $zipProperty->getViewHtml();
// Получаем "Местоположение" в виде "Страна, Регион, Город"...
$locationProperty = $properties->getDeliveryLocation();
$location = $locationProperty->getViewHtml();
// Получаем "Адрес", который пользователь забивает в свободной форме.
$addressProperty = $properties->getAddress();
$address = $addressProperty->getViewHtml();
// Собираем все в одну строку
$addressFull = $zip . ', ' . $location . ', ' . $address;
// Убираем спецсимволы HTML (у меня выводилось с ними)
$addressFull = strip_tags($addressFull);
// Ищем свойство "Полный адрес" по коду и записываем новое значение
foreach ($properties as $property){
if($property->getField('CODE') == 'ADDRESS_DELIVERY_FULL'){
$property->setValue($addressFull);
}
}
}
|
После этого в БУСе в настройках интеграции выбрал соответствие "Полный адрес" для передачи в 1С.
В заказе стал появляться этот адрес. Немного не по феншую, а точнее не по виду КЛАДР, но у меня в заказе в поле "Адрес до клиента" адрес в свободной форме. Без разницы, лишь бы видеть полный адрес.
Тоже можно проделать и с улицей, корпусом и домом. Думаю, тогда будет по феншую.
В принципе, что и требовалось.
Спасибо.
P.S. Разработчики интеграции, есть ли более красивый способ передавать адрес доставки в 1С штатными способами? В соответствии полей можно выбрать только одно поле, а не группу из которых составлять адрес.