/**
* @deprecated deprecated since catalog 17.5.9
* @see \Bitrix\Catalog\Product\Basket::add
*/
$oid = intval($_REQUEST["oid"]);
if ($oid > 0) {
foreach ($arResult['JS_OFFERS'] as $key => $jsOffer) {
if ($jsOffer["ID"] == $oid) {
$arResult['OFFERS_SELECTED'] = $key;
break;
}
}
}
$cities = \Bitrix\Sale\Location\LocationTable::getList([
"select" => ["*", 'NAME_RU' => 'RU_LAN.NAME'],
'runtime' => [
'RU_LAN' => [
'data_type' => \Bitrix\Sale\Location\Name\LocationTable::class,
'reference' => [
'=this.ID' => 'ref.LOCATION_ID',
'=ref.LANGUAGE_ID' => new \Bitrix\Main\DB\SqlExpression('?i', 'ru'),
],
['join_type' => 'LEFT']
],
]
])->fetchAll();
Внимание! При использовании этой технологии необходимо учитывать, что над результатами работы функций, обеспечивающих откладывание других функций, нельзя выполнять какие-либо действия.
Значение, возвращаемое отложенной функцией, не возвращается, а сразу выводится в месте вызова AddBufferContent, а всё, что выводится в отложенной функции, будет выведено до начала шаблона.
в компоненте новостей > в детальном шаблоне компонента устанавливаю
$APPLICATION->SetTitle("Заголовок 1"); //- задать заголовок страницы
$APPLICATION->SetPageProperty('title','Заголовок 2');// - тоже задать заголовок страницы (но эта функция имеет приоритет над первой)
<?$APPLICATION->ShowTitle()?> - показ заголовка страницы // покажет заголовок 1
<?$APPLICATION->ShowTitle(false)?> - показ заголовка страницы, заданного через SetTitle // покажет заголовок 2
<?
\Bitrix\Main\Loader::includeModule("sale");
\Bitrix\Main\Loader::includeModule("catalog");
\Bitrix\Sale\Order::load($orderId);
$basket = $order->getBasket();
$shipmentCollection = $order->getShipmentCollection();
$products = [1, 2, 3];
$quantity = 1;
$newBasketItems = [];
//Добавляем новые товары в корзину
foreach ($products as $productId) {
$item = $basket->createItem('catalog', $productId);
$item->setFields(array(
'QUANTITY' => $quantity,
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => $order->getSiteId(),
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
));
$item->setField("QUANTITY", $quantity);
$newBasketItems[] = $item;
}
//Теперь эти товары надо добавить в отгрузку. В примере добавляю в первую попавшуюся
foreach ($shipmentCollection as $shipment) {
if (!$shipment->isSystem()) {
foreach ($newBasketItems as $newBasketItem) {
/** @var \Bitrix\Sale\Shipment $shipment */
$shipmentItemCollection = $shipment->getShipmentItemCollection();
$shipmentItem = $shipmentItemCollection->createItem($newBasketItem);
$shipmentItem->setQuantity($item->getQuantity());
}
break;
}
}
//Пересчитываем заказ
$discount = $order->getDiscount();
$result = new \Bitrix\Main\Result();
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
$discount->setOrderRefresh(true);
$discount->setApplyResult(array());
$res = $basket->refreshData(array('PRICE', 'COUPONS'));
if (!$res->isSuccess())
$result->addErrors($res->getErrors());
$res = $discount->calculate();
if (!$res->isSuccess())
$result->addErrors($res->getErrors());
if (!$order->isCanceled() && !$order->isPaid()) {
/** @var \Bitrix\Sale\PaymentCollection $paymentCollection */
if (($paymentCollection = $order->getPaymentCollection()) && count($paymentCollection) == 1) {
/** @var \Bitrix\Sale\Payment $payment */
if (($payment = $paymentCollection->rewind()) && !$payment->isPaid()) {
$payment->setFieldNoDemand('SUM', $order->getPrice());
}
}
}
//Сохраняем заказ, а не корзину
//Если обработка идет в каком то событии заказа, то метод save вызывать не надо
$order->save();
if (
is_array($this->arParams['RESTRICT_CHANGE_PAYSYSTEM'])
&& in_array($orderFields['STATUS_ID'], $this->arParams['RESTRICT_CHANGE_PAYSYSTEM'])
)
{
$orderFields['LOCK_CHANGE_PAYSYSTEM'] = 'Y';
}
AddEventHandler("iblock", "OnBeforeIBlockElementDelete", Array("MyClass", "OnBeforeIBlockElementDeleteHandler"));
class MyClass
{
function OnBeforeIBlockElementDeleteHandler($ID)
{
$res = CIBlockElement::GetByID($ID);
if($arItem = $res->GetNext()){
\Bitrix\Main\Diag\Debug::dumpToFile($arItem, 'arItem');
}
}
}
Bitrix\Main\Page\Asset::getInstance()->addCss("/path/to/css/style.css");
Bitrix\Main\Page\Asset::getInstance()->addJs("/path/to/js/script.js");