Компоненты: Комплексное решение АБИС ИРБИС64/128 Завершено: 02.03.2026 08:24
созданы скрипт и экшен сортировки сортировки в арма каталогизатор
заданы параметры для сортировки в профиле арма каталогизатор
считаю в разных армах могут требоваться разные набор сортировок
Добавила задание на создание кэша префиксной сортировки для бд указанной в модуле сводного каталога
перенесла выбор сортировки после всех кнопок
поправила вид сортировки по каталогу если вид представления результатов интерактивный
-
Модуль Database:
Внедрена строгая типизация свойств в классе ObjectDataDatabase и сигнатурах методов API.
В методе GetDatabaseRecord добавлена очистка имени БД от кавычек для корректного поиска.
Исправлено имя класса в провайдере DP_Irbis64Direct (WriteToIni.inc).
Модуль EC (Электронный каталог):
Полный рефакторинг метода ShowSearchResultExtJs3: монолитный код разбит на вспомогательные методы для улучшения читаемости и поддержки.
Декомпозиция метода Exec
Ранее метод Exec был "монолитным" — он содержал всю логику: получение параметров, генерацию HTML, проверку прав доступа, формирование конфигурации ExtJS и вывод JavaScript-кода. Это делало код трудным для чтения и отладки.
В новой версии метод Exec выступает в роли оркестратора. Он вызывает специализированные приватные методы для каждого этапа работы:
outputHtmlAndScripts(...) — выводит HTML-контейнеры и скрипт начальной загрузки.
renderJs(...) — генерирует и выводит итоговый JavaScript код инициализации компонента.
Исправление CSS (Box Sizing)
В метод outputHtmlAndScripts добавлен критически важный CSS-блок:
css
.xpanel, .xwindow, ... {
boxsizing: contentbox;
}
Зачем это нужно: ExtJS 3 (который используется в данном модуле) рассчитывает размеры элементов, предполагая стандартную модель contentbox. Современные CSSфреймворки или глобальные стили часто устанавливают boxsizing: borderbox для всех элементов. Это изменение принудительно возвращает content-box для компонентов ExtJS, исправляя "поехавшую" верстку и некорректные размеры окон/панелей.
Модернизация синтаксиса PHP
Удален метод getOptValue: Ранее использовалась вспомогательная функция для проверки существования ключа в массиве $opts.
Null Coalescing Operator (??): Вместо getOptValue или громоздких isset(...) ? ... : ... теперь используется оператор ?? (доступен с PHP 7.0).
Было: $this->getOptValue($opts, 'wndHeight', 0)
Стало: ($opts'wndHeight' ?? 0)
Улучшение генерации JavaScript конфигурации
Ранее конфигурационный объект JS собирался путем конкатенации строк (echo 'key: value,';). Это ненадежно и чревато синтаксическими ошибками в JS.
Теперь используется массив $jsConfig, который заполняется данными, а затем преобразуется в JS-объект с помощью нового метода encodeConfig.
Метод encodeConfig и recursiveEncode: Это кастомный кодировщик. Он работает похоже на jsonencode, но с важным отличием: он умеет оставлять значения "сырыми" (без кавычек) для определенных ключей (например, handler, selectionChange, fn). Это необходимо, так как в ExtJS конфигурации часто передаются JavaScript-функции, которые стандартный jsonencode превратил бы в строки.
Изоляция логики прав доступа и кнопок
Логика формирования списков действий (кнопок на панели инструментов) вынесена в отдельные методы:
getModalActions — действия, открывающие модальные окна (полное описание, содержание и т.д.).
getSpecialActions — специфические действия.
Итог: Функционально модуль делает то же самое, но код стал:
Чище: Логика разбита на мелкие функции.
Надежнее: Исправлены проблемы с CSS и экранированием данных
Исправлена проблема с box-sizing в CSS для корректного отображения компонентов ExtJS.
Обновлен JS-компонент SortSelector: улучшена обработка событий и конфигурация Store.
Модуль Cataloguer:
Рефакторинг JSкомпонентов (irbisc.js, irbis-sortselectorcat.js): добавлены проверки на существование объектов, исправлены опечатки в статусных сообщениях.
Упрощена логика в экшене GetSortList.
Исправлена опечатка в названии настройки в ApplyGeneralVariablesConfig.
Модуль WIrbis:
Оптимизация и чистка кода в irbis-reclist128.js.
Исправлена логика работы формы сохранения поисковых запросов и инициализация меню оперативных действий.
Модуль i128f:
Добавлена типизация для основных методов получения БД и связанных записей
1. Связанные задачи
1.1. 🔗 blocks: SD-712
[SD-712] сортировка по возрастанию и убыванию
Статус: Готово | Автор: KashirinaTV
1.2. 🔗 Соответствует задача: I128-2211
[I128-2211] Сортировка результатов поиска в АРМ Каталогизатор
Статус: Открытая задача | Автор: Ilya Mikhaylenko