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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пишите в комментариях, помогла ли вам данная статья чуть лучше понять механизм фильтрации в 1С-Битрикс и экспорт данных в Яндекс Маркет 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года.Предоставляю услуги по созданию проектов на CMS 1С-Битрикс — сайты, шаблоны и компоненты с нуля, а также доработка функционала на уже существующих проектах.


Другие виды работ:

— Вёрстка макетов (HTML, CSS, JavaScript, jQuery, JADE, SASS, Gulp);

— Натяжка вёрстки на 1С-Битрикс;

— Скрипты на PHP и JS (jQuery);

— Парсинг (CSV, XML, XLSX, JSON);

— Интеграции со сторонними сервисами по API;

— Многоязычные версии сайтов;

— и многое другое :)


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

E-mail: dmitriyribka@gmail.com

Skype: cinemacreaterus


6 комментария

  1. Дмитрий, спасибо огромное за ваш пост! С его помощью удалось решить эту проблему!

  2. Доброго времени суток
    могут ли строки отличатся от примера и реальных ?
    можно ли заставить выгрузить только с определенных складов ?

    1. Евгений, да, в новых версиях 1С-Битрикс могут быть другие файлы и код соответственно. В статье рассматривал файлы с рабочего проекта (проект существует относительно давно). А насчет складов — не уверен, но мне кажется что нет, т.к. их используют для отгрузки уже после оформления.

  3. А как сделать выборку по цене? Чтобы на яндекс грузились только товары которые выше 1000 например?

    1. Если у вас базовая цена, то допишите в $filter (в статье подробнее где его искать)
      «>CATALOG_PRICE_1» => 1000
      В итоге получится что-то вроде:
      $filter = Array(«IBLOCK_ID»=>$IBLOCK_ID, «ACTIVE_DATE»=>»Y», «ACTIVE»=>»Y», «>CATALOG_PRICE_1» => 1000);

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *