Патч 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.30
BarcodeLib 3.1.1
CsvHelper 32.0.3
HtmlAgilityPack 1.11.61
HtmlSanitizer 8.0.865
iTextSharp.LGPLv2.Core 3.4.20
linq2db 5.4.1
MailKit 4.6.0
Microsoft.IdentityModel.Protocols.OpenIdConnect 7.5.2
Microsoft.NET.Test.Sdk 17.9.0
NLog 5.3.2
NLog.Web.AspNetCore 5.3.11
Npgsql 7.0.7
OpenTelemetry 1.8.1
OpenTelemetry.Exporter.OpenTelemetryProtocol 1.8.1
OpenTelemetry.Extensions.Hosting 1.8.1
OpenTelemetry.Instrumentation.AspNetCore 1.8.1
Otp.NET 1.4.0
QRCoder 1.5.1
Quartz 3.9.0
SixLabors.ImageSharp.Drawing 2.1.3
SkiaSharp 2.88.8
Swashbuckle.AspNetCore 6.6.1
Swashbuckle.AspNetCore.Newtonsoft 6.6.1
System.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
. - В веб-клиенте в типе
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)
(необязательное изменение)
-
-
Изменены библиотеки локализации.