Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

На форуме можно найти множество сообщений про то, что в процессе работы CMS без видимых причин пропадают свойства у товаров, например
http://forum.simplacms.ru/topic/2916-%D0%B8%D1%81%D1%87%D0%B5%D0%B7%D0%B0%D1%8E%D1%82-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2/
В этой теме описаны некоторые такие ситуации, и если их знать и по них помнить, то можно контролировать ситуацию.

Но бывают сообщения и о том, что в процессе работы 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.
Пожелаем ему исправлять ошибки оперативно...

Ссылка на сообщение
Поделиться на другие сайты

 

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

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...