Маркету отдаётся информация о возможности доставки ещё до просчёта доставки ($count - количество единиц товара в заказе, а не параметр доставки). Логика кода - если товара больше 0 штук, то разрешаем доставку по любому адресу. Фактически невозможно обработать адрес и ответить Я.Маркету отказом в доставке.
Из него следует, что без методов доставки Маркету вообще ничего не вернётся в ответ
(!empty($deliveryOptions)).
Создал свой обработчик доставки, при попытке отказывать в доставке по адресам методом
if ($distance>100) {
$result->addError(new Error('Доставка не разрешена'));
return $result;
}
Маркет вообще перестаёт отрабатывать запрос с ошибкой. Выше привёл причины в коде ядра.
Проблема заключается в том, что в таком случае некорректно работает эта форма Яндекс.Маркета https://partner.market.yandex.ru/sandbox/new.xml (Работа с тестовыми заказами), при отсутствии доставки эта форма не даёт даже актуализировать цены. При описанной мной логике (отдавать данные товара с
deliveryOptions=0
) данной проблемы нет.
Тех. поддержка Битрикс считает это нормальным поведением (тикет №1504727).