Иногда, необходимо не дать пользователю оформить заказ, при каких-то определенны условиях. Например, не выполнено какое-то условие, это может быть все что угодно: не достаточная сумма, не выбрана доставка или просто Венера не в том созвездии.
На самом деле, все очень просто. Необходимо зарегистрировать обработчик события OnSaleOrderBeforeSaved и вернуть в нем:
<?php return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, new \Bitrix\Sale\ResultError( 'Нет доступной службы доставки', 'SALE_EVENT_WRONG_ORDER' ), 'sale' );
В таком случае, при попытке сохранить заказ, мы получим ошибку “Нет доступной службы доставки”