1С-Битрикс выгрузка в Яндекс Маркет товаров в наличии

Одна из самых неочевидных вещей в Битриксе является выгрузка в Яндекс Маркет, или, как это называется в админке – экспорт данных (найти можно зайдя в админку, пункт Магазин -> Настройки -> Экспорт данных). Перед вами список всех стандартных выгрузок. Наша задача, скопировать скрипт в папку/bitrix/php_interface/include/catalog_export/ и открыть его в любом редакторе кода.

Как создать свой файл выгрузки в 1С-Битрикс

Чтобы создать свой файл выгрузки, необходимо скопировать 2 файла, к примеру,yandex_run.php и yandex_setup.php после чего переименовать их как-то на свое усмотрение, но желательно попонятнее. Как видно по этим 2 файлам, yandex это имя, а все что идет дальше, это приставки, именно это имя мы и будем менять. Кстати, будьте внимательны, эти файлы должны быть нормальные по объему, и содержать в себе очень много непонятного на первый взгляд код.

Если в файле будет строка

 require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/load/yandex_run.php");

или что-нибудь в этом духе, пройдите по указанному пути, и скопируйте оба файла в нашу папку /bitrix/php_interface/include/catalog_export/.

Как выгрузить товары в наличии которые есть на сайте в Яндекс Маркет

Искать мы будем фразу “filter“. Жмем в редакторе Ctrl+F и ищем все что связано с этим словом, у меня нашло порядка 18 совпадений, но нам нужен код такого содержания (у меня 594 строка):

$arSelect = array("ID", "LID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "ACTIVE", "ACTIVE_FROM", "ACTIVE_TO", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "LANG_DIR", "DETAIL_PAGE_URL", 'PROPERTY_CUSTOM_DELIVERY_O');
$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y"); 


В переменную $arSelect у нас попали выбранные поля – это нам не надо. А вот переменная $filter содержит в себе то что мы искали и именно он будет применяться к нашим товарам. Было бы более очевидным, если бы он назывался $arFilter, ну да ладно.

Дописываем наше условие “>CATALOG_QUANTITY” => 0 – что значит КОЛИЧЕСТВО ТОВАРОВ БОЛЬШЕ 0. В итоге получаем:

$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", ">CATALOG_QUANTITY" => 0); 


Как выгрузить в Яндекс маркет каталог с торговыми предложениями (SKU) 1С-Битрикс

Тут картина приблизительно такая же, только нам понадобится другая строка (у меня это 870):

$arOfferSelect = array("ID", "LID", "IBLOCK_ID", "ACTIVE", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "DETAIL_PAGE_URL");
$arOfferFilter = array('IBLOCK_ID' => $intOfferIBlockID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 'PROPERTY_'.$arOffers['SKU_PROPERTY_ID'] => 0, ">CATALOG_QUANTITY" => 0);

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

Как выгрузить в яндекс маркет товары типа список

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

	
$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_395" => 720);

где PROPERTY_395 (тут 395 это ID свойства по которому мы будем фильтровать, можно использовать символьный код свойства, но я предпочитаю ID т.к. изменить ID никак нельзя), а 720 – это вариант из списка (у меня он соответствует варианту Да – например, свойство выгружать товар в маркет).

Как выгрузить только те товары, у которых заполнены цены?

Мы проверяем заполнена ли у товара цена (можно либо больше 0, либо не равно 0). Например, это может пригодится вам, когда выгружаем только оптовый каталог. Представим, что у нас есть тип цены, у которого ID = 3 и называется “Оптовые цена”. Нам нужно вывести все товары с этой ценой. Пишем следующее:

$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", ">CATALOG_PRICE_3" => 0);

Как вы поняли, добавилось условии “>CATALOG_PRICE_3″ => 0 (или делаем нашу цену не равной 0 “!CATALOG_PRICE_3″ => 0) сюда же можем дописать наше условие с количеством, а для товаром с SKU добавляем на другой строчке внизу (в $arOfferFilter).

Возврат к списку

Заказать