На сайте настроен шаблон генерации номера заказа. После одного из последних обновлений, во время оформления заказа на странице /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"];
}
}
|
Хорошо, что есть тестовый сайт, без последних обновлений. Сравнил настройки модуля "интернет-магазин" (вдруг заказчик поменял что-то и не сказал), настройки были идентичными, и решение пришло само собой. После сохранения "не изменённых" настроек модуля, всё встало на свои места.
Решение: открыть настройки модуля "Интернет-магазин" и нажать "Сохранить".