На сайте настроен шаблон генерации номера заказа. После одного из последних обновлений, во время оформления заказа на странице /order/?ORDER_ID=#ACCOUNT_NUMBER#, перестали отображаться данные о заказе, а выводилось сообщение "Заказ № не найден...". В результате поисков причины было обнаружено, что метод COption::GetOptionString("sale", "account_number_template", "") возвращает false, а он используется в компоненте sale.order.ajax для выбора по какому полю делать фильтрацию в методе CSaleOrder::GetList();
Пример кода из компонента:
Хорошо, что есть тестовый сайт, без последних обновлений. Сравнил настройки модуля "интернет-магазин" (вдруг заказчик поменял что-то и не сказал), настройки были идентичными, и решение пришло само собой. После сохранения "не изменённых" настроек модуля, всё встало на свои места.
Решение: открыть настройки модуля "Интернет-магазин" и нажать "Сохранить".
Пример кода из компонента:
Код |
---|
$bUseAccountNumber = (COption::GetOptionString("sale", "account_number_template", "") !== ""); ..... if ($bUseAccountNumber) // supporting ACCOUNT_NUMBER or ID in the request { $dbOrder = CSaleOrder::GetList( array("DATE_UPDATE" => "DESC"), array( "LID" => SITE_ID, "ACCOUNT_NUMBER" => $ID ) ); if ($arOrder = $dbOrder->GetNext()) { $arResult["ORDER_ID"] = $arOrder["ID"]; $arResult["ACCOUNT_NUMBER"] = $arOrder["ACCOUNT_NUMBER"]; } } if (!$arOrder) { $dbOrder = CSaleOrder::GetList( array("DATE_UPDATE" => "DESC"), array( "LID" => SITE_ID, "ID" => $ID ) ); if($arOrder = $dbOrder->GetNext()) { $arResult["ORDER_ID"] = $ID; $arResult["ACCOUNT_NUMBER"] = $arOrder["ACCOUNT_NUMBER"]; } } |
Хорошо, что есть тестовый сайт, без последних обновлений. Сравнил настройки модуля "интернет-магазин" (вдруг заказчик поменял что-то и не сказал), настройки были идентичными, и решение пришло само собой. После сохранения "не изменённых" настроек модуля, всё встало на свои места.
Решение: открыть настройки модуля "Интернет-магазин" и нажать "Сохранить".