Для чего нужен номер пагинации? Если на странице есть несколько компонентов с пагинацией у первого компонента параметр будет равен PAGEN_1, у второго PAGEN_2 и т.д. что бы при переключении страницы у одного компонента, другие отображали прежний результат.
Заметили проблему: на странице каталога выбираем номер страницы, все отрабатывает корректно, выбираем другой номер и пагинация перестает работать. И так далее - то работает, то не работает, нет никакой закономерности.
Шаблон и сам компонент system.pagenavigation стандартный.
Смотрим массив $arResult, NavNum (номер пагинации) = 4, обновляем страницу NavNum все так же 4, еще раз обновляем и тут NavNum становится 2.
Пересмотрели все компоненты выше каталога, ни один из них не использует пагинацию.
(Странно, все время казалось, что номер пагинации строится от номера компонента на странице использующего пагинацию)
Лезем в ядро и смотрим где и как определяется этот NavNum. Выяснилось, что при каждом вызове метода InitNavStartVars() параметр NavNum просто инкрементируется. Ну ладно инкрементируется и инкрементируется, но у нас же на странице только один компонент использует пагинацию, откуда же берется номер 4?
Вставляем в функцию debug_backtrace() и смотрим откуда идут вызовы.
Оказалось на сайте есть агенты которые использует CIBlockElement::GetList() и если передать параметр nPageSize, то происходит вызов InitNavStartVars() и растет инкремент у NavNum.
А так как агент отрабатывает не на каждом хите, то NavNum меняется периодически и пагинация не срабатывает.
Так что, при появлении подобной проблемы в первую очередь обратите внимания на места в коде использующие CIBlockElement::GetList() с параметром nPageSize