Сначала немного теории. В битриксе у товара есть флаг CATALOG_AVAILABLE, который показывает, доступен товар для покупки или нет. На основе чего рассчитывается этот параметр?
Флаг CATALOG_AVAILABLE устанавливается в значение Y (доступен), если: 1. Включен количественный учет (с учетом глобальных настроек в модуле «Торговый каталог»). 2. Доступное количество товара больше 0 (не путать с количеством на складе). 3. Если количество товаров 0, но им разрешена покупка при 0 (с учетом глобальных настроек в модуле «Торговый каталог»). Иначе устанавливается флаг недоступности.
Товар:
Модуль "торговый каталог":
Внимание! На данный момент, флаг CATALOG_AVAILABLE корректно устанавливается только для простых товаров, у которых нет торговых предложений.
Все ниже описанное может вам помочь, если у вас простой каталог без торговых предложений.
Теперь задача. У вас есть на сайте товары, которые недоступны для покупки (нулевое количество, например). Если сделать экспорт простого каталога в Яндекс, то получится файл, где у товаров которого будут стоят атрибуты available=«true" если товар доступен для покупки и available=«false», если товар недоступен для покупки. Вот пример такого файла:
Для наглядности у меня всего 2 товара: один в наличии, другой нет.
А что делать, если вы хотите, чтобы в файл экспорта вообще не попадали товары, которые недоступны для покупки? На данный момент выход один - кастомизация скрипта выгрузки. Давайте приступать. Для начала нужно скопировать стандартные скрипты, так как мы помним, что ядро продукта изменять нельзя.
Открываем админку. Заходим в папку /bitrix/modules/catalog/load Находим 2 файла yandex_run.php и yandex_setup.php, отмечаем оба файла галочкой и копируем их в папку /bitrix/php_interface/include/catalog_export
Переименовываем файлы в yandex_custom_run.php и yandex_custom_setup.php соответственно.
Теперь у нас в админе появился новый способ выгрузки, используя наши скопированные скрипты.
Открываем файл /bitrix/php_interface/include/catalog_export/yandex_custom_run.php в режиме редактирования php и ищем строку:
Сохраняем изменения. Теперь делаем выгрузку через наш файл и видим, что в файле отсутствуют товары, которые недоступны для покупки.
А что делать тем, у кого используются торговые предложения? Общего решения на данный момент нет, но пока проблема может быть решена опять же только через кастомизацию. Например, можно создать свойство инфоблока, в котором хранить признак доступности товара с торговыми предложениями. В зависимости от значения свойства, устанавливать соответствующий флаг. Минус в том, что нужно следить за актуальностью значений свойства во всех товарах.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».