Bitrix получить кол-во элементов в инфоблоке с фильтрами
1 2 3 4 5 6 |
$count = intval(CIBlockElement::GetList(false, [ "IBLOCK_ID" => 5, "PROPERTY_NAME" => 'VALUE', ], ['IBLOCK_ID'])->Fetch()['CNT']); echo $count; |
1 2 3 4 5 6 |
$count = intval(CIBlockElement::GetList(false, [ "IBLOCK_ID" => 5, "PROPERTY_NAME" => 'VALUE', ], ['IBLOCK_ID'])->Fetch()['CNT']); echo $count; |
Удаление элементов из инфоблока Битрикс
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
<?php // устанавливаем лимит выполнения скрипта 120 сек set_time_limit(120); // включаем вывод ошибочек ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); // включаем замер исполнения скрипта $startTime = microtime(true); // логирование pid start $pid = getmypid(); $file = fopen('../logs/detelePid.txt', 'a+'); $message = "pid: [$pid] DELETE : " . date("d.m.Y H:i:s") . PHP_EOL; fwrite($file, $message); fclose($file); // логирование pid end // подключаем prolog bitrix require $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/main/include/prolog_before.php'; // подключаем нужные модули CModule::IncludeModule("iblock"); CModule::IncludeModule("sales"); /** * Удаляем картинку элемента * @param int $element_id ID элемента */ function deleteImage($element_id) { $res = CIBlockElement::GetByID($element_id); if ($ar_res = $res->GetNext()) { CFile::Delete($ar_res['DETAIL_PICTURE']); } } /** * Удаляем все элементы из бд * @return [array] */ function deleteElementDisk($block_id, $count) { $arSelect = array("ID"); $arFilter = array("IBLOCK_ID" => $block_id); $res = CIBlockElement::GetList(array(), $arFilter, false, Array("nPageSize"=>$count), $arSelect); $i = 0; while ($r = $res->GetNext()) { $id = $r['ID']; CIBlockElement::Delete($id); // удаляем элемент CCatalogProduct::Delete($id); // удаляем торговое предложение deleteImage($id); // удаляем картинку $i++; } return $i; } $z = deleteElementDisk(7, 10000); $endTime = microtime(true); echo "Удалено записей: {$z}\n"; echo "\nВремя выполнения скрипта: " . ($endTime - $startTime) . " Сек.\n"; //вывод результата |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/** * Возвращает скидочную цены/цену с учетом скидки * @param boolean $type [true/false] * @return [int] [Если true возвращаем скидку, иначе возвращает сумму с учетом скидки] */ function getDiscountPrice($type = true) { $dbBasketItems = CSaleBasket::GetList( array("ID" => "ASC"), array( 'FUSER_ID' => CSaleBasket::GetBasketUserID(), 'LID' => SITE_ID, 'ORDER_ID' => 'NULL', ), false, false, array( 'ID', 'PRODUCT_ID', 'QUANTITY', 'PRICE', 'DISCOUNT_PRICE', 'WEIGHT', ) ); $allSum = 0; $allWeight = 0; $arItems = array(); while ($arBasketItems = $dbBasketItems->Fetch()) { $allSum += ($arItem["PRICE"] * $arItem["QUANTITY"]); $allWeight += ($arItem["WEIGHT"] * $arItem["QUANTITY"]); $arItems[] = $arBasketItems; } $arOrder = array( 'SITE_ID' => SITE_ID, 'USER_ID' => $GLOBALS["USER"]->GetID(), 'ORDER_PRICE' => $allSum, 'ORDER_WEIGHT' => $allWeight, 'BASKET_ITEMS' => $arItems, ); $arOptions = array( 'COUNT_DISCOUNT_4_ALL_QUANTITY' => 'Y', ); $arErrors = array(); CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors); $PRICE_ALL = 0; $DISCOUNT_PRICE_ALL = 0; $QUANTITY_ALL = 0; foreach ($arOrder["BASKET_ITEMS"] as $arOneItem) { $PRICE_ALL += $arOneItem["PRICE"] * $arOneItem["QUANTITY"]; $DISCOUNT_PRICE_ALL += $arOneItem["DISCOUNT_PRICE"] * $arOneItem["QUANTITY"]; $QUANTITY_ALL += $arOneItem['QUANTITY']; } $result['PRICE_ALL'] = $PRICE_ALL; // Цена у учетом скидки $result['DISCOUNT_PRICE_ALL'] = $DISCOUNT_PRICE_ALL; // Скидка $result['QUANTITY_ALL'] = $QUANTITY_ALL; // Кол-во товара return ($type) ? $result['DISCOUNT_PRICE_ALL'] : $result['PRICE_ALL']; } |