НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.4 >> [I128-2439] Навигатор ИМИДЖ-каталога не показывает все ящики-разделители отечественных книг📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Исправление ошибок | 2026.2.4 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: ИРБИС 128. Модуль EC - АРМ Читатель
Завершено: 06.07.2026 13:33
Проблема
Во вкладке ИМИДЖкаталога АРМ Читатель для базы отечественных книг отображались не все ящикиразделители: список обрывался примерно на букве "К". При поиске по букве часть подходящих разделителей также не попадала в выдачу.
Сценарий воспроизведения
TEXT / Отечественная книга.Ожидаемый результат
Навигатор показывает все ящикиразделители выбранного ИМИДЖкаталога. Поиск по введенной строке возвращает все разделители с этим префиксом и не включает следующие диапазоны словаря.
Причина
Серверный обработчик IMAGENAV/GetImgNavNodesFromDict читал из словаря BX= только первые 1000 терминов. В режиме поиска результат дополнительно не ограничивался введенным префиксом после получения очередной порции терминов.
Решение
Обработчик дерева ИМИДЖкаталога переведен на постраничное чтение словаря узлов разделителей оставлено в прежней структуре ответа.BX= до конца нужного диапазона. Для поиска добавлена фильтрация по префиксу, а формирование JSON
Риски
Изменение затрагивает выдачу узлов ИМИДЖ-каталога из словаря BX= для настроенных баз. На больших словарях ответ может содержать больше элементов, чем раньше, потому что искусственное ограничение в 1000 терминов снято.
-
PR по I128~~2439 для release/2026.2 ограничен обработчиком IMAGENAV/GetImgNavNodesFromDict: исправляется выдача дерева ИМИДЖ~~каталога из словаря BX=. Цель изменения - убрать обрыв списка на первой тысяче терминов и корректно ограничивать поиск введенным префиксом.
Изменения по файлам:
modules/IMAGENAV/Actions/GetImgNavNodesFromDict.inc
TERM*BATCH*SIZE и helper GetBxTerms(), который читает словарь BX= порциями, пропускает повтор стартового ключа при инклюзивном GetTermList() и останавливается на конце диапазона.GetBxTerms() добавлена фильтрация по префиксу через mb_stripos(..., '[UTF-8](?id=Help/Show&m=Help/GeneralDescription/WhatsNew/I128/TaskInfo/UTF-8/README)'), чтобы поисковая выдача не уходила в следующие буквы после введенного значения.node=search старый подсчет FindRecordsCount('BX='.$term.'$') с ограничением min($numTerm, 1000) заменен общим постраничным чтением GetBxTerms($dbimg, $term, $term).GetTermList('BX=', '', 1000, ...) заменен тем же постраничным обходом без префиксного фильтра, чтобы дерево базы получало все ящики-разделители.AppendTermNodes(): структура ответа (id, text, leaf, checked, draggable) сохранена общей для поиска и раскрытия базы.[ETDR-107] не видно в поиске по имидж-каталогу по ящикам-разделителям после буквы "К" в отечественных книгах
Статус: Готово | Автор: Галина Арноси