Немного предыстории.
Есть работающая версия выгрузки из 1С 8.3 УТ 10.3 в Opencart 1.4.1.5 (если версию не путаю). Делал ее не сам, поэтому столкнулся с рядом проблем на этапе выгрузки категорий, после перехода на последнюю версию Opencart 2.1.0.2.
А именно. После выгрузки категорий магазин не понимает структуры категорий. Это конечно лечиться кнопкой "Починить" в админке, но хотелось бы заливать изначально уже верные категории.
Сначала разберемся в структуре таблиц. За структуру вложенности если я правильно понял отвечает:
category_path, где:
category_id - код категории, который берем из 1С.
path_id - параметр, который отвечает за вложенность категорий.
level - не разобрался что это.
Кусок кода, который отвечает за выгрузку данной таблицы:
Соединение.Execute("INSERT INTO `category_path` (`category_id`, `path_id`, `level`)
| VALUES ('"+Код+"', '"+РодительКод+"', 0)
| ON DUPLICATE KEY UPDATE path_id='"+РодительКод+"'");
То есть на этом этапе мы получаем примерно следующее:
Категория с кодом 1 является родительской и имеет path_id равный 0.
Категория с кодом 3 является родительской и имеет path_id равный 0. И т.д.
А категория с кодом 9 является вложенной и имеет path_id равный 3.
Тут вроде бы все понятно, но при выгрузке категории не воспринимаются. После починки мы видим:
Категория с кодом 1 является родительской и получила path_id равный 1.
Категория с кодом 3 является родительской и получила path_id равный 3. И т.д.
А категория с кодом 9 является вложенной и имеет path_id равный 9 и level равны 1.
Так же категория с кодом 9 является вложенной и имеет path_id равный 3 и level равны 0.
Мог бы кто нибудь объяснить принцип формирования таблиц?
Каким образом формируется код, и как правильно наладить выгрузку категорий?