Добрый день! У меня похожая проблема, страница успешного оформления заказа не открывается. Удалось выяснить что это происходит из-за обработчика добавленного в init.php который работает на php 7.4 и не работает на php 8.1. Буду благодарен за помощь в адаптации кода.[CODE]AddEventHandler("main", "OnBeforeEventAdd", "function_OnBeforeEventAdd");
function function_OnBeforeEventAdd(&$event, &$lid, &$arFields,&$message_id)
{
if ($event=="SALE_NEW_ORDER")
{
/*$dump=print_r($arFields,true);
$fp = fopen( $_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/log.txt", "a+" );
fwrite( $fp, $dump);
fclose( $fp );
*/
$ORDER_ID=$arFields['ORDER_REAL_ID'];
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
CModule::IncludeModule("iblock");
$db_props = CSaleOrderPropsValue::GetOrderProps($ORDER_ID);
$ORDER_DATA="";
$iGroup = -1;
$ADDRESS="";
while ($arProps = $db_props->Fetch())
{
if ($arProps["VALUE"]!="")
{
if ($iGroup!=IntVal($arProps["PROPS_GROUP_ID"]))
{
$ORDER_DATA.="<br><b>".$arProps["GROUP_NAME"]."</b><br>";
$iGroup = IntVal($arProps["PROPS_GROUP_ID"]);
}
$ORDER_DATA.=$arProps["NAME"].": ";
if ($arProps["TYPE"]=="CHECKBOX")
{
if ($arProps["VALUE"]=="Y")
$ORDER_DATA.="Да";
else
$ORDER_DATA.="Нет";
}
elseif ($arProps["TYPE"]=="TEXT" || $arProps["TYPE"]=="TEXTAREA")
{
$ORDER_DATA.=$arProps["VALUE"];
}
elseif ($arProps["TYPE"]=="SELECT" || $arProps["TYPE"]=="RADIO")
{
$arVal = CSaleOrderPropsVariant::GetByValue($arProps["ORDER_PROPS_ID"], $arProps["VALUE"]);
$ORDER_DATA.=$arVal["NAME"];
}
elseif ($arProps["TYPE"]=="MULTISELECT")
{
$curVal = split(",", $arProps["VALUE"]);
for ($i = 0; $i<count($curVal); $i++)
{
$arVal = CSaleOrderPropsVariant::GetByValue($arProps["ORDER_PROPS_ID"], $curVal[$i]);
if ($i>0) $ORDER_DATA.=", ";
$ORDER_DATA.=$arVal["NAME"];
}
}
elseif ($arProps["TYPE"]=="LOCATION")
{
$arVal = CSaleLocation::GetByID($arProps["VALUE"], LANGUAGE_ID);
$ORDER_DATA.=$arVal["COUNTRY_NAME"]." - ".$arVal["REGION_NAME"]." - ".$arVal["CITY_NAME"];
$CITY_LOCATION=$arVal["REGION_NAME"];
}
$ORDER_DATA.="<br>";
}
}
$ORDER_DATA.="<br>";
$arOrder = CSaleOrder::GetByID($ORDER_ID);
$order = \Bitrix\Sale\Order::load($ORDER_ID);
/*$dump=print_r($arOrder,true);
$fp = fopen( $_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/log.txt", "a+" );
fwrite( $fp, $dump);
fclose( $fp );
*/
$discounts=$order->getDiscount()->getApplyResult();
$discount=0;
foreach ($discounts["PRICES"]["BASKET"] as $tmp)
{
$discount+=(float)$tmp["DISCOUNT"];
}
foreach ($discounts["PRICES"]["DELIVERY"] as $tmp)
{
$discount+=(float)$tmp["DISCOUNT"];
}
$arFields["DISCOUNT_VALUE"]=$discount;
//$arFields["PODITOG"]=$order->getPrice()+$discount;
$arFields["DELIVERY_PRICE"]=$order->getDeliveryPrice()+' р.';
$arFields["DELIVERY_SYSTEM"]="Без доставки";
/*$arDeliv = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']);
$DELIVERY_SYSTEM=$arDeliv["NAME"];
$arFields["DELIVERY_SYSTEM"]="Без доставки";
if ($DELIVERY_SYSTEM!="")
{
$arFields["DELIVERY_SYSTEM"]=$DELIVERY_SYSTEM;
// $ORDER_DATA.="Способ доставки: ".$DELIVERY_SYSTEM."<br>";
}*/
$shipmentCollection = $order->getShipmentCollection();
foreach ($shipmentCollection as $arShipment)
{
if (!$arShipment->isSystem())
{
$arFields["DELIVERY_SYSTEM"]=$arShipment->getDeliveryName();
}
}
$arPaySys = CSalePaySystem::GetByID($arOrder['PAY_SYSTEM_ID'], 1);
$PAY_SYSTEM=$arPaySys['NAME'];
$arFields["PAY_SYSTEM"]="Не выбрано";
if ($PAY_SYSTEM!="")
{
$arFields["PAY_SYSTEM"]=$PAY_SYSTEM;
//$ORDER_DATA.="Способ оплаты: ".$PAY_SYSTEM."<br>";
}
if ($arOrder['USER_DESCRIPTION']=="") $arOrder['USER_DESCRIPTION']="нет";
$ORDER_DATA.="Комментарий к заказу: {$arOrder['USER_DESCRIPTION']}<br>";
$arFields["ORDER_DATA"]=$ORDER_DATA;
$BASKET_PRICE=0;
$dbBasketItems = CSaleBasket::GetList(array("ID" => "ASC"), array("ORDER_ID" => $ORDER_ID));
$arFields['ORDER_LIST']='<table style="margin: auto; width: 100%; border: 0px;" border="0" width="100%" cellspacing="0" cellpadding="0" align="left" bgcolor="#ffffff">
<tbody>
<tr>
<th style="margin: 0px; padding: 2px 0px; font-size: 10px; color: #757775; border-top: #c9c9c9 1px dotted; border-bottom: #c9c9c9 1px dotted;" align="left">ТОВАР</th>
<th style="margin: 0px; padding: 2px 0px; font-size: 10px; color: #757775; border-top: #c9c9c9 1px dotted; border-bottom: #c9c9c9 1px dotted;" align="center">ШТ.</th>
<th style="margin: 0px; padding: 2px 0px; font-size: 10px; color: #757775; border-top: #c9c9c9 1px dotted; border-bottom: #c9c9c9 1px dotted;" align="right">ЦЕНА</th>
</tr>';
while ($arItems = $dbBasketItems->Fetch())
{
$arSelect = Array("ID", "NAME", "DETAIL_PICTURE","DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID"=>20, "ID"=>$arItems["PRODUCT_ID"]);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nTopCount"=>1), $arSelect);
$DETAIL_PICTURE="";
if($ob = $res->GetNextElement())
{
$arFields1 = $ob->GetFields();
if ((int)$arFields1["DETAIL_PICTURE"]>0)
{
$arFields1["DETAIL_PICTURE"]=CFile::GetFileArray($arFields1["DETAIL_PICTURE"]);
$DETAIL_PICTURE=$arFields1["DETAIL_PICTURE"]["SRC"];
}
}
$BASKET_PRICE+=$arItems['PRICE']*$arItems['QUANTITY'];
$arFields['ORDER_LIST'].='
<tr>
<td style="margin: 0px; padding: 12px 0px; font-size: 12px; color: #666666; border-bottom: #c9c9c9 1px dotted;" align="left">
<table style="margin: auto; width: 100%; border: 0px;" border="0" width="100%" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td style="width: 65px; margin: 0px; padding: 0px; text-align: center"><a href="" target="_blank" style="text-decoration: none"><img src="'.$DETAIL_PICTURE.'" style="border-width: 0px; border-style: none; border-color: transparent; display: block; max-height: 70px !important;"></a></td>
<td style="margin: 0px; padding: 0; font-size: 12px; font-weight: bold;"><a href="'.$arFields["DETAIL_PAGE_URL"].'" target="_blank" style="font-size: 12px; color: #666666; text-decoration: none">'.$arItems['NAME'].'</a></td>
</tr>
</tbody>
</table>
</td>
<td style="margin: 0px; padding: 12px 10px; font-size: 12px; color: #666666; border-bottom: #c9c9c9 1px dotted;" align="center">'.$arItems['QUANTITY'].'</td>
<td style="margin: 0px; padding: 12px 0px; font-size: 12px; color: #666666; white-space: nowrap; border-bottom: #c9c9c9 1px dotted;" align="right">'.number_format($arItems['BASE_PRICE'],0,'.',' ').' р</td>
</tr>';
}
$arFields['ORDER_LIST'].='</tbody>
</table>';
$arFields["PODITOG"]=$BASKET_PRICE;
//$arFields["ORDER_DATA"]="";
}
}
[/CODE]