Начну свой вопрос с примера.
Была у меня такая задача: вывести в определенном месте макета 10 последних сообщений из трех инфосистем, которые [сообщения] были бы на старше семи дней от даты добавления. Подчеркну: не по 10 из каждой ИС, а _всего_ 10.
Ну я-то подумал - фигня, чего проще! Помня из api что у метода ShowInformationSystem() первый параметр $InformationSystemIdArray может содержать в себе массив идентификаторов ИС.
И сделал, сформировав массив идентификаторов, задав $information_groups_id = false, $items_on_page = 10, $items_begin = 0, и настроив фильтр и сортировку в $property.
И получил в результате 30 сообщений
Стал выяснять почему, и обнаружил, что когда методу ShowInformationSystem() передается массив идентификаторов, то метод вызывается несколько раз, по числу переданных идентификаторов. И sql-запрос для каждого вызова содержит в части where условие вида
AND information_items_table.information_systems_id = <идентификатор_ИС>
В результате каждый запрос возвращает до 10и элементов (в зависимости от даты в фильтре) и всего из 3х инфосистем их может получится до 30.
Вариант с соответствующим уменьшением значения параметра $items_on_page, например, до 3х, в общем случае не срабатывает, т.к. если в одной ИС есть всего 1 элемент удовлетворяющий фильтру по дате, а в двух других - допустим по 5, то пользователю выйдет только 7 элементов из возможных 9, что тоже, в общем-то, не совсем то чего хотелось

(Не говоря уж о том, что 10 на 3 нацело не делится

)
Задачу в итоге пришлось решать на более низком уровне - переписав условие в вашем запросе так
AND information_items_table.information_systems_id IN (id1, id2, id3)
и вызвав его один единственный через $DataBase->select() обработать вернувшиеся 10 элементов для формирования из них xml, к которому потом применить шаблон.
В связи с вышеизложенным вопросы к разработчикам: а почему метод ShowInformationSystem() в случае передачи ему массива идентификаторов работает именно таким образом, каким он работает?
И не логичнее ли было-бы изменить алгоритм его работы на описанный мною, или хотя бы сделать параметр, позволяющий переключаться с одного алгорима на другой?