Как у 50 000 товаров удалить пустые артикулы?
При импорте постоянно создаются новые артикулы, в которых не прописывается "артикул товара". Как создавать файлы знаю, занимаюсь на протяжении многих лет этим сама. при ОДИНАКОВЫХ размерах (наименованиях артикула) все равно создаются дубли, и ничего сделать нельзя. Если бы они просто висели и не затрагивали витрину - Бог бы с ними. Но. то что есть по факту - выводится как ноль на складе из-за создавшегося дубля.
У 700 товаров 822 лишних строки по отчету импорта. Вручную вряд ли это осилить.
Это скрин магазина. Так же, другой товар имеет похожую ситуацию, но товар в строках дублях: в одной ноль, в другой 5 штук, а клиенту все равно показывается ноль.
Кто знает чем помочь, и что можно сделать?
а ниже картинка из админки
4 ответа
Для подробного изучения вашей ситуации потребуется детальное тестирование при использовании предоставленных вами материалов (CSV-файлов, дампа базы данных, снимков экрана). Для выполнения расширенной диагностики обратитесь в службу поддержки Webasyst из своего Центра заказчика.
Столкнулся с аналогичной проблемой (магазин актуальной версии на текущую дату): сначала выгрузил товары, внес изменения (в 1 характеристику с множественном выбором, которая нужна для фильтра категории), остальные поля удалил. В итоге у меня остался csv файл с двумя полями: уникальное название товара и характеристика. При импорте товаров характеристики обновились (за исключением ошибки с регистром букв). Но через некоторое время обратил внимание, что у товара создались какие-то новые артикулы (у меня все товары изначально в одном варианте, т.е. без доп. артикулов).
Если у кого-то есть решение или sql-скрипт, буду благодарен.
Возможно, кому-то будет интересно, как удалить эти дубли артикулов из базы, вот мое решение.
Внимание! Все на ваш страх и риск, делайте только если понимаете что делаете, сделали бекапы и осознаете последствия.
Мое решение подойдет тем, у кого нет осознанных доп.артикулов для товаров (т.е. каждый товар имеет по 1 артикулу). Но если есть артикулы, можете модифицировать код нужным образом и добиться результата.
Сначала я сделал бекап таблицы с артикулами:
Запишите количество обработанных строк, оно нам понадобится (число A).
После этого я запустил скрипт отображения всех строк с артикулами-дублями:
В запросе я указал максимально много параметров, чтобы быть уверенным, что данные дубли нам не нужны. Т.е. если будет выбрана доступность, будет остаток по артикулу, картинка или имя, то такие данные в таблицу не попадут. Прокрутите выгрузку и проверьте, что там нет нужных данных.
Запишите количество выгруженных строк (число B).
После этого я выгрузил общее количество товаров:
Записал. Это число C.
После этого я проверил данные, чтобы быть уверенным, что не удалю ничего лишнего. Т.к. у меня каждый товар представлен одним артикулом, формула получилась такая:
число товаров = (общее число артикулов) - (число артикулов, которые надо удалить) или C = A - B
Подставив числа и подсчитав, я убедился, что все ок, дубли артикулов можно удалять.
Внимание! Следующий запрос удаляет данные, перед выполнением будьте уверены в своих действиях:
После этого проверьте на товарах, что все ок.
Также я заметил, что параметр sku_count (количество артикулов) в таблице shop_product не обновилось. Разницы в работе магазина я не заметил, кроме того, при открытии и сохранении товара это число пересчитывается автоматически. Но на всякий случай это число лучше тоже актуализировать.
Для этого я воспользовался следующим скриптом:
Внимание! Следующий скрипт принудительно поставит всем товарам 1 артикул. Если у вас есть товары, у которых несколько артикулов, не нужно его запускать.
Это еще один нюанс импорта... Если у товара есть характеристики со множественными значениями, то поле Артикул не заполняется когда товар импортируется одной строкой. Если используется полноформатное описание товара (каждый артикул отдельной строкой), то Артикул должен быть прописан явно в каждой строке. Если не прописан - будет пусто. Порешаем это с вами в рамках той разборки которую учинили с вашими файлами :)