Количество элементов в разделе и подразделах с остатком больше 0 в Битрикс

Похоже, что лучше ничего нет, чем

$arSelect = Array("ID");
$sect = CIBlockElement::GetList(
Array("ID" => "DESC"),
Array("IBLOCK_ID" => $arSection["IBLOCK_ID"],
"ACTIVE" => "Y",
"SECTION_ID" => Array($arSection['ID']),
"INCLUDE_SUBSECTIONS" => 'Y',
">CATALOG_QUANTITY" => "0"
),
false,
Array("nTopCount" => 3),
$arSelect);

while ($el = $sect->GetNextElement()) {
$res_count++;
break;
};

 

Документ (счет) в PDF Bitrix

За основу взяли готовый вариант счета из платежного модуля оплаты счета один к одному, скажем так, но не взлетело! Ведь там есть настройки платежной системы перед формированием счета, а у нас и оплаты с такой системой в заказе может и не быть.

Тогда для оживления счета были внесены некоторые изменения в код: Читать далее Документ (счет) в PDF Bitrix

Триггер «Ожидает оплату»

Сегодня решил автоматизировать жмакание кнопки в RetailCRM.

Создал триггер, когда статус заказа переходит в «Ожидает оплату», то клиенту направляется письмо по шаблону.

Сделать мега просто:

  1. Создаем шаблон письма по событию «Отправка письма при изменении заказа»
  2. Создаем триггер
  3. В условие прописываем
    changeSet.hasChangedField(«status») and changeSet.getNewValue(«status»).getCode() == «p-waiting»
    где «p-waiting» — код статуса «Ожидает оплату»
  4. Выбираем действие «Отправить письмо по шаблону» и выбираем созданный шаблон.

Все. Работает )

Главное меню с ограничением по активному разделу

В прошлый раз было меню, где выпадали подразделы активного пункта, но и показывалось все остальное меню на ряду с ними. 

В этом же варианте меню на главной странице состоит из разделов каталога первого уровня, но при выборе раздела все, кроме выбранной ветки скрывается. Читать далее Главное меню с ограничением по активному разделу

Мега-долгий запрос в компоненте catalog.section

Или это прикол, или так надо, но никому не надо, но битрикс при выводе элементов раздела зачем-то загружает все свойства каждого элемента, что в некоторых случаях приводит к оооооооочень долгой загрузке страницы сайта. Доходило до 60-70 секунд, если дожидаться до конца.

Тормозит все дело этот запрос:

$query = $connection->query(«
SELECT
P.ID
,P.CODE
,P.TEMPLATE
,P.ENTITY_TYPE
,P.ENTITY_ID
,IP.VALUE
,IP.ELEMENT_ID
FROM
b_iblock_element_iprop IP
INNER JOIN b_iblock_iproperty P ON P.ID = IP.IPROP_ID
WHERE
IP.IBLOCK_ID = «.$this->iblockId.»
AND IP.ELEMENT_ID in («.implode(«, «, $ids).»)
«);

Еще бы написали просто select *, да и зачем мне свойства элементов, если я их не заказывал?!

Итого было принято решение тупо закоментить код функции

public function queryValues()
{ }

Ибо она в моем проекте не нужна. Профит! 0.7-1.5 секунды!

ах, да, лежит все это в /home/bitrix/www/bitrix/modules/iblock/lib/inheritedproperty/elementvalues.php

Добавление в корзину через CSaleBasket::Add()

Как бы все кладется в корзину, но после оформления заказа в админке товар в заказе был без связи с самим товаров.
После долгих переборов было выявлено, что нужно передавать следующий набор данных:

$arFields = array(
"PRODUCT_ID" => $row["ID"],
'CATALOG_XML_ID' => $row['IBLOCK_EXTERNAL_ID'],
'PRODUCT_XML_ID' => $row['EXTERNAL_ID'],
"PRODUCT_PRICE_ID" => 0,
"PRICE" => $_SESSION["BYORDERPRICE"][$row["ID"]],
"CURRENCY" => "RUB",
"QUANTITY" => 1,
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $row["~NAME"],
"WEIGHT" => $row["WEIGHT"],
"MODULE" => "catalog",
"NOTES" => "LONGORDER",
"DETAIL_PAGE_URL" => $row["DETAIL_PAGE_URL"],
"CALLBACK_FUNC" => "CatalogBasketCustomCallback",
"ORDER_CALLBACK_FUNC" => "CatalogBasketOrderCustomCallback",
"CANCEL_CALLBACK_FUNC" => "CatalogBasketCancelCallback",
"PAY_CALLBACK_FUNC" => "CatalogPayOrderCallback"
);

Где $row заполняется свойствами элемента CIBlockElement::getList().

Тогда товар попадает в корзину, потом в заказ, и из админки виден со ссылкой на карточку товара.

Нужно все это было для интеграции с RetailCRM, т.к. после второго обмена товары, что были добавлены вручную скриптом в корзину, дублировались.

Но теперь все ок )


Если база MSSQL стала подозрительной

После восстановления базы данных MSSQL без ее лога, база стала подозрительной по мнению MSSQL, а как следствие, перестала быть доступной.

Тогда было проведено следующее: Читать далее Если база MSSQL стала подозрительной

Обработчик Яндекс Касса yandex (yandex_3) не активен

Не знаю что за чудо, но пропал, хотя и был раньше, обработчик из списка в Битриксе.

Теперь там только эти:

а нужен был такой: Читать далее Обработчик Яндекс Касса yandex (yandex_3) не активен