Если метод AuthLDAP вернет в $res1'r' что-то отличное от объекта записи (например, null, false или массив), то:
Переменная $rdrRec (которая ранее содержала корректную запись читателя, полученную через GetRecordByMfn) будет перезаписана этим некорректным значением.
Вызов $b>SaveRecordRdr($rdrDb, $rdrRec) приведет к фатальной ошибке PHP (Fatal Error). Это произойдет либо изза несоответствия типов аргументов (если метод ожидает ObjectDataRecord), либо при попытке вызвать методы внутри SaveRecordRdr на переменной, не являющейся объектом.
Чтобы этого избежать, добавлена проверка на то, что возвращенное значение действительно является объектом.
-
I128~~2246 Утечка дескриптора файла в Actions/ToolBar/VisitFree
I128~~2247 Некорректный текст сообщения об ошибке в Actions/Toolbar/VisitFree файла
I128~~2248 Утечка дескриптора файла в Actions/ToolBar/OpenFund
I128~~2249 Некорректный текст сообщения об ошибке в Actions/Toolbar/OpenFund о блокировке файла
I128~~2250 Общая функция бронирования BookBrone по умолчанию использует статус, предназначенный для специфической операции «Возврат на бронеполку» (ReturnandBRStatus), вместо общего статуса бронирования по умолчанию (BRDefaultStatus)
I128~~2251 Логическая ошибка при расчете пени в GetKvList
I128~~2252 Неполная проверка корректности результата вызова Authorisation::AuthLDAP в функциях Bookland::SetCurRdrAppByMfn и Bookland::SetCurRdrAppBySearch
Bookland: Рефакторинг, исправление ошибок JS и оптимизация логики
PHP: Убраны избыточные вызовы CheckProfile во внешних функциях.
PHP: В BookTable/Prodl добавлена проверка strongprodl (строгое продление по месту выдачи).
PHP: Оптимизирован код выборки экземпляров в OccDupWindow/BookDupWindow (убрано дублирование).
PHP: Исправлен расчет макс. штрафа в GetKvList.
PHP: Исправлена работа с блокировками файлов в OpenFund/VisitFree.
PHP: Заменен дефолтный статус бронирования на BRDefaultStatus.
JS: Исправлена опечатка в экшене 'Bokland' -> 'Bookland' (rINPASP).
JS: Исправлен баг парсинга переменных в RFID провайдере (idlogic).
JS: Параметр rqst_mfn переименован в rqstMfn.
Bookland: Исправление списания 'U', оптимизация выдачи/возврата и контекст сессии
Основные изменения
Исправление логики списания и статусов (Bookland):
TransformBookOccAsLost.inc: Исправлена ошибка при списании части экземпляров совокупного учета (статус U). Теперь, если списывается более одного экземпляра (например, 5 учебников из партии), в новой записи корректно проставляется количество (^1). Ранее подполе удалялось, что системой воспринималось как 1 экземпляр.
Store.inc (BookDupWindow): Добавлено явное приведение типов к int при расчете свободных экземпляров для статуса U. Оптимизирован цикл перебора: статус и штрихкоды теперь запрашиваются один раз для каждого экземпляра.
Управление контекстом сессии и UI:
TransformRdrOccAsReturn.inc: Добавлена логика сохранения номера обработанного повторения в контекст сессии (BooklandLastManagedOccs). Это исправляет проблему, когда возвращенная книга могла не подсвечиваться в интерфейсе или не попадать в квитанцию текущей операции.
TransformRdrAppendBookland.inc: Добавлены подробные комментарии о назначении контекста сессии.
Оптимизация производительности и рефакторинг:
TransformRdrAppendBookland.inc: Оптимизирован процесс выдачи. В цикле добавления записей теперь используется возвращаемое значение метода FieldAdd (сразу получаем номер повторения), вместо повторного обращения к записи через GetFieldOcc. Упрощена логика выбора штрихкода (приоритет основного, затем RFID/альтернативного).
TransformBookOccAsReturn.inc, TransformBookOccAsBrone.inc: Устранены множественные вызовы GetSubField для одних и тех же полей. Код приведен к единому стилю (добавлены фигурные скобки, использованы elseif).
Повышение надежности (LDAP):
SetCurRdrAppByMfn.inc, SetCurRdrAppBySearch.inc: Усилена проверка результата авторизации через LDAP. Теперь перед сохранением данных проверяется не только флаг ошибки, но и корректность возвращенного объекта читателя. Добавлена проверка на null при поиске по MFN.
Исправлена логика трансформации вхождений при возврате в Bookland