Столкнулся с тем, что в модуле выгрузки отсутствует эта опция. В планах реализации у Битрикс ее нет, а жить как то надо. Умный фильтр не умеет фильтровать по наличию товара в торговых предложениях. Получаем кучу лишнего в выдаче. Более того, логика у новой выгрузки другая и она подцепляет ВСЕ торговые предложения товара, если хоть одно торговое предложение есть на складе. Получаем кучу хлама в базе из за лишних ТП и длительную выгрузку на сайт.
Если у кого есть решение лучше, то поделитесь обязательно!
1. Деактивируем все торговые предложения, которые нельзя купить. И желательно уменьшить кол-во выгружаемых товаров из 1с. Сами понимаете, такой костыль создает доп.нагрузку.
[CODE]AddEventHandler("catalog", "OnSuccessCatalogImport1C", Array("Divasoft1C", "DeactivateOffersAfterImport"));
class Divasoft1C {
function DeactivateOffersAfterImport(){
if(strpos($_REQUEST['filename'], 'rests') !== false) {
CModule::IncludeModule("iblock");
$el = new CIBlockElement;
$res = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 14,"ACTIVE"=>"Y","CATALOG_AVAILABLE"=>"N"), false, array("nPageSize"=>7000), array("ID"));
while ($ob = $res->GetNext()) {
$el->Update($ob['ID'], array("ACTIVE"=>"N"));
}
}
}
}[/CODE]
2. Добавляем дополнительный фильтр в страницу каталога и поиска.
[CODE]global $arrFilter;
$arSubQuery = array("=CATALOG_AVAILABLE" => "Y");
$arrFilter[] = array(
'LOGIC' => 'OR',
array(
'ID' => CIBlockElement::SubQuery('PROPERTY_CML2_LINK', $arSubQuery),
),
array(
"LOGIC" => "AND",
array('OFFERS' => NULL),
array('=CATALOG_AVAILABLE' => "Y"),
),
);[/CODE]
Получаем актуальные товары в каталоге.
Если у кого есть решение лучше, то поделитесь обязательно!
1. Деактивируем все торговые предложения, которые нельзя купить. И желательно уменьшить кол-во выгружаемых товаров из 1с. Сами понимаете, такой костыль создает доп.нагрузку.
[CODE]AddEventHandler("catalog", "OnSuccessCatalogImport1C", Array("Divasoft1C", "DeactivateOffersAfterImport"));
class Divasoft1C {
function DeactivateOffersAfterImport(){
if(strpos($_REQUEST['filename'], 'rests') !== false) {
CModule::IncludeModule("iblock");
$el = new CIBlockElement;
$res = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 14,"ACTIVE"=>"Y","CATALOG_AVAILABLE"=>"N"), false, array("nPageSize"=>7000), array("ID"));
while ($ob = $res->GetNext()) {
$el->Update($ob['ID'], array("ACTIVE"=>"N"));
}
}
}
}[/CODE]
2. Добавляем дополнительный фильтр в страницу каталога и поиска.
[CODE]global $arrFilter;
$arSubQuery = array("=CATALOG_AVAILABLE" => "Y");
$arrFilter[] = array(
'LOGIC' => 'OR',
array(
'ID' => CIBlockElement::SubQuery('PROPERTY_CML2_LINK', $arSubQuery),
),
array(
"LOGIC" => "AND",
array('OFFERS' => NULL),
array('=CATALOG_AVAILABLE' => "Y"),
),
);[/CODE]
Получаем актуальные товары в каталоге.