maxpoletaev / opencart-exchange1c

[deprecated] Data exchange with 1C for OpenCart
http://zenwalker.ru/lab/opencart-exchange1c
104 stars 91 forks source link

Потеря ID товара при повторной выгрузке с очисткой таблицы товаров #11

Closed GOshaSaveiko closed 10 years ago

GOshaSaveiko commented 10 years ago

При повторной выгрузке с очисткой таблицы товаров загружаемым товарам присваивается новый id.

Скорее всего нужно не очищать таблицу сопоставления GUID-ID.

asamats commented 10 years ago

А ты не очищай таблицу, в чём проблема?

GOshaSaveiko commented 10 years ago

Проблема в том, что такое поведение не допустимо. Ваш совет похож на это: -- У меня стучит в подвеске, при повороте налево... -- А вы налево не поворачивайте.

Если серьезно, то поддерживать актуальные остатки без очистки таблицы невозможно. Если условием выгрузки является наличие на складе, или требуется изменить состав категории, а на сайте у вас 10 000 наименований. То что, мне теперь ненужное руками удалять?

ilia-maslakov commented 10 years ago

может вместо очистки просто обнулять и отключать и обнулять товары?

maxpoletaev commented 10 years ago

Как говорится, это не баг, а фича. Разбор и добавление товаров в таблицу идет по порядку. Если этот порядок был нарушен в XML файле, то, соответственно, изменятся и ID.

Вариантов решения два:

  1. Убрать таки очистку таблицы связей, нагородить еще один костыль на vQmod, который даст возможность передать в модель id создаваемого товара, и в модуле, при создании товара, проверять, есть ли у него связь.
  2. Всегда проводится полная выгрузка данных без сброса таблиц, а товары, с нулевыми остатками и тех, что не было в выгрузке - отключаются.

Что выглядит более разумно?

GOshaSaveiko commented 10 years ago

Я за 2. Тем более, если уж совсем не хочется, то отключенные товары можно из PMA одним запросом снести, что, в принципе, по результату будет аналогично предварительной очистке таблицы.

ilia-maslakov commented 10 years ago

рекомендую поставить установку SEO URL при экспорте тогда все товары будут на местах после полной очистки