При выгрузке поставил условие по наличии номенклатуры на складе , если больше 0. Тоесть если отсутсвует на даном складе , то не выгружается уже. Как сделать так , чтобы отсутсвующая номенклатура в торговом каталоге деактивировалась? Ведь зачем мне лишние товары на сайте?! В настройке обмена в 1С , Режим обмена - только изменения.
Он не умер, ваша проблема не решается стандартными настройками. В ближайших обновлениях выйдет система фильтрации отсутствующих товаров в компонентах каталога, в ней будет 3 варианта действий:
Вы имеете ввиду , что если Яндекс и Гугл проиндексирует сайт , а потом мы удалим товары которые нам не надо , то пользователи будут попадать ищ поисковиков на несуществующие уже страницы. Вобще то это правильно , я как то об этом не задумывался.
Ладно , тогда как быть с товаром , который выгружен на сайт , но снят с производства , и остаток его уже равен 0 ???
Если с ним ничего не делать , то БД сайта начнет разбухать , и страниц с такими товарами накопится туча.
Вы предлагаете , чтобы на детальной странице товар оставался , и на него мы попадали. Ну а как такой товар деактивировать в списке? Или точнее не показывать в списке? Можно ли это сделать уже имеющимися средствами в даной версии Битрикса , или же Вы только планируете это запустить в обновлениях и на даных порах прийдется курочить код программисту?
Если товар никогда не появится - его можно удалять или деактивировать. Но лучше в 1С отметить, чтобы он не выгружался и всё, он удалится сам (в зависимости от настроек обмена).
Но нельзя, чтобы товар на сайте активировался-деактивировался-активировался-деактивировался в зависимости от остатка. Иначе у вас почти все товары будут так плясать, и с поисковиками будет некрасиво.
Чтобы не выводить товар в списке используйте в catalog.section фильтр: $arrFilter = array( ">CATALOG_QUANTITY" => 0 );
Смотрите , как я решаю даную проблему. Сегодня пришла идея.
Делаю два плана обмена выгрузки товаров на стороне 1С.
Обмен №1 Выгрузка изменений
Отбор ставлю только по ценам , складам и группам номенклатуры. Настраиваю обмен по расписанию , пускай периодически выгружает количественное изменение , изменения карточек номенклатуры , и прочие... Тоесть если номенклатуры станет 0 , то на Битриксе тоже прийдет уже 0. Этим обменом пользоваться буду постоянно.
Обмен №2 Полная выгрузка.
Вот от него то деактивация и будет плясать. Так как только при полной выгрузке при установленной настройке в настройках битрикса "Что делать при отсутсвии товара в файле импорта" (Деактивировать) с отсутсвующим товаром и произойдет та самая деактивация. В этой настройке добавлен только одна настройка отбора к тем что в №1 - это количество на складах "Равно или больше 1". Так что уже если меньше одного , то в файл даная номенклатура не попадет.
Обмен №2 буду делать раз в 3 месяца или раз в пол года...
Да , и в этом обмене я отключил выгрузку фоток , так как в отличии от настройки обмена №1 , тут будет обем информации побольше , и будет огромная нагрузка на сервак ,за что потом ругаются и просят перейти на тариф хостинга подороже. Фотки тут не надо , так как они при обмене №1 попадут уже на сайт.
Правильно ли я мыслю? Попрошу меня исправить и дополнить.
Ваша схема выгрузки за 3-6 месяцев много раз измениться, практика внесет коррективы Вам Артем совершенно правильно все объяснил, а Битрикс вообще это уже внесет в ближайшие обновления. Прислушайтесь, вам все расклады дали.
Но тут еще один вопрос .... Если все таки выводить товар с количеством 0 , то на отсутсвующий товар клиент может подписаться. Тоесть вроде ему приходит уведомлении как только товар появится на складе , или как...
Как тут отделить товар временно отсутствующий ,и товар которого больше не будет. Я так понимаю , никаких автоматических решений тут нету , и надо всё деактивировать вручную?
Артемий Зайцев пишет: Если товар никогда не появится - его можно удалять или деактивировать. Но лучше в 1С отметить, чтобы он не выгружался и всё, он удалится сам (в зависимости от настроек обмена).
Но нельзя, чтобы товар на сайте активировался-деактивировался-активировался-деактивировался в зависимости от остатка. Иначе у вас почти все товары будут так плясать, и с поисковиками будет некрасиво.
Чтобы не выводить товар в списке используйте в catalog.section фильтр: $arrFilter = array( ">CATALOG_QUANTITY" => 0 );
Артем, подскажите, пожалуйста, где именно это надо сделать? Я имею в виду, куда именно нужно вставить
Артемий Зайцев пишет: Код вставляется над компонентом catalog.section.
В параметрах catalog.section указывается имя фильтра arrFilter (обычно уже стоит по умолчанию)
Простите за отсутсвие опыта... из этого вытекают вопросы: 1 - код надо вставить в шаблоне? 2 - Имя фильтра указываются в разделе "Настройки фильтра" в "Параметрах компонента" в поле "Фильтр:"?
перестает работать фильтр по цене, т.е. указывая диапазон, допустим 100-300 руб, фильтр показывает, что есть 3 элемента, но при применении данного фильтра показываются в итоге все товары, которые в категории находятся.
Если код убрать, то фильтр по цена вновь работает. Как это побороть?
hommedeplage, Тут дело в том, что вы переопределяете массив фильтра целиком. В условиях когда фильтр не используется, это нормально, но если он используется то нужно не создавать массив, а дописывать в него
AlVa пишет: hommedeplage , Тут дело в том, что вы переопределяете массив фильтра целиком. В условиях когда фильтр не используется, это нормально, но если он используется то нужно не создавать массив, а дописывать в него
К сожалению фильтр CATALOG_QUANTITY- не решение проблемы, а костыль.
У меня множество сайтов, на которых совсем не нужны товары с остатком 0, они никогда не появятся.
Типичный пример: - Товаров 25 000 штук. - В 1С стоит выгрузка только изменений (полная выгрузка не подходит из-за количества товаров)
Товары постоянно продаются и добавляются новые, и показывать товары с остатком 0 мне не нужно, и вообще хранить их в БД на сайте не нужно, так как за пару месяцев БД разрастется до сотен тысяч товаров, которые никогда не понадобятся.
По хорошему мне их и из 1С не нужно выгружать, но выгрузка 1С не позволяет этого делать когда выбираешь выгрузку "только изменений".
p.s. если кто то посоветует поставить в настройках выгрузки "Остаток больше 0" - то эта фишка работает только при полной выгрузке товаров из 1С
Antonio Vassen пишет: p.s. если кто то посоветует поставить в настройках выгрузки "Остаток больше 0" - то эта фишка работает только при полной выгрузке товаров из 1С
Совершенно верно. И только если на стороне битрикса настроить деактивацию товаров при отсутствии в файле выгрузки. А если эту фишку делать при выгрузке изменений то товара которого в 1С стало 0 - в Битриксе так истанется больше этого 0. Тоесть как минимум 1. Это потому что изменения не выгрузятся при нулевом остатке. Нужно это сравнение удалять! Тоесть выгружать и те , что 0.
В таком случае советую сделать две настройки. Одна полная , где больше 0 и отключить выгрузку картинок. И эту выгрузку делать каждую ночь. А вторую только с изменениями , без фильтра по количеству но с картинками. Тогда все у вас запляшет.
Чтобы не деактивировать товары а просто спрятать отсутствующие устаревшие надо как то поставить фильтр с условием где товар с количеством 0 стоит на сайте уже определенное количество дней. Думал что можно будет отталкиваться от даты изменения , но нет. Если товара стало 0 , то дата изменения по прежнему остается такой как и была. Как можно это решить?