Редактировать

Задача

Перед сохранением заказа, проверить значение свойств заказа и в зависимости от полученного значения откоректировать его в соответствии с бизнес-логикой.

Решение

Для перехвата процесса сохранения заказа есть событие OnSaleOrderBeforeSaved документация, именно его нужно использовать для решения поставленой задачи.

Подписываемся на событие:

<?
// Подписываемся на событие в init.php, но лучше выделите под это специальный файл, который подключите в init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler("sale", "OnSaleOrderBeforeSaved", ["\\MyNameSpace\\OrderEventer", "onOrderSave"]);

// ... и класс с обработчиком в отдельном файле, так же позаботьтесь о подключении его системой

namespace MyNameSpace;

class OrderEventer
{
    public function onOrderSave(Event $event) {
        // получим объект заказа
        $order = $event->getParameter("ENTITY");

        $propertyCollection = $order->getPropertyCollection();

        /** @var \Bitrix\Sale\PropertyValue $obProp */
        foreach ($propertyCollection as $obProp) {
            $arProp = $obProp->getProperty();
            
            // нас интересуют только свойства с кодами "EXPORT_DO", "EXPORT_DO_UR"
            if(!in_array($arProp["CODE"], ["EXPORT_DO", "EXPORT_DO_UR"])) {
                continue;
            }
            
            // Изменим значение свойства на нужное
            if($obProp->getValue() === 'NNN') {
                $obProp->setValue('N');
            } elseif($obProp->getValue() !== 'Y') {
                $obProp->setValue('Y');
            }
        }

    }
}

Альтернативный вариант регистрации обработчика событий, используется при установке модулей:

<?
EventManager::getInstance()->registerEventHandler(
    "sale",
    "OnSaleOrderBeforeSaved",
    'myModule.name',
    "\\Local\\Exch1c\\EventerOrder",
    "markOrderForExport"
);