Патч 4.1.5 (08.07.2026)¶
Добавление и изменение функциональности¶
- В правилах доступа в расширенных настройках доступа к файлам изменена логика проверки дополнительных настроек “Обязательный файл” и “Допустимое число файлов”. Теперь данные проверки выполняются при каждом сохранении карточки, а не только при наличии изменений в файлах.
- В синхронизации AD/LDAP в качестве корневой секции домена теперь используется значение настройки Chronos
AdSync.RootDn, и только в том случае, если параметр не заполнен, значение атрибута ADdefaultNamingContext. До сих пор работал обратный алгоритм: настройкаAdSync.RootDnиспользовалась лишь при пустом значенииdefaultNamingContext. - В web-клиенте была добавлена возможность закрывать поиск по обсуждению нажатием на Esc.
- В синхронизации AD/LDAP параметр
AdSync.RootDnсделан регистронезависимым. - Для представлений с использованием PostgreSQL добавлена возможность гибкого указания колонок в случае, если для представления указан флаг
TreatAsSingleQuery. Так,SELECTзапроса теперь может не возвращать колонки, указанные в метаинформации, и такие колонки не выводятся пользователю. - Высота в контролах “Представление” для типов
KrSignFilesDialogиTaskAssignedRolesустановлена на значение"max". - В синхронизации AD/LDAP больше не блокируются пользователи, доступ для которых в AD временно закрыт по порогу входа. Данное поведение определяется в защищенном методе
HasAccountLockрасширения синхронизацииDefaultAdExtensionи при необходимости может быть переопределено в проектном решении. - В карточку персональной роли добавлено новое поле “Причина запрета”, которое заполняется для пользователя при запрете входа в систему. Подробнее см. в разделе Создание карточки сотрудника в руководстве администратора.
- Синхронизация AD/LDAP теперь меняет для пользователя тип входа с “Запрещён” на иной только в том случае, если в качестве причины запрета в карточке персональной роли указано “Запрещён синхронизацией AD/LDAP”.
- В скрипте обновления платформы
upgrade.sh(Linux-версия) добавлен параметр-cmd:, посредством которого можно указать команду перезапуска веб-сервиса перед тем, как скрипт к нему обратится (но после того, как скрипт обновит схему в БД и выполнит SQL-миграции). Описание и пример доступны во встроенной справке./upgrade.sh --help, а также в разделе документации Скрипт обновления upgrade.sh. - Доработан алгоритм синхронизации AD/LDAP в части синхронизации состава ролей и руководителей подразделений. Подробнее см. в разделе Алгоритм синхронизации в руководстве администратора.
Консольная утилита tadmin¶
- В команде GetKey для генерации ключей шифрования теперь допустимо указание нескольких ключей, например:
tadmin GetKey Signature Cipher, в этом случае сгенерированные ключи выводятся через пробел. - В команде SetKey для установки ключей шифрования теперь допустимо указание нескольких ключей, в этом случае ключи считываются через пробел со стандартного ввода, например:
tadmin GetKey Signature Cipher|tadmin SetKey Signature Cipher -path:web/app.json. Также возможно указать ключи через параметр-value, в этом случае число таких параметров должно совпадать с числом ключей, например:tadmin SetKey Signature -value:$SignatureValue Cipher -value:$CipherValue -path:~/tessa.
Новые версии библиотек¶
.NET 8.0.28DocumentFormat.OpenXml 3.5.1iTextSharp.LGPLv2.Core 3.8.0ITfoxtec.Identity.Saml2.MvcCore 4.20.1MailKit 4.17.0Microsoft.Data.SqlClient 6.1.6Microsoft.IdentityModel.Protocols.OpenIdConnect 8.19.1Microsoft.NET.Test.Sdk 18.7.0NetOfficeFw.Word 1.9.10Npgsql 8.0.9NUnit 4.5.1OpenTelemetry 1.16.0Quartz 3.18.2SkiaSharp 3.119.4StackExchange.Redis 2.13.17TesseractOCR 5.5.2
Изменения API¶
- В web-клиенте изменена сигнатура свойства
FileListViewModel.categoryFilter. Теперь функция может возвращатьnull, что будет означать прерывание выбора категории файла. - Добавлено свойство
IConfigurationManager.Version, определяющее версию конфигурации, загруженной из файловapp.json. После инициализации версия равна1, и далее она увеличивается на1с каждой её перезагрузкой методомIConfigurationManager.ReloadAsync(). - Метод
ISchemeServiceWithStorage.GetStorageVersionAsyncполучил дополнительный параметрignoreCache(по умолчаниюfalse), посредством которого возможно определить версию схемы заново, игнорируя кэшированное значение.
Исправления и оптимизации¶
- В web-клиенте в контролах карточки “Целое число”, “Десятичное число” и “Вещественное число” исправлена ошибка, из-за которой после ввода значения, начинающегося с незначащих нулей, нули не исчезали после завершения редактирования.
- Исправлена ошибка, из‑за которой в представлениях игнорировались настройки типа карточки, открываемой по двойному клику.
- В web-клиенте в браузере Safari на macOS исправлена ошибка, в результате которой при выборе строки в контролах “Таблица” или “Представление” появлялось пустое пространство в нижней части контрола.
- В web-клиенте исправлена ошибка, приводившая к усеченному отображению подсветки орфографических ошибок в контроле “Строка” с одной строкой.
- В web-клиенте исправлена ошибка, из-за которой
htmlдокументы неверно определялись при отправке на печать из контекстного меню файлового контрола. - Исправлена ошибка, из‑за которой в представлениях игнорировались настройки типа карточки при удалении и экспорте.
- В web-клиенте исправлена ошибка, в результате которой некоторые контролы карточек со значением видимости
Visibility.Hiddenотображались аналогично значениюVisibility.Collapsed. - Оптимизирована проверка обязательных полей при проверке прав доступа во время сохранения карточки.
- В web-клиенте исправлена ошибка контрола “Дата и время”, в результате которой при выделении всего содержимого контрола и последующем вводе даты курсор мыши мог перескакивать на некорректную позицию.
- Исправлено возможное зависание номера в резерве при неуспешном создании карточки. Ошибка могла происходить в случае, если после выделения номера происходил откат транзакции.
- В веб-сервисе
jinniисправлено чтение строки подключения к Redis из переменной окружения, если значение содержало кавычки. - В web-клиенте исправлена ошибка, в результате которой при вызове функции
openViewWorkplaceне происходил переход к желаемому представлению текущего рабочего места. - В TessaAdmin исправлена ошибка, из-за которой при работе с типами карточек для контрола нельзя было отредактировать стиль текста, который ранее был задан и сохранен.
- Исправлена ошибка при генерации умных ролей с длинным именем. Теперь если при формировании имени умной роли по настройкам генератора умных ролей длина результата превышает допустимую, то в имени обрезается имя владельца умной роли.
- В web-клиенте исправлена ошибка, в результате которой при открытии сабсета представлений с ошибкой полученная ошибка никак не отображалась.
- В web-клиенте улучшена произодительность при вводе в строковое поле.
- Из типа карточки настроек синхронизации AD/LDAP удалены ненужные валидаторы.
- Оптимизировано сохранение файлов в карточку “Кэш файлов” для конвертации (например, для предпросмотра), посредством объекта
FileConverterCache. - Исправлено лишнее логирование ошибки для СУБД MS SQL Server по исключению
OperationAlreadyExistsException, которое может быть выброшено методомIOperationRepository.CreateAsync. - Исправлено отключение заместителей по типу документа по завершении срока действия замещения при использовании старой системы замещения.
- Оптимизирована вежливая остановка сервиса Chronos при наличии плагинов, обрабатывающих операции с существенным временем проверки новых операций
PollingPeriod(настройка указана вapp-plugins.json). - В синхронизации AD/LDAP при установленном флаге
AdSync.UseLdapIntegerUidисправлена ручная синхронизация пользователей и пользователей, синхронизируемых независимо от корневых элементов. - Удалён лишний файл
libSkiaSharp.pdb, который присутствовал в папках сервисовweb,chronos,jinniпосле обновленияSkiaSharp 3.119.2. - В web-клиенте на мобильных устройствах исправлено отображение области предпросмотра в диалоговом окне выбора файла на подписание.
- Исправлено обращение к web-клиенту по ссылкам на файлы
/links/, когда отсутствовал актуальный токен сессии в куках. Теперь выполняется автоматический редирект на окно логина, а после успешного логина - откроется карточка, и из неё скачается файл. - В web-клиенте исправлена ошибка, из-за которой при копировании информации об ошибке отсутствовала локализация.
- В плейсхолдере
{fv:...}исправлена ошибка, из-за которой при использовании в нём сложной выборки данных из различных таблиц через конструкцию->Секция.Полесистема возвращала лишнее предупреждение. - В web-клиенте исправили ошибку в файловом контроле, из-за которой при группировке по категориям не были доступны пункты меню группировок.
- В web-клиенте исправлена ошибка, из-за которой тайлы для типов документов некорректно сортировались внутри группы тайлов для типа карточки.
- В TessaAdmin исправлена ошибка, возникающая при открытии редактора формы для типа диалога.
- В команде
tadmin RecalcAclисправлена ошибка, из-за которой не выполнялся расчёт по правилам ACL при отсутствии параметраcards. - В web-клиенте исправлена ошибка контрола “Представление”: ранее индикатор количества строк не был центрирован по вертикали.
- В web-клиенте для тёмной темы исправлены стили предупреждений в параметрах представлений.
- В web-клиенте для браузера Safari исправлена ошибка, в результате которой невозможно было подгрузить изображение в диалоговом окне “Факсимиле и штампы”.
- В web-клиенте исправлена ошибка настройки зачёркивания для контролов.
- В web-клиенте исправлена ошибка, в результате которой на устройствах с сенсорным экраном в диалоговом окне “Факсимиле и штампы” невозможно добавить выбранный штамп документу.
- В web-клиенте для мобильной версии приложения исправлена ошибка, в результате которой в диалоговом окне предпросмотра для текстовых и html файлов отсутствовала возможность выбора кодировки.
- В web-клиенте для мобильной версии приложения исправлена ошибка, в результате которой в диалоговом окне предпросмотра могла появляться пустая белая линия над отображаемым файлом.
- В синхронизации AD/LDAP при указании неверного значения параметра
AdSync.RootDnв лог теперь выводится понятная ошибка. - В web-клиенте исправлены ошибки, из-за которых на мобильной версии кнопка добавления тегов была недоступна.
- В web-клиенте исправлено обновление контрола представления при динамическом изменении количества колонок: ранее скрытые колонки теперь корректно отображаются при их повторном появлении в ответе.
- В web-клиенте исправлена ошибка, в результате которой при отсутствии изображения на серверной части приложения, установленного в качестве фона, невозможно было открыть диалоговое окно “Фон и тема”.
- В web-клиенте для мобильной версии приложения исправлена ошибка, в результате которой кнопка управления предпросмотром и режимом отображения карточки находилась вне панели вкладок.
- В web-клиенте для мобильной версии приложения исправлена ошибка, в результате которой при отображении кнопки управления предпросмотром и режимом отображения карточки невозможно было прокручивать панель вкладок.
- Исправлена ошибка, из-за которой могли некорректно отображаться заместители, если у пользователя было много недействующих замещений.
- В представлении “Активные операции” добавлен опциональный пейджинг (по умолчанию включён). Это оптимизирует вывод представления с большим количеством активных операций.
- В синхронизации AD/LDAP исправлена ошибка, возникавшая при наличии в каталоге LDAP групп и пользователей с совпадающими значениями идентификаторов. Исправление актуально для служб каталогов, не совместимых с Active Directory, при установленном флаге
AdSync.UseLdapIntegerUid. - В web-клиенте для мобильной версии приложения исправлена ошибка, в результате которой не возможно было переключать страницы документа в диалоговых окнах “Аннотации” и “Факсимиле и штампы”.
- В web-клиенте исправлена ошибка, в результате которой была возможность ввести несуществующую страницу в detail-представлениях.
- Исправлена возможная ошибка
IndexOutOfRangeExceptionпри попытке взятия блокировки на запись на карточку. Ошибка воспроизводилась в случае параллельного изменения карточки. Теперь корректно возвращается ошибка несовпадения версии. - В web-клиенте исправлена ошибка, в результате которой для контрола карточки Html не учитывалась настройка “Поле карточки”.
- В web-клиенте исправлена ошибка при сборке sdk-модулей командой
build:module, если в модуле была загрузка асинхронных чанков. Для правильной работы исправления проектный бандл, в котором планируется использования такого модуля, должен собираться с настройкойoptimization.runtimeChunk: falseвwebpack.config.js. - В команде
tadmin UpdateActionHistoryисправлена генерируемая структура таблицыActionHistory. Ранее в этой таблице оказывались виртуальные колонки внутри комплексных, такие какTypeCaptionиModifiedByName, причём как невиртуальные колонки. Это приводило к ошибкам вставки в эту таблицу через платформенные API. Проблема появилась с релиза 4.1.0. - В рабочем месте “Пользователь” в узле “Текущие задания” исправлена ошибка, из-за которой при указании ролей в настройках доступа к текущим отчётам группировка сотрудников выполнялась не по подразделениям, а по самим ролям, указанным в настройках доступа к текущим отчётам.
- В синхронизации AD/LDAP исправлена ошибка, из-за которой при синхронизации состава подразделений и статических ролей не обновлялся состав умных ролей, опирающихся на данные роли.
- При установке TESSA в Docker Compose исправлено создание volume для контейнера PostgreSQL. Актуально для контейнера с версией PostgreSQL 18, указанного в файле
docker-compose.yml. - В web-клиенте исправлена ошибка, из-за которой для новых колонок в представлении работали не все настройки.
- В синхронизации AD/LDAP исправлена ошибка, из-за которой после исключения пользователя из группы синхронизации и затем повторного включения в данную группу в системе TESSA пользователь оставался заблокированным.
- В web-клиенте исправлена ошибка мерцания вертикальной прокрутки на вкладке дашборда с большим количеством виджетов.
- Исправлено некорректное поведение аутентификации при использовании OAuth-провайдера, который является единственным в конфигурационном файле
app-oauth.json. - Исправлено поведение функции ValidationResultBuilder.fromError при обработке входного параметра типа string.
- В web-клиенте исправлена ошибка файлового контрола, из-за которой на устройствах с iOS после открытия диалога выбора файла и отмены загрузки кнопка добавления файлов переставала работать.
- В web-клиенте для карточки “Автомобиль” исправлено отображение блока общей информации в тёмной теме.
- В web-клиенте исправлена ошибка расчёта ширины колонок в таблицах.
- Исправлена работа типовых заданий с использованием флага “Вернуть после завершения” в случае, если для этой задачи создавалась подзадача. Раньше, при завершении всех задач процесс не считался завершённым и не происходил возврат на контроль первоначальному сотруднику.
- Исправлена передача токена отмены
CancellationTokenпри запуске вторичного процесса маршрутов. Теперь при отмене запроса вторичный процесс отменяет свою работу сразу, не дожидаясь коммита транзакции. - В синхронизации AD/LDAP при синхронизации подразделений добавлен маппинг поля описания объекта.
- В синхронизации AD/LDAP исправлена ошибка, возникавшая при определении родителя статической роли.
- Исправлена ошибка при вежливой остановке плагинов Chronos
SaasMailSenderиExtensionsSchedulerPlugin(актуально для всех расширенийIPluginExtension). Были возможны ситуации, когда эти плагины не дожидались, пока алгоритмEntryPointотработаетCancellationToken. - Исправлена ошибка, из-за которой события в истории действий некорректно записывались при попытке создать вложенные записи одинакового типа.
- Исправлена ошибка, из-за которой при наличии расширенных настроек доступа к заданиям при сохранении или обновлении карточки с указанным типом задания могла возникнуть ошибка “Токен подписан неверно”.
- Исправлена ошибка, возникающая при проверке прав доступа в ситуации, когда сотрудник, для которого проверяются права, входил одновременно в две статические роли, на которые настроено правило: в одну как сотрудник, а в другую как заместитель по типу документа.
- В схеме данных исправлена возможная ошибка при изменении виртуальности для одной из физических колонок, добавленных в комплексную колонку.
- В web-клиенте исправлена ошибка, из-за которой файлы при сохранении карточки могли получать неверный
sourceиз-за потери контекста. - Исправлены возможные проблемы при обновлении скриптами
Upgrade.bat/upgrade.sh, связанные с изменением ключейSignatureиCipherв конфигурационном файлеapp.json. В конфигурации по умолчанию актуально для ОС Linux и Docker, хотя при модели запуска без IIS проблемы могли быть актуальны и для ОС Windows. - При установке системы скриптами
Setup.bat/setup.shдля сотрудника Admin теперь сбрасываются настройки по языку интерфейса и культуре, которые могли некорректно определиться в процессе инсталляции. После первого логина от этого сотрудника настройки будут определены в соответствии с текущими параметрами (параметрами браузера при логине через веб-клиент). - В web-клиенте исправлена ошибка, в результате которой контролы карточки с заданной настройкой “Отступы” отображались некорректно: ранее при активной настройке “Отступы” они могли обрезаться блоком.
- Исправлена ошибка “Токен подписан неправильно”, которая могла возникать при запуске вторичного процесса из кода в серверном расширении, или из скрипта этапа маршрута, или из действия конструктора процессов.
- В синхронизации AD/LDAP исправлена ошибка, из-за которой в карточке дочернего объекта могло не сохраняться имя родительского объекта. Исправление актуально для служб каталогов, не совместимых с Active Directory (например, для NetIQ eDirectory).
- Версия схемы данных при инициализации теперь запрашивается заново из базы данных, а ранее кэшированное значение отбрасывается. Это исправляет проблемы, связанные с обновлением платформы, когда веб-сервис запущен, база данных содержит версию схемы от предыдущей версии платформы. Далее скрипт импортирует схему командой
ImportSchemeSql, версия схемы становится актуальной, но сервис не может покинуть ошибочное состояние “схема не обновлена”. - В web-клиенте исправлено отображение полосы прокрутки в контейнере распознавания текста.
- Исправлена отправка почтовых уведомлений на явно заданные адреса e-mail посредством объекта
EmailsNotificationRecipientsSourceParameter. Ранее некорректно определялись настройки форматирования и имя сотрудника-отправителя.
Обновление на новую сборку¶
- Обновлена документация по поддерживаемым версиям дистрибутивов ОС Linux. Добавлена поддержка дистрибутива
Ubuntu 26.04. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в разделе документации Системные требования для серверов Linux. - В web-клиенте контролы карточки “Строка”, “Целое число”, “Десятичное число” и “Вещественное число” теперь записывают изменения в карточку сразу во время ввода значения, а не только при сбросе фокуса. Событие
fieldChaned, вызываемое при изменении полей карточки, теперь вызывается при каждом изменении значения, а не только при сбросе фокуса. - В скриптах обновления платформы
upgrade.sh/Upgrade.batболее не запускается SQL-скриптFixes/ConstraintsOn.xx.sql. Его запуск актуален, только если ограничения (такие как внешние ключи FK) были предварительно выключены SQL-скриптомFixes/ConstraintsOff.xx.sql, чего в платформенных скриптах не производится.
Изменения API при обновлении¶
- Теперь при сохранении карточек, добавленных в типовое решение, всегда берётся блокировка на запись карточки и открывается транзакция.
- Изменён интерфейс
IAdExtension. Переименованы методы:GetUserAttributes->GetUserHashAttributesAsync,SyncUser->SyncUserAsync,SyncDepartment->SyncDepartmentAsync,SyncStaticRole->SyncStaticRoleAsync. - Изменён интерфейс
IAdExtensionContext. СвойствоUpdateUserпереименовано вUpdateUsers. - Изменён интерфейс
IAdProvider. МетодExtractUsersFromGroupsAsyncпереименован вExtractUsersFromGroupAsync, изменена сигнатура. МетодFillUserGroupAsyncпереименован вFillSyncGroupAsync. - Изменён интерфейс
IAdSettings. СвойствоUserGroupпереименовано вSyncGroup. - Изменён интерфейс
IAdSyncContext. Переименованы свойства и методы:UserGroupList->SyncGroupUsers,IsUserGroupListLoaded->SyncGroupUsersLoaded,GetCachedGroup->TryGetCachedGroup,IsUserInCache->UserUpdated,AddUserToCache->SetUserUpdated,IsSyncData->SyncData,IsSyncStaticRoles->SyncStaticRoles,TryGetCachedGroup->TryGetCachedGroupMembers,AddGroupToCache->AddGroupMembersToCache. - Изменён интерфейс
ILdapUnitProvider. СвойствоIsUpdateDisableAsyncпереименовано вUpdateDisabledAsync, методSyncUnmatchedDistinguishedNameAsyncпереименован вFillAdSyncIDAsync, методGetAdSyncIdAsyncпереименован вTryGetAdSyncIdAsync. - В расширение синхронизации AD/LDAP
IAdExtensionдобавлен новый методSyncDepartmentHeaderAsyncдля синхронизации руководителя подразделения. Если вы используете собственную реализацию данного расширения, то перенесите логику синхронизации руководителя изSyncDepartmentAsyncв указанный метод.
Изменения конфигурации при обновлении¶
-
Представления:
-
AbResolutions -
ForbiddanceReasons(добавлено) -
Operations -
ReportCurrentTasksByDepartment -
ReportCurrentTasksByDepUnpivoted -
ReportCurrentTasksByUser -
RoleDeputiesManagementDeputized -
RoleDeputiesManagementDeputizedByDocTypes
-
-
Таблицы:
-
ForbiddanceReasons(добавлена) -
PersonalRoles
-
-
Миграции:
CleanAdSyncID(добавлена)
-
Библиотеки схемы:
Default
-
Типы:
-
AdSync -
KrSignFilesDialog -
PersonalRole -
TaskAssignedRoles
-
-
Изменены библиотеки локализации.