Перейти к содержимому


Фото
- - - - -

Пропадают свойства у товаров


  • Чтобы отвечать, сперва войдите на форум
5 ответов в теме

#1 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 30.05.2017 - 10:12

На форуме можно найти множество сообщений про то, что в процессе работы CMS без видимых причин пропадают свойства у товаров, например
http://forum.simplac...ачения-свойств/
В этой теме описаны некоторые такие ситуации, и если их знать и по них помнить, то можно контролировать ситуацию.

Но бывают сообщения и о том, что в процессе работы CMS  пропадают свойства у товаров БЕЗ ВИДИМЫХ ПРИЧИН.
Оказалось, что это не выдумки неопытных админов, а такое действительно может происходить.

Пример 1.
1.1. Делаю импорт такого CSV-файла (предполагается, что перед импортом в базе указанных в файле товаров и категорий нет, то есть импорт запишет новые товары и категории):

Категория;Товар;Цена;Адрес;Видим;Рекомендуемый;Бренд;Вариант;Старая цена;Артикул;Склад;test_prop
kat1, kat2;prod1;0.00;p1;1;;;;;;;v1
kat2, kat1;prod2;0.00;p2;1;;;;;;;v2

1.2. Создадутся новые товары prod1, prod2, новые категории kat1, kat2 и  новое свойство test_prop.
1.3. если открыть в админке страницы новых товаров, то у них основной категорией являеся kat1.
А должны быть РАЗНЫЕ основные категории. Это происходит потому, что, импорт записывает в таблице s_products_categories в новых записях в поле position исключительно нули.
1.4. Имеем первую ошибку - импорт не учитывает порядок категорий, и записывает каждую категорию как основную (position=0).
1.5. Если товар пересохранить, то порядок зафиксируется правильный  (position приобретет корректные значения).

Ошибка досадная, но в большинстве случаев не сильно критичная. Но она порождает другую ошибку, весьма и весьма серьезную.

Пример 2.
2.1. Выполняем действие 1.1
2.2. Заметим что новые товары prod1, prod2 имееют свойство test_prop с разными значениями.
2.3. Откроем в админке страницу нового свойства test_prop. Можно видеть, что оно подключено к новым категориям kat1, kat2.
Отключим категорию kat2 от свойства, отменив у нее выделение, и сохраним изменения.
В результате новое свойство удалится  у всех новых товаров, что совершенно неправильно.
2.4 Получается пропажа свойств при простеньких безобидных действиях. Причина в функции function update_feature_categories($id, $categories) в запросе, который имет вид
            $query = $this->db->placehold("DELETE o FROM __options o
                                           LEFT JOIN __products_categories pc ON pc.product_id=o.product_id
                                           WHERE o.feature_id=? AND pc.position=(SELECT MIN(pc2.position) FROM __products_categories pc2 WHERE pc.product_id=pc2.product_id) AND pc.category_id not in(?@)", $id, $categories);

В нем производится лишнее удаление по причине вышеописанной первой ошибки.
Запрос в таком виде появился в версии 2.3.7, ранее вместо него был другой запрос, который кажется, работал лучше.

Реальная типовая ситуация: админ импортом залил много товаров. Все прекрасно работает, админ радуется.
Через некоторое время он провел мелкое редактирование свойства, например, добавив к свойству новую категорию. И готово - массовая пропажа свойств произошла. Причем админ это обнаружит не сразу, а через некоторое время. Причем админу практически нереально обычными средствами обнаружить какую-то систему в пропавших свойствах, тем более определить причину.

Таким образом, выясняется, что жалобы на пропажу свойств - не капризы неумелых админов, а серьезная ошибка создателя CMS.
Пожелаем ему исправлять ошибки оперативно...



#2 Noxter

Noxter
  • Фрилансер
  • 64 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 30.05.2017 - 13:05

Молодец

#3 Maksclub

Maksclub
  • Фрилансер
  • 1 398 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 30.05.2017 - 14:20

:(

Сценарии появления этой ошибки могут быть другими... 


Изменено: Maksclub, 30.05.2017 - 14:20


#4 makki

makki
  • Пользователь
  • 22 сообщений
  • Пользователь
  • Откуда:Kiev

Опубликовано 30.05.2017 - 16:04

Есть решение этой ошибки?



#5 Maksclub

Maksclub
  • Фрилансер
  • 1 398 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 30.05.2017 - 17:44

Есть решение этой ошибки?

 

я пока как дурак захожу в каждое свойство и проставляю все категории каждому :)



#6 LSDance

LSDance
  • Пользователь
  • 68 сообщений
  • Дизайн, Программирование, Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 31.05.2017 - 18:03


Есть решение этой ошибки?


Посмотрел вышеописанный метод, в голову пришла одна идея, но надо тестить, если есть у кого желание попробовать посмотреть в сторону update, а не delete - insert.

#7 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 02.06.2017 - 14:19

Есть решение этой ошибки?

 

Есть:

https://forum.okay-c...c.php?f=7&t=432






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых