Как обновлять базу товаров интернет магазина, атрибуты которых передаются из 1с и могут быть изменены в админ панели сайта?
Всем привет.
Такая ситуация. Из 1с-ки в самописный магазин на симфони приходит xml выгрузка товаров с полями:
Uuid - уникальный идентификатор товара в базе магазина
цена
название
бренд
В админке сайта можно менять эти атрибуты.
Как быть при обновлении базы из xml? Ведь все изменения, сделанные в админке сайта для товаров просто перезапишутся.
Пока что ничего, кроме полного сравнения полей/столбцов в голову не приходит. Но этот вариант вообще не годится, так как на сайте может поменяться бренд товара, а в 1с-ке его цена - и в этом случае при обновлении базы цена останется прежней. Или например поменяется название товара в интернет-магазине - то же самое, все изменения, сделанные в 1с при полном сравнении будут также пропускаться.
Если вы используете формат CommerceML для обмена, то делайте, как он описывает: передавайте аттрибут СодержитТолькоИзменения для нужных позиций и научите свой скрипт импорта правильно переваривать такой XML.
Если ваш формат обмена совсем кастомный, то можно сделать примерно так же: на стороне 1С следить за изменениями полей (это будет эталонная БД), выгружать только измененные (цены, например).
А что если создать такую таблицу для самого сайта и при обновлении подключать её в сравнение? Допустим там будет список товаров и указаны только те атрибуты, которые изменены на сайте, остальные будут отмечены как нулл (или ещё как-то).
И при сравнении учитывать эту таблицу. Вариант?