Патч 4.0.2 (18.05.2024)¶
Новые возможности¶
- Реализована аутентификация в системе с использованием внешних провайдеров по протоколам OAuth 2.0 и OpenID Connect. Подробнее см. Руководство по настройке аутентификации через OAuth.
- Реализована возможность создания временной ссылки на файл или версию файла из соответствующего контекстного меню. Файл должен быть сохранён на сервере, и для типа карточки должно быть добавлено правило доступа, разрешающее создавать такую ссылку.
- Добавлена поддержка для формата файла лицензии
.jlic, который содержит информацию по лицензии в JSON-формате. Строка поиска файлов лицензии в конфигурационных файлахapp*.jsonи файлах проектов.csprojтеперь указывается как*.?lic, чтобы учесть как бинарные файлы лицензии*.tlic, так и JSON-файлы*.jlic. В будущих версиях платформы поддержка бинарного формата*.tlicбудет прекращена.
Добавление и изменение функциональности¶
- Добавлена поддержка множественного выбора строк в master-представлении с передачей значений всех выбранных строк в detail-представление. Актуально для master-detail связей в узлах рабочих мест и для master-detail связей контролов “Представление” в карточках. Подробнее см. в документации.
- В web-клиенте для Google Chrome в уведомление об открытой вкладке браузера с приложением добавлены кнопки для перехода на открытую вкладку или открытия приложения в текущей.
- В web-клиенте в окне “О программе” теперь выводится текущее описание конфигурации. Его можно установить посредством вызова скрипта
Fixes/SetConfigDescription.xx.sql(xxравенpgдля PostgreSQL, илиmsдля MS SQL Server). Подробнее в разделе руководства Примеры использования со стандартными скриптами из папки Fixes. - В web-клиенте добавлено всплывающее окно с подтверждением изменений при попытке закрытия диалога создания обсуждений.
- Плагин
TextRecognitionдля обработки операций по распознаванию текста в файле перенесён в веб-сервисweb. Теперь операции по OCR берутся в работу сразу после их создания. - В web-клиенте в область предпросмотра файлов в правый верхний угол добавлена кнопка, позволяющая открыть файл в диалоговом окне, развёрнутым на весь экран.
- В web-клиенте изменена анимация загрузки.
- В руководстве разработчика добавлен пример реализации обработчика для нового OAuth-провайдера. Подробнее см. Добавление нового OAuth-провайдера.
- Доработаны скрипты
setup.sh,upgrade.sh,export.sh,migrate.sh(только linux-версии) для выполнения в неинтерактивном режиме, что позволяет удобно их использовать в сценариях автоматизации. Вызовите скрипт с аргументом--help, чтобы получить краткую справку по доступным аргументам командной строки. За описанием их использования обратитесь к разделу Автоматизация скриптов установки и обновления. - Вложенные изображения в форумах и контроле “Текст с форматированием” теперь всегда используют ссылку для получения своего контента.
- Цвет текста для тега больше не может быть задан пользователем и теперь всегда определяется автоматически на основе выбранного цвета фона.
- В web-клиенте изменён внешний вид тулбара для контрола “Текст с форматированием” и для поля ввода сообщения в форумах и обсуждениях.
- В web-клиенте добавлена возможность развернуть на весь экран поле ввода сообщения в форумах и обсуждениях.
- В web-клиенте для контрола “Обсуждения” в контекстном меню добавлена кнопка “Войти в режим повышенных привилегий”.
- В web-клиенте добавлена возможность отображения диалогов валидации в полноэкранном режиме.
- В разделе руководства Использование Redis добавлены подразделы Вывод установленных блокировок и Удаление блокировок с указанием доступных в системе средств для управления блокировками вручную.
- В руководство разработчика добавлен раздел, описывающий основные концепции создания собственного контроллера для веб-сервиса. Подробнее см. Создание контроллера веб-сервиса на основе API TESSA.
- В редактор типа задания добавлена настройка “Форма по умолчанию”, которая позволяет выбрать одну из форм типа задания в качестве формы по умолчанию, или же выбрать в качестве таковой вариант “Пустая форма”. Для варианта завершения типа задания теперь, помимо форм из типа задания, доступен для выбора вариант “Форма по умолчанию”. См. раздел руководства Тип задания.
- Добавлен раздел документации Токены доступа к содержимому системы, описывающий токены для доступа к объектам системы без авторизации, в т.ч. по аватарам и внешним ссылкам на файлы.
- В карточку правил доступа добавлен флаг “Создание ссылки на скачивание файла/версии”, позволяющий для карточек, включенных в типовое решение управлять возможностями создания временных ссылок на файлы пользователями.
- В карточку настроек сервера была добавлена настройка “Максимальный период действия ссылки на файл (дней)”, позволяющая задать максимальное количество дней, в течение которых будет действовать временная ссылка. При создании временной ссылки пользователь может указать меньший период, чем указано в настройке, но не больший.
- Добавлены события истории действий, связанные с функциональностью временных ссылок на файлы: “Создание токена для временной ссылки на файл”, “Отзыв токена доступа к контенту”.
- В web-клиенте изменено действие при клике на файл. Теперь при одинарном клике открывается предпросмотр, если он доступен.
- В web-клиенте добавлена возможность копировать выделенный текст в предпросмотре посредством Р7-Офис / OnlyOffice.
- В web-клиенте добавлена возможность выбирать режим курсора мыши и выделять текст в предпросмотре PDF.
- В web-клиенте добавлено действие при двойном клике на файл: если доступен Deski, откроется файл на редактирование/чтение; если Deski недоступен, откроется предпросмотр файла, если он доступен. На мобильном устройстве всегда откроется файл в предпросмотре, если он доступен.
- В функциональные роли (ФР) добавлена настройка “Отображать в задании по умолчанию”. Для ФР “Автор” она включена по умолчанию. Эта настройка определяет необходимость того, чтобы по умолчанию устанавливать флаг “Отображать в задании” для всех добавляемых записей с этой ФР, если только при добавлении записи с этой ФР флаг “Отображать в задании” не был определён принудительно (например, через расширение).
- Для карточек “Календарь” и “Тип календаря: Рабочая неделя” удалено автоматическое заполнение значений для начала и окончания действия исключения при создании новой строки в таблице исключений.
- В web-клиенте для таблиц исключений у карточек “Календарь” и “Тип календаря: Рабочая неделя” добавлено автоматическое заполнение даты окончания действия исключения датой начала действия исключения, если дата окончания действия исключения не заполнена. Аналогично для обратной ситуации.
- В web-клиенте для таблиц исключений у карточек “Календарь” и “Тип календаря: Рабочая неделя” добавлен запрет возможности выбрать дату окончания действия исключения меньше даты начала действия исключения. И наоборот - выбрать дату начала действия исключения больше даты окончания действия исключения.
- В web-клиенте добавлены иконки для режимов курсора мыши в предпросмотре PDF.
- В desktop-клиенте в контрол “Представление” добавлена настройка “Расположение тегов”.
- При редактировании типов (карточек, файлов, диалогов, заданий) все цвета в настройках контролов по умолчанию теперь не заданы (пустые поля), в этом случае фактический цвет по умолчанию определяет тема. Это относится к цвету заголовка для всех контролов, а также к цвету текста, цвету фона и цвету границы для тех контролов, где есть эти настройки.
Консольная утилита tadmin¶
- Для команд PrintLocks и PrintLocksClient теперь возможно не перечислять группы блокировок, в результате чего будут выведены все блокировки с указанием названий групп. Подробнее см. в разделе Консольная административная утилита tadmin.
- В файле
app.jsonконсольной утилиты теперь указан Management endpoint, который равен по умолчанию значению"maintenance", что соответствует значению по умолчанию вapp.jsonсервисаwebbi. Это позволяет не указывать параметр-wm:managementдля команд, использующих механизмы управления компонентами, таких как команды DeleteLocksClient, PrintLocksClient и др. - Переименован скрипт
TypeFontsFixнаTypeSettingsFix. Также теперь он выполняет исправление других настроек блоков и контролов.
Новые версии библиотек¶
.NET 6.0.30BarcodeLib 3.1.1CsvHelper 32.0.3HtmlAgilityPack 1.11.61HtmlSanitizer 8.0.865iTextSharp.LGPLv2.Core 3.4.20linq2db 5.4.1MailKit 4.6.0Microsoft.IdentityModel.Protocols.OpenIdConnect 7.5.2Microsoft.NET.Test.Sdk 17.9.0NLog 5.3.2NLog.Web.AspNetCore 5.3.11Npgsql 7.0.7OpenTelemetry 1.8.1OpenTelemetry.Exporter.OpenTelemetryProtocol 1.8.1OpenTelemetry.Extensions.Hosting 1.8.1OpenTelemetry.Instrumentation.AspNetCore 1.8.1Otp.NET 1.4.0QRCoder 1.5.1Quartz 3.9.0SixLabors.ImageSharp.Drawing 2.1.3SkiaSharp 2.88.8Swashbuckle.AspNetCore 6.6.1Swashbuckle.AspNetCore.Newtonsoft 6.6.1System.IdentityModel.Tokens.Jwt 7.5.1
Изменения API¶
- В руководство разработчика добавлен пример реализации контроллера с REST-методами для работы с типом контента
multipart/form-data. Подробнее см. REST-методы для работы с multipart. - Для объекта
TopicNotificationServiceдобавлено два виртуальных методаGetRecipientsAsyncиSendNotificationCoreAsync, позволяющие переопределять логику работы в наследниках. - Изменено API по созданию и использованию объектов
IWebProxy. Добавлена возможность определения обработчиковIWebProxyXyzHandler, влияющих на подготовку запроса к отправке и обработку ответа на запрос. Пространства имён для соответствующих типов изменены сTessa.Platform.RuntimeнаTessa.Platform.Web. Изменены флагиWebRequestFlagsи сигнатура методаWebProxy.SendAsync<T>. Обратитесь к разделу руководства Запросы к веб-сервисам посредством прокси-объектов WebProxy. - Добавлен класс
ConcurrentObjectPool<T>, предоставляющий пул объектов по аналогии сObjectPool<T>, но являющийся потокобезопасным. - Для таблицы
TableGridViewModelв desktop-клиенте иTableGridViewModelBaseв web-клиенте добавлен методSetGrouping, позволяющий задать группировку по колонке с возможностью дополнительно указать, из какой колонки будет браться имя группы. - В web-клиенте все объектные модели, связанные с предпросмотром документа, теперь доступны по пути
tessa/ui/preview. - В web-клиенте добавлен новый тип расширения
FilePreviewExtension, с помощью которого можно переопределить поведение предпросмотра по умолчанию. - В web-клиенте у типа
PreviewManagerметодpreviewToolFactoryзаменён на событиеonPreviewerResolve. - В web-клиенте в типе
CardEditorModelсеттер свойстваcardModelзаменён на асинхронный методsetCardModel. - Для методов
RemoveRolesAsyncиRemoveParticipantsAsyncинтерфейсаIForumProviderдобавлен параметрserviceMessageMode = ForumServiceMessageMode.Enabled, позволяющий управлять поведением сервисного сообщения об удалении участников из топика. - В web-клиенте модели, относящиеся к
workflowиkrProcess, перенесены из неймспейсаtessa/workflowв@tessa/platform/workflow. - В web-клиенте тип
KrTypesCacheотмечен какdeprecated. Рекомендуется запрашивать типIKrTypesCacheиз DI. - В web-клиенте тип
KrStageTypeUIHandlerперенесён из неймспейсаtessa/workflow/krProcessвtessa/ui/workflow/krProcess. - В web-клиенте удалён компонент
LoadingOverlayWithPortal. Вместо него можно использовать компонентLoadingOverlay, который теперь отображается с порталом по умолчанию. Для отображения без портала необходимо передать значение свойстваnoPortal, равноеtrue. - В web-клиенте тип
BusinessCalendarServiceперенесен в@tessa/platformи доступен по запросуIBusinessCalendarService$из DI. - Улучшено получение зависимостей через конструктор контроллера, используя .NET DI (
IServiceProvider) для режима активацииControllerActivationMode.Unity(класс контроллера без атрибута[TessaController]или с атрибутом, не изменяющим режим активации на другой). Если параметр является опциональным (IService? service = null), то регистрация зависимости может отсутствовать, в этом случае будет подставлено значение параметраnull. Также допустимо использовать атрибут[FromKeyedServices(key)], чтобы определить ключ, по которому зависимость должна быть зарегистрирована (какAddKeyedScopedилиAddKeyedSingleton), но в пределах класса допустимо использовать лишь один ключ (или его отсутствие) для каждого типа параметра, получаемого из .NET DI. Для более сложных сценариев можно получить в конструктореIServiceProviderи запросить из него сервисы вручную, или же надо отказаться от режима активацииControllerActivationMode.Unity, указав атрибут[TessaController(ActivationMode = ControllerActivationMode.AspNetCore)]. - Для контроллеров добавлены методы-расширения
ControllerExtensions.ForbiddenиControllerExtensions.ForbiddenException, с помощью которых можно сформировать исчерпывающую информацию об ошибке с HTTP-кодом403 Forbidden. Подробнее можно прочитать в разделе Создание контроллера веб-сервиса на основе API TESSA. - Доработан процесс обновления информации об авторе в задании и соответствующей ему записи в истории заданий. Теперь если автор задания не был указан вручную, в таблице
Tasksпомимо информации об авторе, выбранном из списка связанных с заданием ролей, будет записан идентификатор строки изTaskAssignedRoles, по которой был выбран автор. При удалении изTaskAssignedRolesзаписи с указанным идентификатором - будет автоматически перерассчитан новый автор и записан в задание и связанную с ним запись в истории заданий. - В
CardTask.Flagsтеперь можно указать флагCardTaskFlags.RecalculateAuthor, который принудительно запустит процесс пересчёта автора, указываемого в задании и соответствующей ему записи в истории заданий, на основе информации изTaskAssignedRoles. - Добавлен раздел документации Создание проектного менеджера прав на создание токена доступа к файлам по внешней ссылке, рассматривающий реализацию поддержки создания внешних временных ссылок.
- Добавлен интерфейс
ITempFileLinkProviderдля создания токенов доступа и временных ссылок на файлы и получения их содержимого. - Добавлен интерфейс
IFileContentPermissionManager, позволяющий установить права доступа на создание временной ссылки для карточек, чьи типы не входят в типовое решение. - Свойство
CardTaskAssignedRole.ShowInTaskDetailsтеперьNullable<bool>. ЕслиShowInTaskDetails is null, то значение для записи, добавляемой в список связанных с заданием ролей, будет определено из значенияCardMetadataFunctionRole.ShowInTaskDetailsсоответствующей функциональной роли. - В web-клиенте добавлена возможность создавать правила для нормализации настроек контролов. Задать правила можно с помощью методов
Normalization.instance.remove,Normalization.instance.replace,Normalization.instance.ignore,Normalization.instance.custom. - Добавлен интерфейс
IViewRequestValidator, позволяющий валидировать запросы к представлениям. - В API тестов в объект
ScopeContextдобавлен методGetNamedLock, позволяющий получить объектAsyncLock, с помощью которого можно синхронизировать выполнение логики при обработке параллельно выполняющихся тестов внутри одной области выполнения. - Регистрация консольных команд в методе
CommandContext.AddCommand()теперь выполняется без перечисления типов аргументов. - Добавлены интерфейс
IDocLoadBarcodeManagerи классDocLoadBarcodeManagerдля объекта, выполняющего поиск штрих-кодов в модуле потокового сканирования. Вы можете переопределить регистрацию в Unity, чтобы повлиять на алгоритм распознавания. - Для расширений типов
CardTypeExtensionTypeтеперь можно передать в конструкторе опциональную функциюenumerateVisitorObjectsFuncAsync, которая возвращает дополнительные объекты для их обхода посредствомICardTypeVisitor(см. методCardType.VisitAsync). Так, для расширения типа “Таблица в представлении” функция возвращает контролCardTypeTableControl, содержащий пользовательский интерфейс, настраиваемый по кнопке “Колонки и форма”. - Изменён интерфейс
IObjectTransactionLockingStrategy. Добавлен методReleaseObjectAsync, который освобождает блокировку объекта. В методObtainReaderLockAsyncдобавлен параметрreleaseOnlyIfEscalated, определяющий, что блокировку необходимо освободить только если тип блокировки является эскалированной блокировкой или блокировкой на запись. - Изменён интерфейс
ITransactionScopeContext. Добавлено свойствоIsValuable, определяющее, является ли контекст области выполнения транзакции значимым. - Изменён интерфейс
IObjectTransactionLockingStrategy. Из методаExecuteInWriterLockAsyncудалён неиспользуемый параметрreleaseLock. - В классе
CardGetFileContentRequestбулевое свойствоSuggestFileNameзаменено на свойство-перечислениеSuggestFileNameMode. Используйте методShouldSuggestFileNameдля установки актуального значения свойстваSuggestFileNameMode. - В класс
CardGetFileContentRequestдобавлено булевое свойствоSuggestFileNameForVersion. Укажите его в запросе на получение контента файла, чтобы дать рекомендацию серверу по формированию предпочитаемого имени файла. - В ссылках на файлы
/links/fileи/links/htmlдобавлен булевый параметрsuggestFileNameForVersionсо значением по умолчанию, равнымfalse. Данный параметр используется, чтобы рекомендовать серверу формировать предпочитаемое имя запрашиваемого файла, как имя версии этого файла.
Исправления и оптимизации¶
- Исправлен вывод команды
tadmin Checkс параметром-hпри получении состоянияUnhealthy. - Исправлены конструкторы классов исключений
ConfigurationSealedExceptionиConfigurationStrictSecurityException, принимающие вложенное исключение. - В web-клиенте исправлено отображение неактуального фонового изображения при повторном открытии закрытой вкладки и дублировании вкладки.
- В web-клиенте исправлено поведение обнаружения открытой вкладки браузера с приложением: при перезагрузке страницы обнаружениие не производится.
- Исправлена инициализация зависимостей по умолчанию
TessaPlatform.DependenciesиTessaPlatform.ServerDependenciesпри невозможности выполнить парсинг файлаapp.json. Для приложенийchronos,web,tadminинициализируются зависимости изTessa.Linuxдля ОС Linux. Для приложенийchronos,webинициализируются зависимости изTessa.Server. Это позволяет для некорректно сформированного файлаapp.json(например, при опечатке в нём) открыть страницу/checkвеб-сервиса, и увидеть причину ошибки вместо падения при инициализации контейнера Unity. - В web-клиенте исправлена локализация заголовка у диалогов, открываемых до получения настроек локализации с сервера.
- В web-клиенте исправлена ошибка, приводившая к дублированию описания в диалоге ошибок.
- Исправлена ошибка, из-за которой не обновлялся флаг
IsActiveдля заместителей контекстных ролей при использовании старой системы замещений. - В web-клиенте исправлен стиль области между полосами вертикальной и горизонтальной прокрутки.
- Исправлена ошибка, из-за которой в иерархических представлениях при установленном флаге
AutoSelectFirstRowне всегда выбиралась корректная строка. - В контроле “Представление” с включённым расширением “Список файлов в представлении” исправлено отображение колонки “Категория” в ситуации, когда группировка менялась с “По категории” на любую другую.
- В контроле “Список файлов” и в контроле “Представление” с включённым расширением “Список файлов в представлении” исправлена группировка “По копии” в ситуации, когда у двух основных файлов с копиями было одинаковое имя.
- В web-клиенте в контроле “Представление” с включённым расширением “Список файлов в представлении” отключён автоматический выбор первой строки, который приводил к предпросмотру первого файла при применении любой группировки или фильтрации.
- В web-клиенте исправлена прокрутка колесом мыши внутри элементов, открываемых из панели многостраничного тулбара.
- В web-клиенте исправлена ошибка, приводящая к возможности просмотра структуры карточек при активированной конфигурации безопасности
Configuration.StrictSecurity. - Исправлена ошибка, из-за которой могла некорректно отображаться отметка в маршруте о наличии дополнительных согласующих.
- В web-клиенте исправлена ошибка возникавшая при сохранении карточки, если до этого был открыт активный этап маршрута для просмотра.
- В web-клиенте исправлен drag-and-drop из контрола “Представление” с расширением “Список файлов в представлении” в файловую папку.
- Исправлена ошибка, из-за которой при запросе участников топика через метод
ITopicParticipantsProvider.GetTopicParticipantsAsync, мог возвращаться некорректный признак подписанности или отписанности участника топика. - В web-клиенте исправлена ошибка отображения ссылочных контролов, содержащих лоадер: ранее при появлении лоадера в ссылочном контроле периодически появлялись вертикальные и горизонтальные полосы прокрутки.
- В web-клиенте исправлена ошибка, приводящая к выполнению запроса на получение обсуждений при обновлении карточек типового решения, в которых обсуждения отсутствуют.
- В web-клиенте исправлена ошибка, приводящая к некорректному отображению значения ссылочного контрола с активной настройкой ручного ввода.
- В форумах исправлена локализация ролей при их добавлении в топик.
- Доработана обработка ошибок в веб-сервисах, использующих
ErrorHandlingMiddleware(web,jinni,monitor). При штатной отмене соединения с клиентом (например, пользователь закрыл браузер в процессе обработки) исключенияOperationCanceledExceptionилиIOExceptionболее не выводятся в консоль сервиса (которая видна поsystemctl status,journalctlили при запуске сервиса из терминала). Также при возврате ошибки устанавливаются HTTP-заголовки ответа на запрос, запрещающие его кэширование. - В web-клиенте исправлен импорт файлов с аннотациями pdf: можно загружать файл с аннотациями других пользователей, которые были сделаны в редакторе аннотаций TESSA, а аннотации, добавленные во внешних редакторах, импортируются от имени текущего пользователя.
- В web-клиенте в форумах и контроле “Текст с форматирование” исправлено добавление множества картинок одновременно.
- Исправлена ошибка, из-за которой не учитывалась сортировка таблицы с данными представления при обработке плейсхолдеров для имён файлов шаблонов.
- В шаблонах файлов Word исправлена ошибка, возникавшая при наличии плейсхолдеров в колонтитуле документа.
- В web-клиенте исправлена ошибка, приводящая к некорректному отображению высоты многострочных контролов.
- В web-клиенте исправлена ошибка отображения тега в столбце представления, возникавшая при недостатке места в ячейке для тегов, имя которых состоит из нескольких слов.
- В форумах исправлена ошибка, из-за которой отсутствовало сервисное сообщение об удалении ролей из топика.
- В web-клиенте исправлена ошибка, связанная с появлением лишней горизонтальной полосы прокрутки в табличных контролах при уменьшении ширины экрана.
- В web-клиенте исправлена ошибка, связанная с появлением лишней полосы прокрутки в обсуждениях при изменении размера редактора сообщений.
- В web-клиенте исправлена ошибка при использовании SAML-авторизации, возникавшая в том случае, когда система при просроченных cookies SAML-авторизации отправляла запрос на логаут без всех необходимых данных к провайдеру аутентификации.
- В web-клиенте исправлена ошибка, из-за которой при открытии диалога выбора из представления мог ломаться рендер карточек.
- В мобильном web-клиенте исправлена ошибка, приводящая к появлению горизонтальной полосы прокрутки в представлениях, содержащих большое количество тегов.
- В web-клиенте исправлена ошибка отображения параметров фильтрации, содержащих контрол “Дата и время” с выбранным условием “между”: ранее между вышеупомянутыми контролами параметра фильтрации отсутствовал отступ.
- В web-клиенте исправлена ошибка отображения тегов в карточках: ранее при использовании большого количества тегов, они сжимались до нечитаемого состояния.
- В плагине генерации умных ролей исправлена ошибка, из-за которой система производила лишние расчёты генераторов умных ролей.
- В web-клиенте исправлена ошибка отображения компонента слайдера для вывода точности распознавания текста: добавлены скругления для слайдера и его ползунка.
- В web-клиенте исправлена ошибка, возникавшая при открытии приложения, когда в файле настроек сервера
app.jsonв секцииSAMLпараметрLogoutBindingне был указан или имел некорректное значение. - В web-клиенте исправлена ошибка, из-за которой колонки представления с типом
Decimalне всегда форматировались. - В web-версии исправлен расчёт отображения кнопок вторичных процессов.
- В web-клиенте исправлена ошибка представлений с отключённой горизонтальной прокруткой: ранее при изменении ширины представления периодически появлялась полоса горизонтальной прокрутки.
- Исправлена ошибка, возникавшая при выборе более одного документа в узле “Мои документы” рабочего места “Пользователь”.
- В web-клиенте исправлена ошибка, из-за которой свойство
cornersне обрабатывалось при конвертации темы в переменные. - Исправлена ошибка, из-за которой после делегирования задания на согласование, задания на дополнительное согласование отзывались.
- Исправлено повторное подключение сервиса
webк сервисуmonitorв случае, еслиmonitorбыл перезапущен без перезапускаweb. - В web-клиенте исправлено использование строк локализации названий рабочих мест для информации о текущем пользователе.
- Исправлена ошибка при сбросе кэша прав доступа, которая позволяла другому процессу загрузить устаревший номер версии кэша.
- В web-клиенте исправлена ошибка отображения тегов в скрытом списке: ранее между тегами отсутствовали отступы, а сами теги отображались без скруглений.
- В web-клиенте исправлена ошибка, появляющаяся при применении к представлению параметра фильтрации типа
Decimalс пустым значением. - В шаблонах файлов Word исправлена ошибка, из-за которой в сгенерированном файле могли остаться необработанные строки с плейсхолдерами внутри таблиц, если таблицы содержали в себе условные блоки.
- В web-клиенте исправлена ошибка в диалоге выбора значений строки, отображаемого в диалоге выбора из представления, которая приводила к закрытию всех диалогов сразу.
- В web-клиенте исправлена ошибка в табличных контролах, приводившая к некорректному измерению ширины оверлея.
- В web-клиенте исправлена ошибка в табличных контролах, приводившая к изменению фактического размера колонки при переходе в скрытое состояние.
- В web-клиенте исправлена ошибка в табличных контролах, приводившая к тому, что в
IGridMetricsширина скрытых колонок всегда была равна нулю. - В web-клиенте исправлен ряд ошибок в табличных контролах, приводивших к некорректному поведению колонок, перекрытых оверлеем.
- В web-клиенте исправлено некорректное отображение размера текста в pdf аннотациях.
- В конструкторе процессов исправлена, из-за которой действие “Типовая задача” не завершалось при завершении его заданий, если для типа карточки, для которой запускался процесс, не были включены маршруты.
- В web-клиенте исправлена ошибка, из-за которой при добавлении файла в карточку, для которого доступна только одна категория и размер которого был больше, чем разрешено расширенными настройками правил доступа, система выводила множество сообщений об ошибках вместо одного.
- Исправлено удаление связанных карточек в тестах вызовом методов
ITestCardManager.DeleteCardAfterTest()при освобождении скоупа. Теперь удаление выполняется в порядке, обратном порядку создания карточек. - Исправлена ошибка, из-за которой при экспорте карточки с перезаписью поверх уже существующей могли быть удалены файлы-исключения из подпапки, относящейся к данной карточке.
- В команде
tadmin ExportCardsисправлена ошибка, из-за которой игнорировался ключ-localize. - В команде
tadmin ExportCardsисправлена ошибка, из-за которой при экспорте карточек в библиотеку записи о карточках могли дублироваться. - Исправлен msi-инсталлятор Deski на ОС Windows, если на момент установки или удаления предыдущая версия приложения была запущена. Теперь приложение автоматически завершается в процессе установки.
- В API тестов в классе
CardLifecycleCompanionисправлена ошибка методаCreateOrLoadSingleton, из-за которой метод мог вернуть некорректную версию карточки-синглтона. Теперь, если карточка уже существует, метод всегда загружает актуальную карточку из БД, а не возвращает закэшированную версию карточки. - В конструкторе бизнес-процессов в действии “Типовая задача” исправлена обработка сигнала завершения заданий.
- В web-клиенте в диалоге аннотаций pdf исправлена локализация заголовков фильтров по автору и по типу аннотации.
- В маршрутах в этапе “Типовая задача” исправлена ошибка, из-за которой этап завершался при отзыве подзадачи при активной родительской задаче.
- В конструкторе бизнес-процессов в действии “Типовая задача” исправлена ошибка, из-за которой этап завершался при отзыве подзадачи при активной родительской задаче.
- Исправлен стиль компонента
ViewInformationLabel, влиявший на некорректное отображение текста сообщений об ошибках в контролах карточки. - Исправлена проверка значений начала и окончания действия исключения, а также начала и окончания действия именованного диапазона, при сохранении экземпляров карточек типа “Календарь” и “Тип календаря: Рабочая неделя”. Теперь не допускается возможность одинаковых значений для начала и окончания указанного диапазона.
- Исправлено заполнение поля
CompletedByRoleвTaskHistory. Поле заполняется именем сотрудника из поляCompletedByName, если не удалось определитьCompletedByRoleна основании связанных с заданием ролей. - Исправлена работа расширения типа “Переместить колонку с тегами влево”.
- Исправлена скрипт
tadmin Script TypeSettingsFix(ранееTypeFontsFix), который не учитывал некоторые настройки контролов, из-за чего для них мог оставаться указан шрифтSegoe UIвместо шрифтаDefault(nullв сериализованном типе.jtype). - Исправлено использование объектов
ICardTypeVisitorдля обхода вложенных объектов в форме у расширения типа “Таблица в представлении”. - Исправлено формирование архива с дампом схемы при возникновении ошибки сохранения схемы.
- В web-клиенте исправлена ошибка, из-за которой сохранение порядка колонок в диалоге настроек представления происходило неверно.
- В web-клиенте исправлена ошибка, из-за которой не сохранялось расположение тегов в контроле “Представление” в карточке при его изменении через диалог настроек.
- В web-клиенте исправлено получение индекса колонки при двойном клике на ячейку контролов “Таблица” и “Представление”.
- Исправлена ошибка, из-за которой блокировки на чтение карточек освобождались не после завершения действия этих блокировок, а только после завершения всей транзакции.
- В контроле “Представление” более нельзя скрыть колонку с тегами через пункт контекстного меню “Скрыть столбец”, сделать это можно только через настройку “Расположение тегов”.
- Исправлен вывод заголовков контролов карточки в тёмной теме, а также для других тем, переопределяющих цвет заголовка относительно стандартного в холодной теме.
- В web-клиенте исправлена ошибка отображения границ ссылочных контролов диалогового окна “Настройки уведомлений по карточке”: ранее цвет фона диалогового окна совпадал с фоном содержащихся в нем контролов.
- В web-клиенте исправлена ошибка контрола “Представление”, приводящая к отображению кнопки “Сохранить” в контекстном меню настроек видимости и порядка колонок в случае, если настройка “Разрешить сохранение настроек” неактивна.
- В web-клиенте в аннотациях pdf исправлены ошибки с перетаскиванием аннотаций и картинок.
- В web-клиенте в аннотациях pdf исправлено позиционирование аннотации текста при вставке.
- В web-клиенте исправлено сохранение позиции курсора в текстовом контроле при вставке.
- В web-клиенте исправлена индикация выпадающего списка у кнопок тулбара карточки.
- Исправлено формирование имени при получении контента файла или его версии.
Обновление на новую сборку¶
- Все типы
.jtypeв сборке изменены, в них увеличена версия JSON-формата и исправлены настройки контролов и блоков. Типы, содержащие только такие изменения, не были перечислены как изменённые. Для сравнения изменённых типов с актуальными в проектном репозитории предварительно вызовите команду tadmin ConvertConfiguration, а затем командуtadmin Script TypeSettingsFix -pp:source=PATH, гдеPATH- путь к папке с конфигурацией в репозитории. При обновлении решения все типы из проектного репозитория должны быть исправлены вызовом этих команд перед импортом. - Перед обновлением схемы данных выполните запрос из файла
Fixes/Migration-4.0-pre.XX.sqlпосле комментария “Tokens need to be deleted”, где вместоXXуказаноmsдля MS SQL Server,pgдля PostgreSQL. Актуально, если обновление производится с предыдущих релизов 4.0.x. При обновлении с релизов 3.6.0.x и ранее его выполнение не требуется. - После обновления схемы данных выполните запрос из файла
Fixes/Migration-4.0.XX.sqlпосле комментария “Fill AuthorTaskAssignedRoleRowID in Tasks (4.0.2)”, где вместоХХуказаноmsдля MS SQL Server илиpgдля PostgreSQL. Актуально, если обновление производится с предыдущих релизов 4.0.x. При обновлении с релизов 3.6.0.x и ранее он выполняется автоматически в скриптахUpgrade.bat/upgrade.sh. - При установке в Docker изменены передаваемые аргументы командной строки для скрипта
setup.shв файлахinstall.bat. Обратитесь к разделу Проверка работы контейнеров и завершение установки tessa. - Обновлена документация по поддерживаемым версиям дистрибутивов ОС Linux. Добавлена поддержка дистрибутива
Ubuntu 24.04. Прекращена поддержкаUbuntu 23.04, 23.10. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в разделе документации Системные требования для серверов Linux. - Удалён плагин
TextRecognitionдля обработки операций по распознаванию текста в файле, а также соответствующий ему файл конфигурацииTextRecognition.xmlи настройки плагина вapp.json. - В конфигурационных файлах
app*.jsonи файлах проектов.csprojзамените строку подключения файлов лицензии*.tlicна*.?licдля поддержки нового формата файла.jlic.
Изменения API при обновлении¶
- Для проектов с тестами
Tessa.Test.Client/Server/Shared/Windowsи проектов модулейTessa.Module.Sample.Client/Server/Sharedпо умолчанию теперь включена поддержка nullability в C# (тег<Nullable>в файлах проекта.csproj). - Переименован метод
ObjectPool<T>.Get()наRent(). - Изменено API по созданию и использованию объектов
IWebProxy. Изменены конструкторы базовых классовWebProxyиWebProxyFactoryBase. Пространства имён для соответствующих типов изменены сTessa.Platform.RuntimeнаTessa.Platform.Web. Изменены параметры методаWebProxy.SendAsync<T>: для передачи флагов используйтеWebRequestFlags.PerRequest(); стандартные флаги доступны как поля статического классаWebRequestFlags, также изменён их смысл (например, были флагиOmitXyzдля исключения заголовка запроса, теперь заголовки по умолчанию не добавляются, пока не указаны соответствующие флагиAddXyzHeader); функцииmodifyRequestFuncAsyncиmodifyResponseFuncAsyncполучают объект контекстаIWebProxyContextсо свойствамиRequest,Response,CancellationToken. КлассLegacyBinaryContentпереименован вWebLegacyBinaryContent. Обратитесь к разделу руководства Запросы к веб-сервисам посредством прокси-объектов WebProxy. - Изменён раздел документации Временные ссылки на контент системы, описывающий, как работать с контроллерами контента для реализации аватаров у карточек контрагентов.
- При отправке запроса к представлению
ITessaViewRequestзначение свойстваViewAliasтеперь должно совпадать с алиасом вызываемого представления. Убедитесь, что при получении данных из представления в серверных расширениях и в перехватчиках представлений внутри запроса передаются корректные значения для свойствViewAliasиView. - Изменён интерфейс
IGetDataRequest. СвойствоSelectedMasterRowDataпереименовано вSelectedMasterRowsData, а тип изменён наIList<IDictionary<string, object?>>?. - Изменён интерфейс
IParametersMappingContext. СвойствоSelectedRowDataпереименовано вSelectedRowsData, а тип изменён наIList<IDictionary<string, object?>>. - Регистрация консольных команд в методе
CommandContext.AddCommand()теперь выполняется без перечисления типов аргументов. Измените регистрацию команд в проектном решении соответствующим образом. - Для объектов
ICardTypeVisitorметодыVisitBlockAsync,VisitControlAsync,VisitTabFormAsyncиVisitTableFormAsyncв качестве дополнительных контекстных параметров могут получатьnull(например, параметрыblockиformв методеVisitControlAsync), если они были возвращены расширением типа, таким как “Таблица в представлении”. Если в проектном решении определены реализации интерфейса (в т.ч. наследники классаCardTypeVisitor), то убедитесь, что они учитывают возможные значенияnullв этих методах. - В классе
CardGetFileContentRequestбулевое свойствоSuggestFileNameзаменено на свойство-перечислениеSuggestFileNameMode.
Изменения конфигурации при обновлении¶
-
Рабочие места:
Administrator
-
Представления:
-
AvailableDeputyUsers -
BusinessProcessTemplates -
ContentAccessTokens(добавлено) -
FileLoadingTokensForCard(добавлено) -
KrFilteredStageTypes -
LinkedDocuments -
MyTags -
RefGroups -
ReportPermissionsMyTasks -
SignatureFileCategories -
Tags -
TaskAssignedRoleUsers
-
-
Таблицы:
-
ActionTypes -
FmMessages -
FmTopicParticipantRoles -
FmTopicParticipantRolesUnsubscribed -
FmTopicParticipants -
FmTopics -
FmUserStat -
FunctionRoles -
FunctionRolesVirtual -
KrPermissionExtendedFileRules -
KrPermissions -
ServerInstances -
Tags -
Tasks -
Tokens
-
-
Типы:
-
Calendar -
Car -
CreateFileTempLink(добавлен) -
DefaultCalendarType -
FunctionRole -
KrPermissions -
OcrRequestDialog -
OcrSettings -
RefGroup -
RefGroupType -
ServerInstance -
Tag -
ViewInformationLabelSettings(добавлен)
-
-
Карточки:
-
ApprovalHistory -
Default access rules(необязательное изменение) -
Default acquaintance access rules(необязательное изменение) -
Server settings (settings)(необязательное изменение)
-
-
Изменены библиотеки локализации.