Сниппеты для Битрикса

Общее

Очистка буфера вывода

$APPLICATION->RestartBuffer();
ob_end_clean(); // второй вариант

Подключение CMS

Требуется вставить перед каждым скриптом

if(php_sapi_name() !== 'cli') die('Access denied'); // только из CLI - если требуется
 
$_SERVER["DOCUMENT_ROOT"] = dirname(__DIR__); // если в подкаталоге
 
define("LANGUAGE_ID", "s1"); // определяем сайт
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
 
// your code here

Заход под пользователем

Удобно зайти в Битрикс от имени какого-либо пользователя по ID не зная его пароль:

$test_id = 100; // 100 - ID пользователя
global $USER;
$USER->Authorize($test_id, false, false);

Отправка почты

CEvent::Send("EVENT_NAME", 'sa', array(
  "NAME" => "Фамилия Имя Отчество",
  "EMAIL" => "test@test.ru",
  "DATA" => "Data"
));

Магазин

Получение заказа

$arFilter = array('ID' => 100); // Order ID
$dbOrder = CSaleOrder::GetList(array(), $arFilter);
 
$arOrder = $dbOrder->Fetch();
die(var_dump($arOrder));

Получение позиций заказа с уточнением их количества

$ids = array('1', '2'); // номера заказов
 
foreach($ids as $id) {
  $dbBasket = CSaleBasket::GetList(
    array("ID" => "ASC", "NAME" => "ASC"),
    array("ORDER_ID" => $id),
    false,
    false,
    array("*")
  );
  echo $id . ' ' . $dbBasket->SelectedRowsCount() . PHP_EOL;
}