интеграция баз 1с->xml->mysql

zuxel

Новичок
интеграция баз 1с->xml->mysql

Здравствуйте!
Стоит задача сделать интеграцию 1с базы товаров и базы интернет-магазина. Xml выгрузка есть, включает товары и дерево категорий (nested tree) . Написал sax разбор этой xml. Проблема в том, что не могу определиться как обрабатывать некоторые ситуации.
Во-первых, каждый товар имеет артикул, название, описание, картинку, цену, две характеристики. Получается, что хоть и информация по товарам будет обновляться не очень активно( в основом цена ) все равно придется при каждом импорте сверять поля каждого товара, с теми что уже есть в базе. Может проще не сверять, а сразу обновлять? Как лучше это сделать? Пока смотрю в сторону INSERT OR REPLACE.
Еще вопрос, картинки в выгрузке закодированы в base64 и записаны прямо в базу, мне придется их раскодировать и записывать на диск. При импорте придется картинки сравнивать с тему, что уже записаны, как можно быстро сравнить два бинарных файла, есть способы?
 

pilot911

Новичок
сейчас решаю такую же задачу

сравнивать вообще нет необходимости, имхо

если пришли данные по конкретному товару - просто удаляем запись и создаем заново

с картинками немного посложнее, если допускается их множественное использование другими позициями в товарном каталоге

если допускается двойное использование - придется в базе у каждого файла хранить md5 (функция php md5_file()) и сравнивать его с md5 xml-картинки
 

zuxel

Новичок
Автор оригинала: pilot911

с картинками немного посложнее, если допускается их множественное использование другими позициями в товарном каталоге

если допускается двойное использование - придется в базе у каждого файла хранить md5 (функция php md5_file()) и сравнивать его с md5 xml-картинки
да нет, я имел ввиду, что допустим, что если у товара после последнего импорта картинка тоже изменилась, то нужно старую заменить на новую. перед этим проверив изменилась ли она. хотя, может здесь тоже стоит просто удалять старую и писать новую
 

pilot911

Новичок
Автор оригинала: zuxel
да нет, я имел ввиду, что допустим, что если у товара после последнего импорта картинка тоже изменилась, то нужно старую заменить на новую. перед этим проверив изменилась ли она. хотя, может здесь тоже стоит просто удалять старую и писать новую
я предпочитаю удаление файла
 

Adelf

Administrator
Команда форума
если пришли данные по конкретному товару - просто удаляем запись и создаем заново
А если по этому товару уже есть заказы? :)

Обновлять правильней.
 

Adelf

Administrator
Команда форума
само собой, что при вставке старый ID сохранятся
А почему бы не обновить? Зачем даже на самое короткое время лишать базу целостности?
 

pilot911

Новичок
Автор оригинала: Adelf
А почему бы не обновить? Зачем даже на самое короткое время лишать базу целостности?
вообще, я это и подразумевал

на мускуле это выглядит как INSERT ON UPDATE KEY :)
 

Sigorma

Новичок
у себя в магазине с достаточно большой базой данных товаров решил следующим образом.
есть таблица товаров с обязательным наличием ID товаров из 1С (артикул) в случае необходимости обновить базу данных ( в среднем 2-3 раза в день по крону) делаю запрос truncate table и заполнение таблицы данными из нового прайса (новый прайс рассматривается как обсалютно новый без всяких "а вдруг там только одна новая строка из всего прайса").
Так же имеется вторая таблица с заказами связанная с таблицой товаров полем артикул (ID строк в таблице используется только для функций интерфейса е-магазина и не представляет особой информационной ценности) поэтому при "смещении" ID товаров при обновлении прайса и повисших заказах особых проблем не наблюдается.
Картинки для товаров вообще отдельная тема представляющая из себя что то вроде галереи картинок с возможностью отображения картинок не привязанных не к одному товару (для нескольких товаров может быть одна картинка).
 

zuxel

Новичок
А вот еще вопрос. Понятно, что эффект от редактирования вручную через админку сайта загруженных товаров сводится к нулю, т.к. при последующем импорте все равно все потрется.
Но если пользователи захотят имет возможность еще и в ручную добавлять товары? По-идее надо как-то отделить товары и категории из 1с и добавленные в вручную, чтобы не было ситуации, когда пользователь создает категорию которая является дочерней какой-то категории из дерева из 1с, а при следующем импорте этой категории уже не будет (удалили из 1с ) и дерево поломается? Или я где-то ошибаюсь?
 

Adelf

Administrator
Команда форума
zuxel
не ошибаешься. И вообще правильно мыслишь :)
Как я и говорил, удалять что-либо - не вариант.
 
Сверху