Массово заменить одну характеристику на другую

Добрый день.

Столкнулись со следующей задачей, возможно, кто-то подскажет рациональный вариант решения.

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

Сейчас всё-таки пришли к тому, что это неудобно для фильтрации и не слишком помогает клиентам. Поэтому решили привязаться к единому размеру (европейскому), сделать отдельную характеристику для него и так формировать артикулы.

Соответственно, встала проблема - как массово изменить артикулы у всех товаров.

Что пришло в голову и опробовали:

Вариант 1: вручную перебираем все товары, удаляем старые артикулы, создаем новые.

  • Преимущества: самый надежный вариант, штатные средства, ручной контроль.
  • Недостатки: ну очень доооооолго!

Вариант 2: использовать импорт/экспорт

  • Преимущества: быстрее.
  • Недостатки: как-то всё криво и непредсказуемо там работает. Однажды задались банальной задачей изменения цен через импорт/экспорт, так после выгрузки и тут же (без внесения изменений!) загрузки этого же файла возникли ошибки про "избыточное описание товаров" и "создание новых артикулов"! Так что - не вариант.

Вариант 3: манипуляции с базой

В частности, на тестовой площадке поэкспериментировали с соответствующим изменением значений feature_id, feature_value_id в таблицах shop_product_features, shop_product_features_selectable (может упустили другие таблицы?):

Визуально на витрине - результат тот, что нужно. Артикулы выставлены правильные и по нужной характеристике. Но есть "ложка дёгтя": если зайти в редактирование товара, у которого есть, скажем 41, 42, 43 размер и добавить ещё один, например, 44 размер (отметить галочкой), то при сохранении добавляются ВСЕ выбранные ранее варианты, т.е. дублируются записи. Получается 41, 42, 43, 41, 42, 43, 44

  • Преимущества: относительно быстро.
  • Недостатки: апасна! (прямая работа с базой) Есть подозрение, что что-то не учли. Не факт, что всё будет работать, как ожидается.

Вариант 4: свой вариант

Кто знает или догадывается, как правильней и без косяков в будущем решить эту задачу, поделитесь опытом! Направьте в нужном направлении. Возможно, есть плагин, который может помочь...

В общем, буду благодарен любой помощи!

4 ответа

  • 2

    Только руками

    все остальные способы - очень высока вероятность накосячить
    Писать отдельный плагин/скрипт для обработки - все равно есть вероятность косяков + дешевле контентщика нанять, чтобы руками перебил, чем писать такую штуку

  • 1
    oseredchukmm 14 сентября 2018 12:34 #

    я бы сделал так:

    очистить таблицу БД с артикулами (shop_product_skus) и залить прайс наново

  • 1
    Александр 14 сентября 2018 17:05 #

    Павел, Михаил, спасибо за отзывы. Склоняемся пока к "ручному" перебору. Не хочется потом вылавливать "косяки" в неожиданных местах.

  • 1
    Demon13 25 сентября 2018 16:25 #

    у меня такая же была задача.  через SQL делал примерно так: выгрузил таблицу shop_product_features по характеристики, которую хочу заменить и протянул запрос UPDATE shop_product_features SET feature_id=18, feature_value_id=хх WHERE id=955;

    работает быстро, очень быстро :)

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите