Патч 3.6.0.7 (27.03.2022)¶
Добавление и изменение функциональности¶
- В редакторе типов карточек TessaAdmin, для элементов блоков, контролов и колонок в табличных контролах теперь доступен множественный выбор этих элементов, а также массовое перемещение и удаление выбранных элементов.
- Добавлена возможность скачать список отзыва (CRL) из окна отображения информации о проверке подписей.
- В web-клиенте в окне отображения информации о проверке подписей неуспешные статусы проверки выделяются жирным шрифтом.
- В web-клиенте реализована возможность выбора режима открытия PDF файлов по умолчанию в меню “Мои настройки”, выбирая пункт “Постраничный предпросмотр PDF”.
- В web-клиенте добавлены тултипы для вкладок рабочих мест и карточек с полным содержанием информации и названия.
- Сотрудники, которые подписались на определённый тип уведомления по карточке, теперь будут получать уведомления этого типа, даже когда по правилам уведомлений они должны быть отфильтрованы.
- В карточку сотрудника в настройки уведомлений добавлена возможность указать список глобальных типов уведомлений, на которые хочет подписаться сотрудник. Он будет получать уведомления по заданным типам, если при их отправке он указан как опциональный получатель.
- В конструкторе бизнес-процессов в действии “Уведомление” добавлен параметр “Опциональные получатели”. Указанные в нём сотрудники получат уведомление только в том случае, если в настройках уведомлений добавлено правило, разрешающее получение уведомления, или если тип уведомления добавлен в список типов, на которые сотрудник хочет подписаться.
- В маршрутах в этапе “Уведомление” добавлен параметр “Опциональные получатели”. Указанные в нём сотрудники получат уведомление только в том случае, если в настройках уведомлений добавлено правило, разрешающее получение уведомления, или если тип уведомления добавлен в список типов, на которые сотрудник хочет подписаться.
- В web-клиенте добавлена функциональность, учитывающая настройку задержки поиска для элементов управления “Ссылка” и “Список”.
- В web-клиенте в системе обсуждений изменено поведение при клике на внешние ссылки: теперь они открываются в новой вкладке браузера.
- В web-клиенте текст в заголовке вкладки вынесен в локализацию: в окне логина это строка
Title
в файлеlocalization.json
веб-сервиса; после логина используется константа локализацииCommon_WebLoginTitle
. - В web-клиенте добавлен параметр
AlwaysOpenLinksInSingleBrowserTab
, который включает использование алгоритма определения предыдущей открытой вкладки с приложением TESSA и возможностью перехода к этому приложению. - В форумах (обсуждениях) добавлена возможность указывать статус “Подписан на уведомления” при добавлении новых конкретных участников обсуждения. В представлении “Участники” добавлена возможность изменить статус “Подписан на уведомления” конкретного участника обсуждения.
Консольная утилита tadmin¶
- Добавлена команда
Check
, которая позволяет вывести на консоль результаты запросов к веб-сервису по адресам/check
и/hcheck
. Подробное описание команды содержится в руководстве администратора.
Новые версии библиотек¶
.NET 5.0.15
CAdESLib 1.2.1
DocumentFormat.OpenXml 2.16.0
HtmlAgilityPack 1.11.42
HtmlSanitizer 7.1.488
ITfoxtec.Identity.Saml2.MvcCore 4.8.2
Kerberos.NET 4.5.158
MailKit 3.1.1
Microsoft.Data.SqlClient 4.1.0
Microsoft.NET.Test.Sdk 17.1.0
NLog 4.7.14
Npgsql 5.0.12
NUnit 3.13.3
SixLabors.ImageSharp.Drawing 1.0.0-beta14
StackExchange.Redis 2.5.43
Swashbuckle.AspNetCore 6.3.0
ZXing.Net 0.16.8
Изменения API¶
- Добавлен объект
TransactionScopeContext
, в который можно передавать обработчики, которые будут выполнены после завершения транзакции. Данный объект можно использовать в методах расширений, выполняемых внутри транзакции, а также в скриптах маршрутов и конструктора процессов. Также добавлен объектITransactionScope
для управленияTransactionScopeContext
и для запуска обработчиков текущего контекста. - В форумах (обсуждениях) диалоги добавления/изменения топиков и участников теперь выводятся с использованием типов диалогов. Удалены виртуальные секции
Fm*
, которые автоматически добавлялись в типы карточек, включённые в типовое решение. При этом изменён интерфейсIForumDialogManager
и другие объекты, связанные с UI. - В делегат
CreateDialogFormFuncAsync
добавлен опциональный параметрtypeFilter
, который регулирует типы, предоставляемые в метаинформации диалога. По умолчанию, как и ранее, возвращается указанный тип диалога, а также все файлы и задания, что позволяет отобразить диалог как полноценную карточку. Для оптимизации передайте в параметре функциюDialogFormInvoker.FilterDialogOnly
(отображение диалога без файлов и заданий) илиDialogFormInvoker.FilterDialogWithFiles
(отображение диалога с файлами без заданий). - Для desktop-клиента добавлено свойство
ITabbedFormViewModel.TabsAreCollapsed
для скрытия заголовков всех вкладок. - Для web-клиента добавлен интерфейс
ITabbedFormViewModel
(аналог соответствующего интерфейса в desktop-клиенте). - Для
INotificationManager
добавлена реализация параметра для определения списка получателейAggregateNotificationRecipientsSourceParameter
, которая может включать в себя другие параметры для определения списка получателей. - Для
INotificationManager
в параметры определения списка получателейIDNotificationRecipientsSourceParameter
иRoleNameNotificationRecipientsSourceParameter
добавлено свойствоIsOptional
, которое указывает, что рассчитанные по данному параметру получатели уведомления являются опциональными. - В
NotificationRecipient
добавлено свойствоIsOptional
, которое указывает, что получатель уведомления является опциональным. - В web-клиент добавлены события
tabSelected
иtabDeselected
для уведомления контролов, находящихся на активной кладке. - В методы
IForumProvider.AddParticipantsAsync
иAddRolesAsync
добавлен параметрskipServiceMessage
для отключения служебных сообщений о появлении новых участников обсуждения. Параметр игнорируется при запросе с клиента. - Добавлен тип сообщения
MessageType.Custom
, который можно использовать для отправки служебных сообщений с произвольным текстом. Служебные сообщения отправляются методомIForumProvider.SendMessageAsync
, но только находясь на сервере. - Классы-наследники
Tessa.Platform.Runtime.WebProxy
теперь могут в конструкторе указать пустое имя контроллераcontrollerRoute
, при этом методы класса будут выполнять запросы по URI-адресу относительно корневого пути веб-сервиса. Также в класс добавлен флагRequestFlags.OmitInstanceInUri
, определяющий, что при формировании запроса необходимо не добавлять имя экземпляра сервераInstanceName
в URI-адрес запроса. Это необходимо для запросов к адресам, которые не являются MVC-контроллерами TESSA, например, к адресу/hcheck
. - В форумы (обсуждения) добавлен интерфейс
ITopicNotificationService
для получения списка почтовых уведомлений. При необходимости отправки почтовых уведомлений пользователям, не являющимся участниками топика, используйте класс-наследник отTessa.Extensions.Default.Server.Forums.Notifications.TopicNotificationService
. - В событии
ICardStoreExtensionContext.OnContentStoring
ошибку загрузки контента теперь можно указать в свойствеeventArgs.ContentContext.ValidationResult
помимо исключения.
Исправления и оптимизации¶
- Исправлена редкая ошибка
Collection was modified
, возникающая при рефреше карточки с одновременным открытием боковой панели в desktop-клиенте. - Исправлена ошибка, приводившая к тому, что не сохранялась первая строка многострочного комментария при завершении задания дополнительного согласования.
- Оптимизировано взаимодействие с базой данных при конвертации файла посредством
IFileConverter.ConvertFileAsync
. Теперь соединение с базой данных не будет удерживаться до завершения конвертации. - Исправлена проверка доступа к карточке сателлита, не доступной для загрузки на клиент, при запросе карточки с клиента по её идентификатору.
- В web-клиенте в представлении “Участники” в контроле “Обсуждение” исправлена работа контекстных меню (“Изменить” и “Удалить”). Теперь если у пользователя нет прав супермодератора, то будет предложено рассчитать их. Поведение команд идентично поведению соответствующих плиток в представлении.
- Исправлена конвертация файлов с флагом
IgnoreCacheBeforeConversion
. Ранее этот флаг игнорировался и контент файла выдавался из кэша без создания новой операции конвертации. - В плагине асинхронной обработки процессов
WorkflowEngineAsyncPlugin
исправлена проблема, из-за которой запущенная операция могла зависнуть в состоянии “Выполняется”, если в момент её обработки была инициирована остановка плагина. - В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлены ошибки при отправке уведомлений.
- В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой при делегировании задания не учитывались параметры: “Редактировать карточку” и “Редактировать любые файлы”. В действии “Согласование” дополнительно не учитывался параметр “Отключить автоматическое согласование”.
- В обсуждениях (форумах) исправлена ошибка, из-за которой топик мог быть доступен пользователю только для чтения, когда у пользователя есть права на отправку сообщений.
- В web-клиенте исправлено поведение определения другой открытой вкладки: по клику нотификации - осуществляется переход, при закрытии или игнорировании - загрузка приложения.
- В web-клиенте исправлена ошибка в обсуждениях приводившая к визуальному отсутствию пустых строк и удалению идущих друг за другом пробелов.
- При проверке подписей исправлено ошибочное отображение иерархии сертификатов.
- Исправлено отображение кавычек в окне отображения информации о проверке подписей.
- Для веб-сервиса убрана поддержка создания операции конвертации со стороны клиента.
- Для контролов “Ссылка” и “Список” исправлен маппинг представления на поля карточки для случаев, когда контрол привязан к карточке задания.
- Исправлен импорт карточки временных зон поверх уже имеющейся.
- В TessaAdmin исправлена ошибка, когда при выборе столбца для привязки элемента управления, наименование группы для таблиц всегда отображалось как “(без группы)”.
- В web-клиенте исправлено появление второй полосы прокрутки при предпросмотре офисных документов.
- Исправлено исключение, возникавшее при компиляции шаблона файла в том случае, когда модуль компиляции не мог выстроить синтаксическое дерево.
- Исправлена ошибка, возникавшая при попытке добавить или отредактировать запись в контроле представления со скрытой колонкой.
- В маршрутах исправлена ошибка, приводившая к ошибочному определению наличия изменения положения этапов.
- В desktop-клиенте исправлены ошибки, возникавшие при сохранении или закрытии карточки с контролами “Представление” или “Список” без предварительного открытия вкладки с соответствующими контролами.
- Оптимизировано отображение типов диалогов в конструкторе представлений и конструкторе виртуальной схемы.
- Исправлена неизменность объекта
SessionToken
, которому в конструкторе передан параметрseal = true
. - В редакторе бизнес-процессов в действии “Диалог” исправлена ошибка, из-за которой не учитывался параметр “Текст кнопки в задании”.
- Для приложений Tessa Applications исправлена редкая ошибка
FileNotFoundException
при обращении к именованному каналу посредством классаPipeClient
. - Исправлена ошибка, возникающая при проверке прав доступа к карточке с выделением номера при создании карточки в ситуации, когда доступ к полям номера карточки запрещён через расширенные настройки правил доступа.
- Исправлен двойной клик по значению
DefaultSortColumns
в конструкторе представлений. - Исправлена ошибка, из-за которой при отправке уведомлений через
INotificationManager
правила уведомлений сотрудника обрабатывались в некорректном порядке. - В системе исправлена проблема с наличием лишнего доступа на изменение карточек-сателлитов из клиента.
- В web-клиенте исправлена некорректная инициализация контрола “Обсуждение”, если контрол находился на скрытой/неактивной вкладке.
- В web-клиенте исправлена ошибка несоответствия времени выбранного для параметра в фильтре его отображению в таблице над представлением.
- В маршрутах исправлена работа этапа “Пересчёт маршрута”. Ошибка воспроизводилась в случае, когда после этапа “Доработка”, с выставленным параметром “Управлять видимостью этапа”, следовал этап “Пересчёт маршрута”.
- Исправлена возможная ошибка
DllNotFoundException
при открытии окна сканирования. - В desktop-клиенте исправлено определение языка пользователя при генерации виртуального файла для предпросмотра с конвертацией в PDF.
- Исправлено определение подписывающего сертификата при импорте.
- При проверке подписей учитывается подтверждённая дата подписи или текущее время.
- Оптимизированы проверки прав доступа и отображение сообщений об ошибках доступа в запросах, связанных с обсуждениями.
- Исправлена невозможность снять флаг “Использовать обсуждения” в настройках типового решения для типа карточки или типа документа, если он был ранее установлен для лицензии, в которой есть модуль “Форумы и обсуждения”, а в текущий момент этого модуля в лицензии нет.
- Улучшена обработка ошибок в API тестов.
- В web-клиенте добавлены всплывающие подсказки для кнопок в обсуждениях.
- В web-клиенте исправлена ошибка, из-за которой контрол “Выбор цвета” блокировался при изменении прозрачности.
- Исправлено изменение значений полей таблиц-перечислений при обновлении схемы. Ошибка появилась в предыдущем патче.
- В web-клиенте для
CardTypeSectionColumn.defaultValue
исправлено преобразование типов при десериализации. - В редакторе типов карточек исправлена ошибка, возникающая при нажатии кнопки “Исправить всё” после успешного исправления типов карточек.
- В настройках расширения на узел дерева
RefSectionExtension
исправлены заголовки диалогов для добавления строк в таблицы. - В web-клиенте исправлена ошибка, из-за которой не работало расширение
AutomaticNodeRefreshExtension
на узле рабочего места. - В web-клиенте исправлена ошибка для контрола “Обсуждение” с активированной настройкой “Обратный порядок сообщений”. Пользователю отображался некорректный номер страницы для топика, в который он ещё ни разу не заходил.
- Оптимизировано создание источника файлов
IFileSource
, используемого при создании файлового контейнераICardFileContainer
. - В web-клиенте исправлена ошибка, из-за которой в контроле “Ссылка” при получении нового значения из кода расширения отображалось неактуальное старое значение.
- В web-клиенте исправлен баг, приводящий к некорректной работе поиска и фильтров при копировании в них полей из элементов управления “Ссылка” и “Список”.
- Исправлена команда
tadmin CheckService
: если параметр-timeout
задан как0
(по умолчанию), то таймаут подключения соответствует бесконечному, как указано в описании параметра. Ранее использовался таймаут из конфигурационного файла, который был определён как 40 минут. - Оптимизирована производительность сервисов и приложений, связанная с логированием на уровне
Trace
. - В конструкторе шаблонов бизнес-процессов исправлено зависание выполнения асинхронных операций, если в момент их выполнения плагин обработки асинхронных операций был выключен по таймеру или по причине остановки сервиса Chronos.
- Исправлена ошибка, возникавшая при генерации шаблона файла после импорта карточки шаблона файла на уже существующую карточку, если у импортируемой карточки есть изменения в файле шаблона.
- Оптимизировано выполнение представлений для СУБД PostgreSQL.
- При обновлении схемы данных исправлена проблема, из-за которой некорректно выводилась ошибка сохранения схемы данных в ситуации, когда ошибка вызывала поломку транзакции к базе.
- Исправлена ошибка в команде
tadmin ConvertCards
, возникающая, когда целевая директория при конвертации карточек совпадает с исходной. - Исправлена ошибка таймаута сохранения схемы в базу данных.
- В desktop-клиенте исправлена ошибка при попытке сохранить файл из сообщения топика на диск, при помощи перетаскивания drag&drop.
- В web-клиенте исправлен текст сообщения об ошибке
Не удалось найти тип документа с ID {0}
. - В TessaAdmin исправлена ошибка при добавлении в диалог маппинга для контролов “Ссылка”, “Список”, “Список файлов”, “Представление”.
- В web-клиенте исправлена ошибка в контроле “Нумератор”, из-за которой нельзя было задавать номер карточки вручную после редактирования порядкового номера.
- В форумах (обсуждениях) исправлена ошибка при попытке ответить на сообщение, содержащее в себе только приложенные файлы.
- Исправлена работа ограничения “Максимальный размер файла для загрузки в систему” в карточке настроек сервера.
Обновление на новую сборку¶
- Обновите файл
localization.json
в папке веб-сервиса: в группу настроекWebLoginStrings
добавлен параметрTitle
. - Для расширений на представления и узлы рабочего места
OpenTopicOnDoubleClickExtension
иOpenForumContextMenuViewExtension
изменено пространство имён сTessa.Extensions.Default.Client.Forum
наTessa.Extensions.Default.Client.Forums
. Мы рекомендуем произвести поиск и замену по рабочим местам и представлениям в репозитории. - В TessaAdmin исправлена ошибка при добавлении в диалог маппинга для контролов “Ссылка”, “Список”, “Список файлов”, “Представление”. Если вы добавляли/изменяли в диалогах маппинги для указанных контролов, то необходимо открыть приложение TessaAdmin, перейти в пункт меню “Карточки” и нажать кнопку “Исправить все”. После этого исправленные типы диалогов нужно переэкспортировать.
- В файлах проектов расширений
*.csproj
импорт файлов*.targets
из папки с проектом заменён на*.<group_name>.targets
. Значение<group_name>
может иметь значениеpre
, для установки значений свойств в начале файла проекта,props
, для переопределения имён свойств проекта до выполнения скриптов проекта, иpost
для добавления скриптов в конце файла проекта. Это позволяет изменять свойства проекта и добавлять скрипты сборки путём добавления файлов*.targets
в папку с проектом решения без изменения самого файла проекта. - В конструкторах коллекций типов карточек и объектов метаинформации, являющихся наследниками типа
CardSerializableEntryCollection<T>
, вместоICollection<T>
теперь передаётсяIReadOnlyCollection<T>
. Актуализируйте тип передаваемого параметра, если конструкторы используются в проектном решении. - Для desktop и web-клиента изменён интерфейс
IFormViewModel
, в котором свойствоTabVisibility
(tabVisibility
) заменено свойствомIsCollapsed
(isCollapsed
) для скрытия указанной вкладки. - Изменены названия в API обсуждений для параметров методов
IForumProvider
и типов перечислений, для desktop-клиента, сервера и web-клиента. При использовании в проектном решении может потребоваться их переименовать или изменить порядок параметров. Они называются схожим образом, например:readOnly -> isReadOnly
,MessageTypes -> MessageType
. - Удалена регистрация объекта для отправки уведомлений
CustomNotificationSender
. Мы рекомендуем использовать безопасный способ отправки уведомленийINotificationManager
. Если сейчас такой возможности нет, то разкомментируйте эту регистрацию в классеTessa.Extensions.Default.Server/Notices/Registrator.cs
. - В API форумов результат выполнения операции теперь всегда возвращается в объекте
ValidationResult
, тогда как ранее он мог размещаться вresponse.ValidationResult
. Измените проектные расширения, которые использовали API форумов. - В файлах
NLog.config
для всех сервисов и приложений рекомендуется удалить строкиwriteTo="null"
для всех тегов<logger>
. NLog не считает логгеры сwriteTo="null"
выключенными, что приводило к снижению производительности.
Изменения конфигурации при обновлении¶
-
Представления:
-
LastTopics
-
MetadataEditor
-
MyTopics
-
TopicParticipants
-
-
Таблицы:
-
FmAddTopicInfoVirtual
(удалена) -
FmMessages
-
FmMessageTypes
(переименована изFmMessagesTypes
) -
FmTopicParticipantsInfoVirtual
(удалена) -
FmTopicParticipantsVirtual
(удалена) -
FmTopicRoleParticipantsInfoVirtual
(удалена) -
FmTopics
-
FmUserStat
-
KrNotificationOptionalRecipientsVirtual
(добавлена) -
KrWeAdditionalApprovalOptionsVirtual
(добавлена) -
KrWeRequestCommentOptionsVirtual
(добавлена) -
PersonalRoleSubscribedTypesVirtual
(добавлена) -
WeEmailActionOptionalRecipients
(добавлена)
-
-
Библиотеки схемы:
-
Standard solution
-
Workflow
-
-
Типы:
-
KrNotificationStageTypeSettings
-
NotificationUserSettings
-
TopicDialogs
(добавлен) -
TopicTabs
-
WorkflowNotificationAction
-
-
Изменены библиотеки локализации.