Патч 3.6.0.10 (22.09.2022)¶
Добавление и изменение функциональности¶
- При подписании файлов сохраняется цепочка сертификатов, добавленная криптопровайдером.
- В рабочем месте “Пользователь” в представлении “Подписки на уведомления” добавлена возможность открывать карточку документа по двойному клику.
- Добавлена поддержка PEM сертификатов (файлов с расширениями
.crtи.pem) для сервиса web. Подробности доступны в разделе документации Настройки веб-сервера Kestrel в группе WebServer. - В файл
app.jsonсервиса web добавлены настройкиCertificateKeyFileиDataProtectionCertificateKeyFile. Настройки описаны в руководстве по установке. - В TessaAdmin в редакторе представлений в полях алиаса и заголовка представления теперь при потере фокуса происходит автоматическое удаление начальных и конечных пробелов. Алиас и заголовок представления больше не могут быть пустыми или состоять из одних пробелов.
- В форумах (обсуждениях) добавлена возможность задавать описание и заголовок топика с использованием строк локализации. При использовании нескольких строк локализации каждую из них необходимо заключать в фигурные скобки.
- При генерации ошибок типа
InstanceNotFoundдобавлен вывод имени объекта и стека места генерации ошибки, кроме режима"Configuration.StrictSecurity": true, устанавливаемого в файлеapp.jsonвеб-сервиса иChronos(если настройка установлена). - В web-клиенте улучшена обработка ошибок при windows-аутентификации.
- В тип карточки “Тип условия” добавлены кнопки для исправления условий конкретного типа и всех типов. Подробности доступны в разделе документации Исправление условий.
- Добавлено исправление условий при импорте карточек, содержащих условия.
- В настройки контролов “Строка” и “Текст с форматированием” добавлен признак “Проверять орфографию” (по умолчанию отключён), при включении которого выполняется проверка орфографии в соответствии с текущей языковой культурой пользователя.
Новые версии библиотек¶
HtmlAgilityPack 1.11.46Kerberos.NET 4.5.178MailKit 3.4.1Npgsql 5.0.15NTwain 3.7.2Quartz 3.5.0SixLabors.ImageSharp.Drawing 1.0.0-beta15StackExchange.Redis 2.6.66Swashbuckle.AspNetCore 6.4.0
Изменения API¶
- В web-клиенте реализована возможность загружать файлы в карточки заданий. Пример в расширении типового решения
TaskEnableAttachFilesExampleUIExtension. - В интерфейсе
IExtensionContainer(C#) добавлены перегрузки методовResolveExecutorAsyncиTryResolveExecutorAsync, принимающие дополнительный параметрsynchronized. Если передано значениеtrue, то к созданному объекту возможно одновременное обращение из разных потоков (нитей выполнения). Перегрузки, не принимающие этот параметр, подразумевают значениеsynchronized: false. - В форумах (обсуждениях) добавлен метод
IForumProviderStrategy.HasUnreadMessagesAsync, возвращающий признак того, что в указанном топике присутствуют непрочитанные сообщения для текущего пользователя. - Объекты
ICardToolbarViewModelиICardToolbarItemCollectionпредоставляют методSuspendNotifications, предотвращающий уведомления для коллекции кнопок на тулбаре о событияхPropertyChangedиCollectionChangedдо тех пор, пока не будет вызван методDisposeна возвращённом объекте. Это позволяет оптимизировать отрисовку в desktop-клиенте при большом количестве изменений в кнопках на тулбаре, например, при сохранении или обновлении карточки. - Объект
SuspendableObservableCollectionперенесён из пространства имёнTessa.UIвTessa.Platform.Collections. Его методSuspendChangeNotificationпереименован вSuspendNotifications. КоллекцияObservableCollection<TItem, TCollection>унаследована от этого класса и теперь реализует интерфейсISuspendableObservableCollection<TItem, TCollection>, который предоставляет методSuspendNotifications. - В desktop-клиенте в класс
GridColumnViewModelдобавлено свойствоHeaderStyleс настройками стиля заголовка колонки. - В настройки отображения карточки
ShowCardOptionsдобавлены настройкиHideParentWindow,UseParentWindowLocationиRestoreWindowLocationToParent, которые позволяют скрывать родительское окно при отображении дочернего окна, а также передавать размеры и положение этих окон между собой. - Добавлен интерфейс
IUriLinkHandler- обработчик для гиперссылок, используемый при открытии ссылок из контролов “Текст с форматированием”, “Метка” в режиме гиперссылки и при предпросмотре html-файлов (причём обработчик может определить, откуда именно открывается гиперссылка). Реализацию этого интерфейса можно переопределить для пользовательской логики обработки гиперссылок. ЛогикаIUriLinkHandlerвыполняется после обработчиков событияUriOpening. - Для
BlRichTextBoxViewModelBase(эта вью-модель соответствует контролу “Текст с форматированием”) добавлено событиеUriOpening, вызываемое при открытии гиперссылок. С помощью событияUriOpeningможно определить пользовательскую обработку гиперссылок для конкретного контрола, а также отменить обработку гиперссылок, которая выполняется посредствомIUriLinkHandler. - В web-клиенте для
LabelViewModelдобавлено свойствоlinkCommand, с помощью которого можно изменить заданную для контрола ссылку. - Добавлен метод
IFileSource.TryGetSourceObjectID, позволяющий получить идентификатор объекта-хранилища для указанного файла. - Для web-клиента добавлен метод
IFileSource.tryGetSourceObjectID(аналог соответствующего метода в desktop-клиенте), позволяющий получить идентификатор объекта-хранилища для указанного файла. - В
ITaskActionдобавлено свойствоBackgroundдля возможности изменения фона варианта завершения в задании. Если свойство не задано, то будет использоваться цвет из темы. - Для контрола “Представление” в desktop-клиенте в классе
CardViewControlViewModelдобавлено событиеRefreshed, вызываемое после успешного обновления источника данных и объектов UI (колонок и строк). В обработчиках события можно изменить эти объекты. Для переопределения данных, по которым строятся объекты UI, замените источник данных в свойствеDataProvider. - В desktop-клиенте для модели представления ячейки
TableCellViewModel, использующейся в представлениях в рабочих местах и в контроле карточки “Представление”, добавлена возможность динамически изменять все свойства, влияющие на отображение, в т.ч. цвет фона, цвет текста, шрифт и выравнивание. Пример изменения цвета фона ячейки в контроле “Представление” в расширенииCardUIExtension.Initialized:context.Model.Controls.Get<CardViewControlViewModel>("ControlAlias").Items.First().CellsByColumnName["ColumnAlias"].Background = Brushes.Blue. - В web-клиенте для контрола “Текст с форматированием” добавлен флаг
richTextBoxViewModel.stretchByContentдля растягивания высоты контрола по его контенту. - В
TaskAction(TypeScript) добавлено свойствоbackgroundдля возможности изменения фона варианта завершения в задании. Если свойство задано не будет, то будет использоваться цвет из темы. - В
TaskWorkspaceViewModel(TypeScript) добавлено полеmoreActionдля возможности изменения цвета кнопки “ещё”. Если свойствоmoreAction.backgroundзадано не будет, то будет использоваться цвет из темы. - Добавлены ложные реализации типов для компиляции. Разрешение таких объектов теперь всегда выполняется успешно. Но использование ложных реализаций будет вызывать исключение
NotSupportedException. - В
ForumHelperдобавлена константаMessageText, предназначенная для формирования текста сообщения с корректным форматированием. - Добавлен объект
IConditionRepairManager, который позволяет запускать исправление условий для карточек и для типов условий. Объект доступен как на клиентской стороне для администратора, так и на серверной. - В
ConditionHelperв методы сериализации и десериализации условий добавлен параметрIConditionTypesProvider, который необходим для корректной сериализации и десериализации условий. - Для запроса на загрузку карточки
CardGetExtensionдобавлен метод расширения дляSetDisableExpandJsonFlagдля указания на то, что при экспорте карточки не нужно разворачивать JSON-поля карточки из строки вDictionary<string, object>. Также добавлен методTryGetDisableExpandJsonFlagдля получения данного флага из запроса и методShouldExpandJsonдля проверки флага с учётом значения поляExportFormatзапроса. - В методы
ICardManager.ImportAsync()добавлен параметрbool wipeDeleted = false. В значенииtrueфлаг указывает на то, что нужно очищать удалённые в корзину карточки, если они будут препятствовать импорту. - В web-клиенте добавлена возможность настроить компоненты грида для отображения с горизонтальным скролом. В объектах
TableGridViewModelBase,TaskHistoryViewModel,GridViewModelдобавлено свойствоhorizontalScroll, которое позволяет устанавливать режим работы грида с горизонтальным скролом. Пример использования доступен вdefault/examples/25_horizontalScrollViews.ts.
Исправления и оптимизации¶
- Исправлена ошибка некорректного отображения порядка вкладок карточки, если основная вкладка карточки расположена не первой.
- Исправлена ошибка некорректного отображения вкладки “Обсуждения” в карточке, если основная вкладка карточки расположена не первой.
- Оптимизировано обращение к свойству
ConfigurationObject.DataProvider, выполняемое при открытии соединения к базе данных. - Оптимизировано выполнение цепочек расширений посредством
IExtensionExecutor<TExtension>, когда к объекту невозможны одновременные обращения из разных потоков (нитей выполнения). - Исправлена ошибка, из-за которой обращения к свойствам
CardTask.CardиCardFile.Cardв расширенияхICardStoreExtension.BeforeRequestдля удаляемых заданий и файлов приводило к ошибкам валидации видаЗначение свойства 'ID' не задано. - В web-клиенте в рабочем месте “Пользователь” в представлении “Подписки на уведомления” добавлена возможность удалять подписки на уведомления с помощью комбинации клавиш Ctrl+D.
- Исправлено сохранение результата валидации с ошибками при компиляции скриптов в различных объектах системы. Проблема могла привести к некорректному выполнению некоторых скриптов в ситуации, когда их компиляция не была выполнена из-за ошибки в скрипте.
- Удален флаг
.forumExportCardTemplate, проставляемый при экспорте карточек. - При открытии вкладки “Обсуждения” в карточке больше не делается запрос на получение топиков в случае, если карточка ни разу не была сохранена.
- Исправлена работа параметров
DataProtectionCertificateFileиDataProtectionCertificatePasswordв файлеapp.jsonсервиса web. - В редакторе схемы данных исправлена ошибка, из-за которой редактирование колонки становилось невозможным, если длина её имени превышала 128 символов.
- В форумах (обсуждениях) исправлено обновление списка сообщений и топиков с помощью хоткея Ctrl+R.
- В desktop-клиенте в маршрутах исправлена ошибка
KeyNotFoundExceptionпри сохранении карточки, для которой разрешены маршруты, если она была загружена с исключением всех секций (CardGetRestrictionFlags.RestrictSections). - В desktop-клиенте оптимизирована работа представлений, показывающих большое количество строк.
- В desktop-клиенте в форумах (обсуждениях) и элементе управления “Текст с форматированием” исправлена ошибка, приводившая к тому, что внесенные в полноэкранном режиме изменения не сохранялись.
- Исправлена ошибка, из-за которой сортировка в Tessa Applications на вкладках “Серверы” и “Приложения” отличалась от сортировки в контекстном меню на иконке в таскбаре.
- В таблице
SequencesInfoисправлен индекс по колонкеNameдля PostgreSQL. - Исправлены почтовые уведомления о необходимости скорого изменения пароля, когда за раз пользователю могло быть отправлено более одного письма.
- Исправлена локализация текста во всплывающих уведомлениях при запуске TessaClient о необходимости скорого изменения пароля.
- В форумах (обсуждениях) исправлена ошибка, приводившая к некорректному поведению при попытке изменить самого себя в списке участников.
- В desktop-клиенте оптимизирована отрисовка кнопок на тулбарах при сохранении и обновлении карточки.
- В web-клиенте исправлена ошибка, из-за которой при обновлении обсуждений введенный текст не сохранялся.
- В web-клиенте при первом сохранении карточки, для которой был выделен номер, теперь не отправляется запрос на дерезервирование номера.
- В маршрутах исправлена ошибка, из-за которой можно было удалить или активировать этап, расположенный в активной части процесса. Ошибка воспроизводилась для этапов, у которых был установлен флаг “Разрешён пропуск”.
- Исправлен текст ошибки при попытке сохранить карточку
ICardEditorModel.SaveCardAsync, если объектICardModelне содержит корректно инициализированный объектFileContainer. Ранее возникала ошибка NRE. - В web-клиенте исправлена ошибка при редактировании файла через Deski, из-за которой файл мог сохраниться с неправильным размером.
- В редакторе бизнес-процессов исправлена ошибка
ArgumentNullExceptionпри загрузке редактора или запуске процесса. Ошибка возникала, если в действии “Старт процесса” не был указан “Запускающий сигнал”. - В web-клиенте исправлена ошибка, приводящая к некорректному отображению некоторых изображений вертикальной ориентации в режиме предпросмотра: адаптация изображения происходила только в горизонтальном направлении.
- В desktop-клиенте добавлено автоматическое разворачивание активного окна при клике на заблокированные модальными диалогами окна.
- В web-клиенте исправлена ошибка, приводящая к отсутствию возможности скролла “рукой” области предпросмотра PDF-файлов в continuous режиме.
- Исправлена проблема в логике распознавания сервисных гиперссылок для “Обсуждений”, которая приводила к неработоспособности других гиперссылок, содержащих в строке
Uriключевые слова, используемые в сервисных гиперссылках для “Обсуждений”. - В TessaAdmin в редакторе рабочих мест исправлена ошибка при автоматическом выборе пункта меню в момент открытия режима просмотра рабочего места.
- В web-клиенте исправлена ошибка, приводящая к отсутствию вертикальных отступов для контролов горизонтальных блоков.
- В web-клиенте исправлена ошибка в отображении параметра “Отображаемое имя диалога” для этапа и действия в локальном и глобальном диалоге.
- В desktop-клиенте исправлена проблема, когда часть заголовка была закрыта иконкой сортировки по колонке.
- В desktop-клиенте в представлениях рабочих мест и контроле “Представление” исправлено определение позиции строк “Загрузка данных” и “Нет данных для отображения” в ситуации, когда высота заголовка таблицы отличается от стандартной.
- В web-клиенте исправлена ошибка, из-за которой не открывалась ссылка, указанная для контрола “Метка”.
- Исправлена ошибка, приводившая к неконсистентному результату подсчета символов в сообщении между клиентом и сервером.
- В web-клиенте исправлена ошибка, из-за которой в карточке задания не отображались прикрепленные файлы.
- В web-клиенте в форумах (обсуждениях) и контроле “Текст с форматированием” исправлена ошибка, приводившая к дублированию изображения при вставке из буфера обмена.
- В web-клиенте текст ошибки при превышении максимально допустимого размера изображения вынесен в строку локализации.
- Исправлена ошибка, из-за которой в редакторе типов карточек в настройках маппинга представления нельзя было выбрать в качестве поля карточки колонку с идентификатором, ссылающуюся на таблицу с типом “Перечисление”.
- Исправлена возможная ошибка
The wait completed due to an abandoned mutexвTessaAppManagerпри обработке ссылокtessa://tessaclient.... - В web-клиенте исправлена ошибка, из-за которой не работала подсветка полей представления при указании для строки
#appearanceцвета в 6-значном формате (#A62231) в тексте запроса. - В desktop-клиенте исправлена ошибка, из-за которой при нажатии на кнопку очистки значений в контролах “Ссылка” и “Список” фокус сбрасывался на родительский блок, что могло привести к незапланированному скроллингу карточки в ситуации, когда заголовок блока был вне поле зрения. Теперь после нажатия кнопки очистки значений фокус устанавливается на сам контрол.
- В desktop-клиенте в контролах “Ссылка” и “Список” исправлена проблема вызова события
ValueDeletedпри удалении элемента из контрола через контекстное меню или кнопку очистки значения. - Для desktop-клиента и консольного приложения tadmin оптимизировано потребление памяти при отправке запросов к серверу приложений.
- Исправлено создание дублирующих экземпляров
IUnityContainerпри инициализации сервиса web. Это могло приводить к зависанию сервиса при большом количестве параллельных запросов. - Исправлена ошибка при запуске TessaClient или TessaAdmin из Tessa Applications 3.4.0 с текстом:
System.TimeoutException: The operation has timed out. - Исправлено предупреждение в логах
Can't resolve assembly "Microsoft.SqlServer.Server"для консольной утилитыtadmin. - В маршрутах исправлена ошибка, приводящая к потере результатов валидации из
IKrScope.ValidationResult. Ошибка возникала, если при запуске процесса происходила ошибка загрузки сателлита с информацией о процессе. - Исправлено использование метода
DeferredEventArgs.Deferв различных обработчиках событий для серверного API и desktop-клиента, где в качестве экземпляра события передавалось значениеDeferredEventArgs.Empty. - Исправлена работа кнопки “Сброс настроек” в диалоге “Мои настройки”. Теперь для всех настроек устанавливаются значения по умолчанию.
- В диалоге импорта карточек из библиотеки (в TessaClient или TessaAdmin) исправлена ошибка
NotSupportedException, которая могла возникать после того, как в диалоге сначала открыта существующая библиотека карточек, а потом в неё добавлен файл. - В desktop-клиенте в методе копирования стиля текста
TextStyleViewModel.Setисправлено копирование оформления текста. - В web-клиенте исправлена ошибка записи в карточку пустых строк контрола “Десятичное число”.
- В диалоге импорта карточек из библиотеки (в TessaClient или TessaAdmin) исправлен диалог выбора пути при сохранении библиотеки в случае, если редактируется уже существующая библиотека карточек.
- В диалоге импорта карточек из библиотеки (в TessaClient или TessaAdmin) исправлена ошибка
NotSupportedException, которая могла возникать, если в диалоге сначала открыть существующую библиотеку карточек, в которую были добавлены несуществующие файлы, после чего в диалоге подтверждения на удаление карточек с отсутствующими файлами нажать “Да”. - При расчёте заместителей исправлена ошибка, из-за которой замещения могли завершаться на день раньше, чем было настроено. Проблема возникала при использовании СУБД Postgres.
- В TessaAdmin для контрола выбора типа значения исправлена сортировка при быстром поиске по заглавным буквам.
- В web-клиенте исправлена ошибка, приводящая к невозможности использовать быстрый поиск в мобильной версии приложения на операционной системе Android.
- Исправлена ошибка, приводившая к NRE, при указании несуществующего параметра в маппинге контрола “Представление”.
- В web-клиенте исправлена ошибка, приводящая к отображению кнопки сброса при применении скрытых параметров фильтрации данных.
- В web-клиенте исправлена ошибка, приводящая к некорректному отображению локализации в тултипах представлений.
- В обработчике шаблонов бизнес-процессов исправлена ошибка, когда при сохранении карточки в ходе обработки процесса сообщения с уровнем
InfoиWarningне возвращались в результате обработки процесса и не выводились пользователю. - Исправлены опечатки в названиях классов, методов, параметров темы, строк локализации и других объектов:
Pallete -> Palette. - В web-клиенте исправлена ошибка, приводящая к некорректному отображению даты кэширования метаинформации: ранее время отображалось в utc формате, теперь в локальном.
- В web-клиенте исправлена ошибка, приводящая к невозможности раскрыть контрол представления древовидной структуры с примененной настройкой “Сворачивать группы”.
- В файле
app.jsonвеб-сервиса включение конфигурационных файловapp-*.jsonтеперь выполняется позже, чем файловpatch*.jsonиlocalization.json, что позволяет изменять в них строки локализации и информацию по патчам. - Исправлена ошибка, возникающая при выполнении команды
tadmin MigrateFiles, когда система не могла разрешить типы компиляции. - В web-клиенте исправлена ошибка, из-за которой файл не отображался в предпросмотре, если предпросмотр расположен на отдельной вкладке.
- В desktop-клиенте исправлена ошибка, из-за которой некоторые фотографии, снятые на мобильные устройства, при загрузке в программу оказывались перевернуты.
- При импорте карточек в процессе объединения изменений
SmartMergeс карточкой в системе исправлена проблема, когда исправление карточки вызывалось дважды: один раз для импортируемой карточки и один раз для существующей карточки в системе, что могло привести к двойным сообщениям об исправлении карточки. Теперь исправление выполняется только для импортируемой карточки. - Механизм исправления карточек теперь также восстанавливает тип секции, если он был указан неверно.
- Оптимизирована работа типов условий, теперь для них не создаются фиктивные типы карточек, которые загружались на клиент.
- В web-клиенте исправлены стили пунктов меню сохраненных запросов диалога “Фильтрация данных”.
- В клиенте исправлено восстановление исходного поряда строк при отмене удаления строки в обработчике события
GridViewModel.RowInvoked. - В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой указывался некорректный вариант завершения в истории заданий при завершении задания с вариантом “Запросить комментарии”.
- Исправлена ошибка, которая приводила к тому, что при импорте карточки её исправление выполнялась дважды, если такая же карточка находится в корзине.
- В web-клиенте исправлена ошибка контролов “Ссылка” и “Список” в диалоге настройки параметров фильтрации представлений. Кнопка выбора из автокомпилта остается доступной, даже если настройка
AutocompleteInfoне была задана в настройках контрола. - Исправлена ошибка, из-за которой в процессе сохранения карточки с удалением файла при возникновении ошибки сохранения содержимое файла могло быть удалено.
- В web-клиенте исправлена ошибка, приводящая к отсутствию переноса текста в заголовках представлений.
- В маршрутах исправлена ошибка, из-за которой при пропуске этапа не сохранялась информация об изменённых параметрах или порядке следования в маршруте. Ошибка воспроизводилась, если пропуск этапа выполнялся после изменения его параметров и/или порядка следования.
- В маршрутах исправлена ошибка, приводящая к изменению порядка следования этапов при одновременном пропуске нескольких этапов.
- В маршрутах исправлена ошибка, из-за которой при пропуске этапа изменялось положение добавленного вручную этапа. Ошибка воспроизводилась, если перед пропуском этапа карточка содержала добавленный вручную этап с изменённым порядком следования.
- В desktop-клиенте исправлена инициализация свойства
RowEventArgs.CancellationToken.
Обновление на новую сборку¶
- Добавлена поддержка дистрибутива Linux
Calculate Linux 22.0.1. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в разделе документации Системные требования для серверов Linux. - Если в коде проектного решения C# вызываются цепочки расширений посредством методов
IExtensionContainer.ResolveExecutorAsyncилиTryResolveExecutorAsync, и к возвращённому объектуIExtensionExecutor<TExtension>возможно одновременное обращение из разных потоков (нитей выполнения), то используйте перегрузки этих методов с параметромsynchronized: true. - Объект
SuspendableObservableCollectionперенесён из пространства имёнTessa.UIвTessa.Platform.Collections. Его методSuspendChangeNotificationпереименован вSuspendNotifications. КоллекцияObservableCollection<TItem, TCollection>унаследована от этого класса и теперь реализует интерфейсISuspendableObservableCollection<TItem, TCollection>, который предоставляет методSuspendNotifications. Обновите код проектных расширений, если использовали эти классы и интерфейсы. - Исправлена опечатка в свойстве
SatelliteTypeDescriptor.IsDefferedStore. Переименуйте места использования в проектах. - Удалено свойство
DeferredEventArgs.Empty. Используйте вместо него создание экземпляра конструктором по умолчаниюnew DeferredEventArgs(). - Исправлены опечатки в названиях классов, методов, параметров темы, строк локализации и других объектов:
Pallete -> Palette. Переименуйте их в проектном решении, если они используются: строки локализации (CardTypes_Blocks_ColorsPaletteи др.), параметр темыCold.json(ColorsPalette), пространство имён (Tessa.UI.Controls.ColorPalette), интерфейсы (IColorPaletteSettingsManager,IColorPalette,IColorPaletteItem), классы (ChartColorPaletteHelper,ButtonPaletteItemViewModel,ColorPaletteItemViewModel,ColorPaletteSettingsManager,ColorPaletteViewModel), перечисление (PaletteColorTypes). - Класс
KrScopeLevelбольше не реализует интерфейсIAsyncDisposable. Для выполнения задач, связанных с освобождением ресурсов, используйте методKrScopeLevel.ExitAsync. - В файле
app.jsonвеб-сервиса включение конфигурационных файловapp-*.jsonтеперь выполняется позже, чем файловpatch*.jsonиlocalization.json, что позволяет изменять в них строки локализации и информацию по патчам.
Изменения конфигурации при обновлении¶
-
Представления:
NotificationSubscriptions
-
Таблицы:
SequencesInfo
-
Типы:
-
ConditionType -
PersonalizationUserSettings -
ServerInstance
-
-
Изменены библиотеки локализации.