Задать вопрос

Bitrix. Как указать адрес доставки через API?

Есть стандартный компонент битрикса корзины. Но оформление заказа написано полностью на API.(То есть начиная с кнопки оформить заказ внутренности компонента не используются)
Соответственно создаётся объект $order в него передаётся текущая корзина пользователя $basket

Далее в зависимости от того что выбрал пользователь создаётся доставка, а именно вот так:
if (($delivery == 2) or ($delivery == 3)) {
$service = Delivery\Services\Manager::getById($delivery);
$shipment->setFields(array(
"DELIVERY_ID" => $service["ID"],
"DELIVERY_NAME" => $service["NAME"],
));
$shipment->setBasePriceDelivery($deliveryCost);
} else {// Иначе создаём служебную доставку
$service = Delivery\Services\Manager::getById(Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId());
$shipment->setFields(array(
"DELIVERY_ID" => $service["ID"],
"DELIVERY_NAME" => $service["NAME"],
));
}

Как мне передать и каким способом адрес доставки? Сейчас он не фиксируется в заказе и следовательно не виден в заказе из админки.

Поддержка битрикс пока что ответила так:
"Адрес доставки" это свойство заказа, его название можно получить и обновить $propertyValue->setField();
https://dev.1c-bitrix.ru/api_d7/bitrix/sale/techni...
https://dev.1c-bitrix.ru/api_d7/bitrix/sale/techni...

Толкьо не понятно к чему применить setField и какой ключь в него передавать чтобы установить именно адрес доставки.
  • Вопрос задан
  • 7146 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 3
nikolaevevge
@nikolaevevge Автор вопроса
// Функция для упрощения работы с свойствами заказа, чтобы ко каждому свойству не писать много строк
function getPropertyByCode($propertyCollection, $code) {
foreach ($propertyCollection as $property) {
if($property->getField('CODE') == $code) {
return $property;
}
}
}

$addressProperty = getPropertyByCode($propertyCollection, 'ADDRESS');
$addressProperty->setValue($deliveryAddress);// Устанавливаем адрес

Предварительно если Вы не устанавливали демо данные нужно зайти в магазин -> настройки -> свойства заказа и создать для каждого типа платильщика свойство Адрес доставки. Необходимо поставить галочку входит в профиль и является адресом доставки.

Список стандартных названий свойств и их коды(те которые устанавливаются с демо данными) можно посмотреть по ссылке - https://dev.1c-bitrix.ru/support/forum/messages/fo...
Ответ написан
Комментировать
Adamos
@Adamos
В админке посмотрите магазин - настройки - свойства заказа.
Если там нет подходящего - создайте новое и отметьте, что это адрес (галочка "использовать для расчета доставки").
Ответ написан
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
<?

$propertyCollection = $order->getPropertyCollection();
$adressProperty = $propertyCollection->getAddress();
$adressProperty->setValue($value);
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы