Возникла серьезная проблема в работе магазина на битриксе. В частности косяк с категориями инфоблоков: В магазине около 20к товаров и 2к категорий, где каждый товар относится к определенной категории. После небольшой реорганизации разделов начало получаться так, что при заходе в некоторые категории, в пути и в левом меню начали высвечиваться какие-то нереальные данные. Например выделено одновременно несколько разных подкатегорий в разных категориях, или путь к текущей категории лежит через несколько других, абсолютно не связанных, категорий. Изучив базу b_iblock_section, я понял, что это можно исправить изменяя значение в LEFT_MARGIN и RIGHT_MARGIN, но я абсолютно не понимаю логику взаимодействия значений в этих столбцах и пути к товару. Выкладываю скриншот с очивидным проявлением проблемы. http://i48.fastpic.ru/big/2012/1129/d8/651b964153a5fed532547881745d33d8.png
а ведь путь должен был состоять из категории и подкатегории.
Да, при импорте кастомным скриптом сломалась структура разделов в bitrix. Причем, в админке все выводилось правильно, видимо в админке дерево строиться без учета LEFT_MARGIN и RIGHT_MARGIN. Ошибка в иерархии была только во фронте и при выборе родительской категории в админке (полная каша). При дампе увидел что у дочерних разделов пустые LEFT_MARGIN и RIGHT_MARGIN. Помогло CIBlockSection::Resort() , отработало за 5 сек. В кастомном скрипте CIBlockSection::Add и ::Update не указывал параметр bResort, думал он по дефолту true, оказывается что-то пошло не так.
Есть еще совсем нюанс, совсем неочивидный и требующий глубокое знание работы mysql. В общем если есть проблемы с выборкой разделов, когда очень ветвистая вложенность, и появляются какието странные тормоза (на локалке например нет тормозов, а на сервере тормоза, что не делай) то пишите в личку)
Оказалось что у mysql есть баг который известен паре человек давным давно, но исправлять его никто не будет, т.к. проблема редкая и специфичная. Баг связан с оптимизацией запроса при модели вложенное множество.
Несколько проектов за последние пару лет делал, где струткрута ветвистая, примерно по 5000 разделов, и все летает кроме выборки разделов. Только на 4-том проекте получилось разобраться в проблеме.
P/S/ или в личку, или ставьте сразу BitrixEnv, если есть такая возможность. У меня возможности небыло, поэтому пришлось разбираться для ISP и VestaCP. В BitrixEnv нет этой траблы из коробки