Перейти к содержанию

Версия 3.5 (04.06.2020)

Переход на новую сборку

  1. Изменены рабочие места: Administrator.
  2. Изменены представления: ApplicationArchitectures (добавлено), Applications, AvailableApplications, DialogButtonTypes (переименовано из KrDialogButtonTypes), DialogCardAutoOpenModes (переименовано из KrDialogCardAutoOpenModes), DialogCardStoreModes (переименовано из KrDialogCardStoreModes), EmittedTasks, KrCycleGroupingModes (добавлено), KrDialogButtonTypes (переименовано в DialogButtonTypes), KrDialogCardAutoOpenModes (переименовано в DialogCardAutoOpenModes), KrDialogCardStoreModes (переименовано в DialogCardStoreModes), KrDocStateCards, KrPermissionRuleAccessSettings, KrPermissions, KrPermissionsExtendedCards, KrPermissionsExtendedTasks, KrPermissionsReport (добавлено), KrSecondaryProcesses, KrTypesForDialogs, LastTopics, MyTasks (необязательное изменение), MyTopics, Roles, SignaturePackagings (добавлено), SignatureProfiles (добавлено), SignatureTypes (добавлено), TopicParticipants, Users, WebApplications (добавлено), WorkflowSignalProcessingModes (добавлено).
  3. Изменены таблицы: ApplicationArchitectures (добавлена), Applications, AutoApproveHistory, CompiledViews, DialogButtonTypes (переименована из KrDialogButtonTypes), DialogCardAutoOpenModes (переименована из KrDialogCardAutoOpenModes), DialogCardStoreModes (переименована из KrDialogCardStoreModes), Dialogs, DocLoadSettings, DocumentCategories, DynamicRoles, FileSignatures, FileVersions, FmForumSatellite (удалена), FmMessages, FmParticipantTypes, FmTopicParticipantRolesUnsubscribed, FmTopicTypes, FmTopics, Genders (удалена), KrAcquaintanceAction, KrAcquaintanceActionRoles, KrAdditionalApprovalsRequestedInfoVirtual (добавлена), KrAmendingActionVirtual (добавлена), KrApprovalActionAdditionalPerformersDisplayInfoVirtual (добавлена), KrApprovalActionAdditionalPerformersSettingsVirtual (добавлена), KrApprovalActionAdditionalPerformersVirtual (добавлена), KrApprovalActionNotificationActionRolesVirtual (добавлена), KrApprovalActionNotificationRolesVirtual (добавлена), KrApprovalActionOptionLinksVirtual (добавлена), KrApprovalActionOptionsActionVirtual (добавлена), KrApprovalActionOptionsVirtual (добавлена), KrApprovalActionVirtual (добавлена), KrApprovalCommonInfo, KrApprovalCommonInfoVirtual, KrChangeStateAction, KrCreateCardAction, KrDialogButtonTypes (переименована в DialogButtonTypes), KrDialogCardAutoOpenModes (переименована в DialogCardAutoOpenModes), KrDialogCardStoreModes (переименована в DialogCardStoreModes), KrDialogSatellite (удалена), KrDialogStageTypeSettingsVirtual, KrDocType, KrPermissionRuleAccessSettings, KrPermissions, KrResolutionActionVirtual (добавлена), KrRouteInitializationActionVirtual (добавлена), KrSecondaryProcessRoles (переименована из KrSecondaryProcessContextRoles), KrSecondaryProcesses, KrSettingsCardTypes, KrCycleGroupingModes (добавлена), KrSettingsCycleGrouping (добавлена), KrSettingsCycleGroupingStates (добавлена), KrSettingsCycleGroupingTypes (добавлена), KrSigningActionNotificationActionRolesVirtual (добавлена), KrSigningActionNotificationRolesVirtual (добавлена), KrSigningActionOptionLinksVirtual (добавлена), KrSigningActionOptionsActionVirtual (добавлена), KrSigningActionOptionsVirtual (добавлена), KrSigningActionVirtual (добавлена), KrSigningStageSettingsVirtual, KrTaskRegistrationActionNotificationRolesVitrual (добавлена), KrTaskRegistrationActionOptionLinksVirtual (добавлена), KrTaskRegistrationActionOptionsVirtual (добавлена), KrTaskRegistrationActionVirtual (добавлена), KrUniversalTaskActionButtonLinksVirtual (добавлена), KrUniversalTaskActionButtonsVirtual (добавлена), KrUniversalTaskActionNotificationRolesVitrual (добавлена), KrUniversalTaskActionVirtual (добавлена), KrWeActionCompletionOptions (добавлена), KrWeEditInterjectOptionsVirtual (добавлена), KrWeRolesVirtual (добавлена), NotificationPostponement (удалена), Outbox, PersonalRoleSatellite, PersonalRoles, RoleDeputies, RoleGenerators, Roles, Satellites (добавлена), ServerInstances, Sessions, SignatureCertificateSettings (добавлена), SignatureDigestAlgorithms (добавлена), SignatureEncryptDigestSettings (добавлена), SignatureEncryptionAlgorithms (добавлена), SignaturePackagings (добавлена), SignatureProfiles (добавлена), SignatureSettings (добавлена), SignatureTypes (добавлена), TEST_CarMainInfo, WeDialogAction (добавлена), WeDialogActionButtonLinks (добавлена), WeDialogActionButtons (добавлена), WeStartAction, WeTaskActionDialogs (добавлена), WeTaskActionNotificationRoles (перенесена в библиотеку схемы), WebApplications (добавлена), WfSatellite, WfTaskCards (удалена), WorkflowEngineProcesses, WorkflowInLinks, WorkflowLinks, WorkflowSignalProcessingModes (добавлена).
  4. Изменены миграции: Platform.
  5. Изменены типы: Application, Car, DepartmentRole, Dialogs, DocLoad, DynamicRole, FileSatellite (добавлен), ForumSatellite, KrAdditionalApproval, KrAmendingAction (добавлен), KrApprovalAction (добавлен), KrApprove, KrCard, KrChangeStateAction, KrDeregistrationAction, KrDialogStageTypeSettings, KrDocType, KrExampleDialogSatellite, KrNotificationStageTypeSettings, KrPermissions, KrRegistrationAction, KrResolutionAction (добавлен), KrRouteInitializationAction (добавлен), KrSatellite, KrSecondaryProcess, KrSecondarySatellite, KrSettings, KrSigningAction (добавлен), KrSigningStageTypeSettings, KrTaskRegistrationAction (добавлен), KrUniversalTaskAction (добавлен), PersonalRole, PersonalRoleSatellite, RoleGenerator, ServerInstance, ShowDialog (добавлен), SignatureSettings (добавлен), StaticRole, WebApplication (добавлен), WfSatellite, WfTaskCard, WorkflowActionEditor, WorkflowConditionAction, WorkflowDialogAction (добавлен), WorkflowLinkEditor, WorkflowNodeEditor, WorkflowNotificationAction, WorkflowProcessEditor, WorkflowStartAction, WorkflowTaskAction, WorkflowTaskGroupAction.
  6. Изменены карточки: Acquaintance (добавлена), Addendum (необязательное изменение), ApprovalHistory, ApprovalHistoryCondition, Aggregate roles, All employees (необязательное изменение), CancelButton, Continuous document load (settings) (необязательное изменение), Contract (необязательное изменение), Default access rules, Default acquaintance access rule (добавлена), DeregisterButton, Directive (необязательное изменение), DocStateCondition, Document (необязательное изменение), IAmModerator (добавлена), Incoming (необязательное изменение), NewIterationTemplate, Official note (необязательное изменение), Order (необязательное изменение), Outgoing (необязательное изменение), PrintableApprovalHistory, RebuildButton, RejectButton, ReturnForAmendingTemplate, RouteCondition, SendProtocolTasksButton, Server settings (settings) (необязательное изменение), Signature settings (settings) (добавлена), Standard solution (settings) (необязательное изменение), StartProcessButton, TaskNotification, TasksNotification, TokenNotification (переименована в UpdateKeysNotification), UpdateKeysNotification (переименована из TokenNotification).
  7. Изменены библиотеки локализации.
  8. Перед обновлением схемы выполните скрипт Fixes/Migration-3.5-pre.**.sql, а после обновления - скрипт Fixes/Migration-3.5.**.sql (версия скрипта “ms” или “pg” для соответствующей СУБД).
  9. Для англоязычной локализации карточки роли “Ознакомление” (“Acquaintance”) выполните SQL-скрипт Fixes\LocalizeEnglish.sql (скрипт выполняется для любой СУБД).
  10. Обновите файл app.json для веб-сервиса web и сервиса Chronos в соответствии с тем, что поставляется со сборкой. Обратите внимание на строку “ServerDependencies” для веб-сервиса и на строки с настройками мобильного согласования для Chronos.
  11. Файл app.json веб-сервиса web и сервиса Chronos содержит незаполненные параметры SignatureKey и CipherKey. Для их заполнения, используйте консольные команды tadmin GetKey/SetKey.
  12. Скрипты установки Setup.bat/setup.sh и обновления Upgrade.bat/upgrade.sh теперь обновляют SignatureKey и CipherKey в app.json веб-сервиса web и сервиса Chronos.
  13. В файле app.json сервиса Chronos изменены имена настроек для мобильного согласования по почтовому протоколу POP3 с префиксом “MobileApproval”: Pop3Hostname->Pop3ImapHost, Pop3Port->Pop3ImapPort, Pop3User->Pop3ImapUser, Pop3Password->Pop3ImapPassword, Pop3UseSsl->Pop3ImapUseSsl.
  14. Объекты конфигурации теперь используют переводы строк LF “\n” вместо CR LF “\r\n”. Преобразование файлов в папке конфигурации платформы уже выполнено. Для преобразования в папке с конфигурацией вашего проекта используйте команду tadmin ConvertConfiguration -mode:LF “Путь_до_папки_Configuration”.
  15. В папке Configuration в сборке платформы есть следующие изменения. Изменены переводы строк на LF (unix style). Удалены символы “ ” в xml-файлах. Представления и рабочие места используют кодировку UTF8+BOM вместо UTF8, а в заголовках задана фиктивная информация по имени сотрудника, дате изменения и версии рабочего места. В библиотеках локализации удалены пустые теги <Comment>. В файлах схемы актуализирован порядок атрибутов и порядок таблиц, чтобы экспортируемая в новую папку схема не отличалась от схемы в сборке. В файлах типов карточек/файлов/заданий .jtype упорядочены коллекции объектов и определены значения по умолчанию для свойств. Все эти изменения не являются изменениями в объектах, но будут видны в репозитории при сравнении текстовых файлов. Фактический список изменённых объектов приведён выше.
  16. Для того, чтобы при экспорте рабочего места в файл версия рабочего места в этом файле была равна константе “1” (ранее версия увеличивалась с каждым сохранением), вы должны внести в него любое изменение и сохранить, используя TessaAdmin от текущей версии платформы. Или поле с версией можно изменить в репозитории в файле .workplace, установив Version:1 в строке #workplace; после импорта такого файла на сервер экспорт также будет выполняться с версией “1”. На работу системы версия не влияет, но надо выполнить это действие (изменение или импорт) на сервере, с которого информация будет экспортироваться в репозиторий (обычно это сервер разработчиков), чтобы не было изменений при последующем экспорте.
  17. В web-клиенте теперь по умолчанию включена функциональность “Deski” в файле app.json веб-сервиса, она позволяет выполнить интеграцию с приложением-ассистентом web-клиента Tessa Deski. Чтобы отключить эту функциональность (и скрыть связанные с ней пункты меню), укажите значение “Enabled”: false внутри группы “Deski” в файле app.json веб-сервиса.
  18. Изменены файлы тем интерфейса в подпапке themes для приложения TessaClient и в веб-сервисе (папка wwwroot\themes).
  19. С этой версии платформы изменились требования к версиям дистрибутивов ОС Linux. Debian поддерживается с версии 9, Fedora поддерживается с версии 30. Добавлена поддержка дистрибутивов Ubuntu 20.04 и CentOS 8. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в документе “Руководство по установке на Linux”.
  20. Приложения Publisher и TokenEditor были удалены. Используйте консольные команды tadmin PackageApp или GetKey/SetKey соответственно. Документация по командам доступна в руководстве администратора.
  21. Из-за ошибки в сборках 3.0.0 - 3.3.0 (она была исправлена в одном из патчей к 3.3.1) новый Tessa Applications не может подключаться к серверам с этими сборками, которые установлены на ОС Windows, но может подключаться к серверам с теми же сборками, установленными на ОС Linux. С предыдущими версиями Tessa Applications была обратная ситуация: он не подключался к серверу приложений, который установлен на ОС Linux. Эта проблема не затрагивает сборки 3.3.1 (с патчем), 3.4.0, а также любые сборки версий 2.x. В качестве решения скопируйте файл Fixes\CoreAppManagerFix\CoreAppManagerFix.cs из папки со сборкой в папку с исходными кодами вашего проекта Tessa.Extensions.Server.Web (используйте типовой проект или папку из вашего проектного решения), скомпилируйте проект и замените файл Tessa.Extensions.Server.Web.dll в папке вашего веб-сервиса, после чего перезапустите веб-сервис. В качестве альтернативных решений мы рекомендуем или обновить такие серверы до версий, с которыми нет ошибок (3.3.1 и старше), или перенести их на ОС Linux, или не обновлять Tessa Applications. Например, Tessa Applications от сборки 3.4.0 может запускать приложения от сборки 3.5.0 (но только 32-битные версии приложений, если опубликованы и 32-битные, и 64-битные версии), и он работает с серверами 3.0.0 - 3.3.0 на ОС Windows (но не работает с ними на ОС Linux).
  22. Приложение SchemeEditor теперь доступно только в 64-битной версии. Используйте приложение TessaAdmin для редактирования схемы в 32-битной ОС.
  23. Расширения desktop-клиента TessaClient или TessaAdmin теперь расположены в подпапке extensions.
  24. Библиотека контроллера с проектной бизнес-логикой Tessa.Extensions.Server.Web теперь по умолчанию расположена в подпапке extensions, ссылка на неё присутствует в файле app.json.
  25. NuGet-пакет Tessa.Compilation был переименован в Tessa.Server.
  26. В файлах проектов Tessa.Extensions.***.csproj добавлены ссылки на версии NuGet-пакетов всегда с последним патчем в формате: 3.5.0.*. Если выйдут патчи для пакетов, например, 3.5.0.1, 3.5.0.2 и др., то они всегда будут использоваться при сборке вместо указанных версий.
  27. На сервере приложений теперь требуется установленный пакет .NET Core Runtime & Hosting Bundle версии 3.1.4 или старше. Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet-core/3.1
  28. Если для сборки проектов расширений вы используете IDE Visual Studio 2019, то теперь требуется версия 16.5 или старше. Также, независимо от выбранной IDE, требуется установленный пакет .NET Core SDK версии 3.1.202 или старше (устанавливается вместе с Visual Studio). Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet-core/3.1
  29. Серверные расширения Tessa.Extensions.Server (и библиотеки модулей, если используются) должны таргетироваться на платформу netcoreapp3.1 вместо платформы netcoreapp3.0, используемой в предыдущей сборке 3.4.0, или netstandard2.0 в более старых версиях сборок. Обновите файл проекта Tessa.Extensions.Server.csproj, используемого для разработки серверных расширений в рамках проекта, из аналогичного файла в сборке в папке Source\Extensions\Tessa.Extensions.Server. Вместо замены всего файла достаточно указать <TargetFramework>netcoreapp3.1</TargetFramework>.
  30. Общие расширения ***.Shared, доступные на клиенте и на сервере, должны таргетироваться на платформу netcoreapp3.1 вместо netstandard2.0. Обновите файл проекта Tessa.Extensions.Shared.csproj, используемого для разработки общей для клиента и сервера функциональности в рамках проекта, из аналогичного файла в сборке в папке Source\Extensions\Tessa.Extensions.Shared. Вместо замены всего файла достаточно указать <TargetFramework>netcoreapp3.1</TargetFramework>.
  31. Клиентские расширения в файлах проектов .csproj должны таргетироваться на платформу netcoreapp3.1 вместо net472. Обновите файл проекта Tessa.Extensions.Client.csproj, используемого для разработки клиентских расширений в рамках проекта, из аналогичного файла в сборке в папке Source\Extensions\Tessa.Extensions.Client. При обновлении вручную укажите атрибут корневого элемента Sdk=”Microsoft.NET.Sdk.WindowsDesktop”, задайте дополнительное предупреждение <NoWarn>…;NU1701</NoWarn>, добавьте элемент <UseWpf>true</UseWpf> и укажите <LangVersion>latest</LangVersion>; дополнительно потребуется удалить референсы на стандартные библиотеки .NET Framework (такие как PresentationFramework, их не требуется явно подключать для новой платформы); также удалите все элементы, связанные с файлами .xaml и .xaml.cs.
  32. Если вы используете модули расширений (такие как Tessa.Module.Sample.***), то обновите файл .csproj для всех сборок (Tessa.Module.Sample.Server/Client/Shared), указав <TargetFramework>netcoreapp3.1</TargetFramework> вместо netcoreapp3.0, net472 или netstandard2.0. Для клиентских проектов .Client.csproj требуется выполнить действия, аналогичные обновлению Tessa.Extensions.Client.csproj, или явно скопировать файл проекта из папки со сборкой.
  33. Обновите файл Tessa.Extensions.Chronos.csproj в проектных расширениях (папка Source\Extensions\Tessa.Extensions.Chronos в сборке). В файле исправлен скрипт PostBuildEvent для копирования библиотек расширений в папку Bin\extensions.
  34. Пакет установки .msi для приложения Tessa Applications теперь явно разделяется на две версии x86 (для 32-битных ОС) и x64 (для 64-битных ОС), которые указаны подпапками в папке Setup\en-US для англоязычной версии и Setup\ru-RU для русскоязычной версии. Рекомендуется устанавливать версию в соответствии с разрядностью ОС на рабочей станции пользователя, но версию x86 также возможно использовать для 64-битных ОС. При установке 64-битной версии папка по умолчанию теперь будет “C:\Program Files”, а не “C:\Program Files (x86)”. Обратитесь к разделу “Инсталлятор Tessa Applications” в руководстве по установке за подробным описанием инсталлятора.
  35. Приложение Tessa Applications теперь по умолчанию скачивает приложения в папку %LocalAppData%\tessa вместо папки %AppData%\tessa. Текущий установленный в application_catalogs.xml путь продолжит использоваться, с этой сборки переопределяется только путь по умолчанию для новой установки или для переустановки через инсталлятор TessaApplications.msi. Если вам также требуется изменить путь для текущих пользователей, то переустановите TessaApplications.msi с актуальным списком серверов через доменные политики, или же измените в файле %AppData%\tessa\settings\application_catalogs.xml путь t:AppPath=”%LocalAppData%\tessa” для каждого пользователя. Эта настройка не влияет на обновление самого Tessa Applications, с которой связана настройка в TessaAppLauncher.exe.config, описанная в следующем пункте.
  36. Приложение Tessa Applications скачивается и обновляется по пути, указанному в конфигурационном файле TessaAppLauncher.exe.config в настройке “LocalAppPath”, по умолчанию это папка %LocalAppData%\tessa (подпапка appmanager, appmanager_update и др.). Путь также можно переопределить в переменной окружения %Tessa.LocalAppPath%. Эта настройка работоспособна только для новой версии Tessa Applications, установленной через msi-пакет, причём TessaAppManager также должен быть обновлён до версии 3.5.0, иначе используется папка %AppData%\tessa без возможности настройки.
  37. Приложение Tessa Applications при установке по умолчанию теперь прописывает себя в автозапуск системы для всех пользователей (ярлык в папке автозапуска, обычно это путь C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup), причём при запуске системы приложение отображается свёрнутым в трее. Отключить эту функцию можно в интерфейсе инсталлятора, а также через командную строку при установке. Обратитесь к разделу “Инсталлятор Tessa Applications” в руководстве по установке за подробным описанием инсталлятора.
  38. Если вы устанавливаете Tessa Applications из файла .msi через командную строку, то ознакомьтесь с обновлённой инструкцией в разделе “Инсталлятор Tessa Applications” в руководстве по установке.
  39. По умолчанию динамические роли и генераторы метаролей, у которых указано выражение Cron в качестве расписания, автоматически пересчитываются при запуске или перезапуске сервиса Chronos. Для того, чтобы этого не происходило, отключите флажок “Запланировать пересчёт при запуске сервиса Chronos” в карточке динамической роли или генератора метаролей.
  40. У генератора метаролей “Агрегатные роли” период пересчёта по умолчанию установлен в 1 час. Ранее период был указан равный 5 минут.
  41. Все таблицы в схеме данных и представления для настроек диалогов (KrDialogButtonTypes, KrDialogCardAutoOpenModes, KrDialogCardStoreModes) перенесены из типового решения в платформу и лишены префикса Kr.
  42. Переименована настройка CardTracingMode на ExtensionTracingMode, используемая для трассировки расширений. Настройка указывается в файлах app.json для TessaClient и веб-сервиса. Также используйте параметр командной строки TessaClient.exe /ExtensionTrace вместо /CardTrace. Инструкция по трассировке расширений доступна в руководстве разработчика.
  43. Удалены вспомогательные методы UIHelper.InvokeAsync. Используйте конструкцию await Task.Run(() => { }) для того, чтобы возникшее исключение было выброшено из потока задачи в поток после await, в противном случае исключение игнорируется и не будет залогировано или как-либо обработано. Для выполнения кода в потоке UI используйте конструкцию await DispatcherHelper.InvokeInUIAsync(() => { }). Вместо метода ShowErrorOnFaulted используйте конструкцию try { await … } catch (Exception ex) { await TessaDialog.ShowExceptionAsync(ex); }.
  44. В расширениях desktop-клиента для запуска файлов в приложении, ассоциированном по умолчанию с расширением файлов, вместо Process.Start(filePath) используйте конструкцию Process.Start(new ProcessStartInfo(filePath) { UseShellExecute = true }). Эта особенность связана с отличием платформы .NET Core от .NET Framework, которая использовалась в предыдущих сборках.
  45. В API синхронизации с AD / LDAP удален вспомогательный метод SyncRoleMembers. Новый состав роли теперь передается в объекте context.Card.
  46. В коде расширений некоторые синхронные API переделаны на аналогичные асинхронные, например, делегаты для генерации контекстных меню ContextMenuGenerators, открытие модальных диалогов IUIHost.ShowDialogAsync, закрытие кнопок методом IUIButton.CloseAsync и лямбда-выражение с действием кнопки, передаваемое в конструктор класса UIButton. Некоторые методы возвращают ValueTask вместо Task, если в них вы вернули Task.CompletedTask, то замените его на new ValueTask(). Следуйте инструкциям из предыдущих сборок, связанных с асинхронностью, если ваш код не компилируется при обновлении.
  47. Вызов метода dbScope.Create() или CreateNew() теперь можно сделать только в блоке await using, поскольку возвращаемое значение реализует IAsyncDisposable и больше не реализует IDisposable.
  48. Удалены синхронные методы выполнения запросов к базе данных посредством DbManager и IQueryExecutor, используйте асинхронные методы. Например, используйте метод ExecuteAsync<T> с конструкцией await вместо Execute<T>.
  49. В расширениях используйте интерфейс ISequentialGuidProvider вместо интерфейса IGuidCombProvider для создания последовательных уникальных идентификаторов, подходящих для вставки в таблицу в текущей базе данных. Объект по интерфейсу можно получить из контейнера Unity.
  50. В методах расширений рассмотрите использование методов FileHelper.Create, FileHelper.OpenRead, FileHelper.OpenWrite вместо аналогичных методов статического класса File. Перечисленные методы класса FileHelper с параметрами по умолчанию разрешают асинхронные чтение/запись и оптимизируют последовательное чтение для метода OpenRead.
  51. Подсистема сателитов была обновлена, добавлена общая таблица Satellites для всех сателлитов, а наборы старых расширений были заменены на SatelliteTypeDescriptor и ISatelliteHandler. Подробная инструкция по переносу старых сателлитов на новые есть в руководстве разработчика.
  52. Изменён способ хранения файлов, приложенных к карточке диалога с временем жизни “Задание”, теперь файлы хранятся в файловом сателлите. Метод Dialog.SetFileContainer(CardFile file, byte[] content) доступен только в диалоге с временем жизни “Запрос”. Вместо него следует использовать файловый контейнер, возвращаемый методом Dialog.GetFileContainerAsync(IValidationResultBuilder validationResult = default, CancellationToken cancellationToken = default).
  53. В подсистеме маршрутов многие синхронные методы заменены на асинхронные. Проверьте скрипты маршрутов. Если при обновлении вы столкнётесь с отсутствующим методом, то допишите к концу его имени Async. Многие свойства были заменены на асинхронные методы, например, свойство IKrScript.Cycle, было заменено на два метода IKrScript.GetCycleAsync() и IKrScript.SetCycleAsync(int newValue). В скриптах маршрутов используйте вместо конструкции .GetAwaiter().GetResult() оператор await, например, MethodAsync().GetAwaiter().GetResult() следует заменить на await MethodAsync(). Подробную информацию о контексте скриптов можно найти в разделе “Написание сценариев для объектов маршрута” руководства администратора.
  54. В клиентских расширениях desktop-клиента в метод IApplicationResourceRegistrator.Register передайте текущую сборку, в которой расположен класс регистратора: typeof(Registrator).Assembly. Пример в файле Source\Extensions\Tessa.Extensions.Client\Registrator.cs.
  55. Модуль лицензии “Визуализатор Workflow” переименован в “Визуализатор маршрутов”. Функциональность модуля не изменилась.
  56. В документацию Swagger теперь не включаются контроллеры веб-сервисов, которые используются desktop-клиентом и задействуют бинарную сериализацию.

Добавление и изменение функциональности

  1. Для desktop-приложений снижены требования к установленному на рабочей станции ПО, теперь требуется Windows 7 SP1 с установленным .NET Framework 4.0 или старше, для Windows 8.1 и Windows 10 требования к версии .NET Framework отсутствуют.
  2. Расширены поддерживаемые форматы ЭЦП и возможности в части проверки списка отзывов и взаимодействия с OCSP-сервером. Настройки доступны в карточке “Настройки цифровой подписи” и описаны в руководстве администратора. Функции поддерживаются и в desktop-клиенте, и в web-клиенте.
  3. Приложение Tessa Applications теперь по умолчанию скачивает приложения в папку %LocalAppData%\tessa вместо папки %AppData%\tessa, которая используется в перемещаемых профилях пользователей. Вы, как и ранее, можете переопределить путь к папке в конфигурационном файле %AppData%\tessa\settings\application_catalogs.xml: t:AppPath=”%LocalAppData%\tessa”. Внимание: текущий установленный в application_catalogs.xml путь продолжит использоваться, с этой сборки переопределяется только путь по умолчанию для новой установки или для переустановки через инсталлятор TessaApplications.msi.
  4. Приложение Tessa Applications скачивается и обновляется по пути, указанному в конфигурационном файле TessaAppLauncher.exe.config в настройке “LocalAppPath”, по умолчанию это папка %LocalAppData%\tessa (подпапка appmanager, appmanager_update и др.). Путь также можно переопределить в переменной окружения %Tessa.LocalAppPath%. Эта настройка работоспособна только для новой версии Tessa Applications, установленной через msi-пакет, причём TessaAppManager также должен быть обновлён до версии 3.5.0, иначе используется папка %AppData%\tessa без возможности настройки.
  5. В списке приложений Tessa Applications во всплывающую подсказку на иконке приложения добавлены указание версии приложения, версии платформы, архитектуры (32-битная или 64-битная) и версии API менеджера приложений.
  6. В списке приложений Tessa Applications улучшено отображение иконок приложений, в т.ч. добавлен антиалиасинг.
  7. В карточке сотрудника добавлена настройка “Архитектура приложений” для определения того, какие приложения (32-разрядные или 64-разрядные) будут скачиваться приложением Tessa Applications, когда опубликованы приложения обеих разрядностей. Значение “Автоматически” соответствует архитектуре, которая известна для Tessa Applications новой версии 3.5.0 (или старше), но для предыдущих его версий архитектура определяется как 32-разрядная. Значение “предпочитать 32-битные приложения” определяет, что используются 32-разрядные приложения независимо от фактической архитектуры ОС пользователя и версии Tessa Applications, а значение “предпочитать 64-битные приложения” - аналогично использует 64-разрядные приложения кроме того случая, когда Tessa Applications новой версии (3.5.0 или старше) явно сообщает серверу, что ОС пользователя является 32-разрядной. Обратитесь к разделу “Инсталлятор Tessa Applications” в руководстве по установке за подробным описанием инсталлятора.
  8. В истории действий в записи “Вход в систему” добавлены параметры “64-битное приложение” и “64-битная операционная система”, которые позволяют определить разрядность desktop-приложения и операционной системы пользователя соответственно на сервере приложений. Значение “неизвестно” означает, что приложение, выполнившее вход, не передало информацию по разрядности.
  9. При публикации desktop-приложений путём их запуска с командой /publish теперь возможно указать ключ /64bit, чтобы опубликованное приложение считалось 64-разрядным (т.е. незапускаемым на 32-разрядных ОС), независимо от фактической разрядности процесса, и возможно указать ключ /32bit, чтобы опубликованное приложение считалось 32-разрядным или запускаемым на 32-разрядных ОС (например, в случае AnyCPU).
  10. Приложения Publisher и TokenEditor были удалены. Используйте консольные команды tadmin PackageApp или GetKey/SetKey соответственно. Документация по командам доступна в руководстве администратора. Раздел по замене токена в руководстве по установке был обновлён.
  11. Скрипт обновления на новую версию сборки Upgrade.bat/upgrade.sh теперь не перезаписывает файловые источники и не требует ввода файловой папки перед обновлением.
  12. В файле app.json веб-сервиса добавлена настройка “Redis”, позволяющая указать адрес сервера Redis, который будет использоваться для синхронизации состояния серверных кэшей. Это позволяет изменять конфигурацию в кластере без необходимости перезапускать серверы вручную. Подробная информация по использованию доступна в разделе руководства по установке “Настройка Redis для сброса кэшей в кластере приложений”.
  13. В файле app.json веб-сервиса добавлена настройка “PathBase”, позволяющая указать базовый путь к веб-сервису в случае, если он запущен без использования IIS (т.е. Nginx, Apache) по пути, отличному от корневого.
  14. В файле app.json веб-сервиса добавлена найстройка “SetSAMLCookie”, позволяющая указать необходимость сохранения cookie для быстрой повторной аутентификации на authentication сервере.
  15. На странице /check веб-сервиса теперь выводится информация по текущей конфигурации, которая до этого выводилась в TessaAdmin в окне “Информация по конфигурации”.
  16. На странице /check веб-сервиса теперь выводятся ошибки при загрузке конфигурационных файлов app.json.
  17. Объекты конфигурации теперь используют переводы строк LF “\n” вместо CR LF “\r\n”. Преобразование файлов в папке конфигурации платформы уже выполнено. Для преобразования в папке с конфигурацией вашего проекта используйте команду tadmin ConvertConfiguration -mode:LF “Путь_до_папки_Configuration”.
  18. При экспорте представлений, поисковых запросов и рабочих мест формируемый файл теперь не зависит от даты и времени экспорта, от номера версии объекта и от пользователя, выполняющего экспорт. При экспорте рабочего места номер версии заменяется на “1” только после того, как рабочее место хотя бы раз было сохранено на новой версии платформы, только после этого при экспорте гарантируется, что номер версии более не будет изменяться. В TessaAdmin для рабочего места не отображается свойство “Номер текущей ревизии”.
  19. В web-клиенте для модуля обсуждений добавлены средства форматирования сообщений, включая изменение стиля шрифта (жирный, курсивный, подчёркнутый, зачёркнутый), создание списков, вставку ссылок и добавление файлов. Недоступны выбор размера шрифта, вставка блоков (моноширинные блоки, выбор цвета блоков), вставка изображений, вставка файлов из буфера обмена, ответы на сообщения, копирование ссылки на сообщение или текста сообщения.
  20. В web-клиенте добавлено приложение-помощник Tessa Deski, реализующее интеграцию web-клиента с операционными системами Windows (32 bit, 64 bit), Linux (64 bit) и macOS (64 bit). Скачать приложение можно, нажав кнопку в окне “О программе” или вызвав функцию, требующую Tessa Deski, например, “Открыть для редактирования”, в контекстном меню файла. В текущей версии доступны функции редактирования файлов и их открытие для чтения в приложении, которое ассоциировано с соответствующим типом файла, например, на Windows с установленным пакетом MS Office для файла с расширением docx будет открыто приложение Word. Наличие изменений в файле определяется таким же образом, как и в desktop-клиенте: по дате изменения файла. Также доступно открытие файла в папке, где пользователь самостоятельно может выбрать приложение. Все открываемые версии файлов сохраняются в локальный кэш в зашифрованном виде. При повторном обращении файл открывается из локального кэша без необходимости загрузки контента с сервера.
  21. В web-клиенте добавлен пункт контекстного меню “Отменить изменения в файле”, аналогичный desktop-клиенту.
  22. В рабочем месте “Администратор” в папке “Прочее” добавлен справочник “Приложения Web”, который содержит карточки приложений-ассистентов web-клиента для различных операционных систем. Создать такую карточку можно, используя команду tadmin PackageWebApp.
  23. В маршрутах в этап “Подписание” добавлен флаг “Не возвращать на доработку”.
  24. В маршрутах в этап “Диалог” добавлена возможность создания карточки, отображаемой в диалоге, по шаблону.
  25. В маршрутах в этап “Согласование” добавлена возможность отправки задания дополнительного согласования, которое может быть отправлено из другого задания дополнительного согласования, без ограничений по вложенности.
  26. Из карточки вторичного процесса удалена настройка “Сообщение после завершения”.
  27. В карточке вторичного процесса измененена логика проверки ролей при нажатии тайла или при обработке действия. В поле “Доступно ролям” (ранее поле “Контекстные роли”) можно указывать любые роли, которые должны быть вычислены при нажатии тайла.
  28. В конструктор бизнес-процессов добавлен новый вид действия “Диалог”. С помощью него можно генерировать для карточки пользователя “Диалоги”, открываемые автоматически или по нажатию на кнопку в задании диалога.
  29. В конструкторе бизнес-процессов в действия “Задание” и “Группа заданий” добавлена возможность добавлять открытие диалога при нажатии на кнопку завершения задания с заданным в настройках диалога вариантом завершения.
  30. В конструктор бизнес-процессов добавлена возможность экспорта и импорта отдельных версий процесса из редактора.
  31. В конструктор бизнес-процессов добавлена возможность импорта структуры процесса из BPMN.
  32. В конструктор бизнес-процессов добавлена возможность в качестве режима обработки сигнала указывать режим “После загрузки файлов”. Этот режим означает, что сигнал будет обработан не в рамках основного сохранения карточки, а как отдельная обработка сигнала уже после сохранения всех файлов карточки.
  33. В конструкторе бизнес-процессов добавлено обновление подписок по умолчанию в узлах для уже существующих процессов при сохранении шаблона процесса.
  34. В конструктор бизнес-процессов добавлены новые виды действий: “Выполнение задачи”, “Доработка”, “Задание регистрации”, “Настраиваемое задание”, “Подписание”, “Согласование”. Они позволяют быстро настраивать типовые бизнес-процессы и аналогичны, по смыслу, соответствующим этапам из подсистемы маршрутов.
  35. В тексте запроса представления для оператора #if для проверки значений логического типа доступно получение значения через свойство Value. Например: #if(BoolParam.Value == true) { }
  36. Модуль потокового ввода документов теперь поддерживается на сервере с ОС Linux. Настройка плагина Chronos для потокового ввода на Linux аналогична его настройке на Windows.
  37. Добавлен особый вид сателлитов - файловый сателлит (FileSatellite), который может быть использован для хранения файлов карточки, которые не видны в самой карточке.
  38. В правилах доступа в расширенные настройки прав доступа добавлена новая настройка доступа “Запретить редактирование строк”, которая позволяет запретить редактирование строк секции, при этом не запрещая добавление/удаление строк.
  39. В типе карточки “Сотрудник” добавлена возможность настраивать доступ к секциям с настройками заместителей сотрудников через правила доступа, при условии включения типа карточки “Сотрудник” в типовое решение.
  40. При отправке почты по SMTP теперь поддерживается режим Implicit SSL, когда при взаимодействии с почтовым сервером сразу устанавливается защищённое соединение по протоколу TLS. Это уменьшает проблемы установки соединения с различными почтовыми серверами по SMTP.
  41. При получении почты для мобильного согласования теперь поддерживается протокол IMAP в дополнение к протоколу POP3. Протокол указывается в настройке “MobileApproval.Mode” в файле app.json сервиса Chronos.
  42. Добавлен скрипт Fixes\ValidateConstraints.pg.sql для проверки внешних ключей в PostgreSql.
  43. В приложении TessaClient для плитки в правой боковой панели “Создать документ” ограничена длина до 25 символов для названия типа документа, который создаётся повторно. Полное название можно увидеть во всплывающей подсказке.
  44. В обсуждениях при отправке сообщений добавлены функции вставки блоков (цитат) и ответов на сообщения.
  45. Добавлен элемент управления “Текст с форматированием”, позволяющий вводить и выводить текст с произвольным форматированием, аналогично сообщениям в обсуждениях. В текущей версии web-клиента элемент управления доступен только для чтения.
  46. Элемент управления “Представление” теперь может использоваться для управления файлами в карточке в форме таблицы, при этом поддерживаются все функции элемента управления “Список файлов”. Для такой настройки добавьте расширение типа карточки “Список файлов в представлении”, в котором укажите алиас элемента управления “Представление” и другие настройки. Подробности в части настроек приведены в руководстве администратора. Пример использования расширения доступен в карточке “Автомобиль”. В текущей версии элемент управления отсутствует в web-клиенте, поэтому настройки расширения также игнорируются.
  47. Элемент управления “Представление” теперь может использоваться для вывода истории заданий вместо или в дополнение к стандартной вкладке “История заданий”. Для такой настройки добавьте расширение типа карточки “Представление истории заданий”, в котором укажите алиас элемента управления “Представление” и другие настройки. Подробности в части настроек приведены в руководстве администратора. Пример использования расширения доступен в карточке “Автомобиль”. В текущей версии элемент управления отсутствует в web-клиенте, поэтому настройки расширения также игнорируются.
  48. Добавлено расширение типа “Скрыть вкладку”, в котором можно указать алиас скрываемой вкладки карточки или указать строку “.TaskHistoryViewModel” (без кавычек) для скрытия стандартной вкладки в истории заданий. Расширение выполняется и в desktop-, и в web-клиенте.
  49. В элементе управления “Список файлов” во всплывающей подсказке на файле более не отображается тип файла, поскольку он не используется в проектах. По-прежнему отображается категория файла, которая задействована для разделения файлов по некоторым группам.
  50. Для менеджера приложений Tessa Applications на вкладке “Серверы” добавлен флажок “Отключить обновления Tessa Applications”. Это предотвращает автоматическое обновление менеджера с основного сервера (отмеченного звездой в списке серверов), но не затрагивает обновления приложений на любых серверах. Флажок также можно установить при установке TessaApplications.msi в интерфейсе инсталлятора или параметрами командной строки. Обратитесь к разделу “Инсталлятор Tessa Applications” в руководстве по установке за подробным описанием инсталлятора.
  51. При установке менеджера приложений TessaApplications.msi добавлен флажок “Сохранить существующие параметры подключения”. Если флажок отмечен, то все текущие настройки пользователя, в т.ч. список его серверов application_catalogs.xml, сохраняются как есть, и будут использованы новым менеджером приложений. Установить настройку можно в интерфейсе инсталлятора или параметрами командной строки (или трансформацией .mst).
  52. При установке менеджера приложений TessaApplications.msi пользователь теперь может выбрать, запускать ли приложение сразу при запуске Windows (в этом случае оно будет запущено свёрнутым в трее), а также добавлять ли ярлыки на рабочий стол и в меню “Пуск”.
  53. Для приложений в пакете Tessa Applications (TessaAppManager и TessaAppLauncher) добавлен параметр командной строки /autostart, позволяющий запустить приложение в специальном режиме, который рекомендуется для настройки автозапуска в Windows. При этом не отображается окно загрузки и приложение запускается, сразу свёрнутым в трей. При установке Tessa Applications добавление ярлыка с параметром /autostart в папку автозагрузки выполняется по умолчанию. Обратитесь к разделу “Инсталлятор Tessa Applications” в руководстве по установке за подробным описанием инсталлятора.
  54. В карточке “Приложение” удалено поле ExtensionVersion, которое использовалось для обратной совместимости. С текущей версии обратная совместимость реализована на уровне представлений, которые возвращают константную строку с версией.
  55. В TessaClient при прокрутке колесом мыши в карточках на элементах управления “Представление” и “Таблица” сначала выполняется прокрутка строк таблицы, после чего выполняется прокрутка содержимого области с карточкой.
  56. Для элемента управления “Представление” добавлены настройки: “Автоматически выделять первую строку”, “Разрешить прокрутку”. Описание настроек доступно в руководстве администратора.
  57. Текущие задействованные настройки безопасности, задаваемые в карточке “Настройки сервера” на вкладке “Безопасность”, теперь выводятся в лог веб-сервиса на уровне логирования INFO.
  58. В представлении “Сотрудники” в дополнение к параметру фильтрации “Входит в роль” добавлен параметр “Не входит в роль”, который можно использовать одновременно с первым параметром.
  59. Большинство диалоговых окон в TessaClient теперь закрывается по нажатию клавиши Esc, если текущий элемент управления не перехватывает это нажатие.
  60. Длина имени файла вместе с расширением, который записывается во временную папку при загрузке и редактировании файлов в TessaClient, теперь имеет ограничение в 100 символов. При этом длина имени файла, указываемая пользователем, не ограничивается. Для изменения ограничений требуется написать клиентское расширение для изменения свойства ISettings.MaxFileContentNameLength, подробнее в пункте по API ниже.
  61. В документацию Swagger теперь не включаются контроллеры веб-сервисов, которые используются desktop-клиентом и задействуют бинарную сериализацию.
  62. Улучшена иконка Tessa Applications в трее (рядом с часами).
  63. Из карточки сотрудника удалены колонка GenderID и перечисление Genders. В платформе и типовом решении эти поля не использовались, на внешний вид карточки их удаление не повлияло. Вы можете изменить карточку сотрудника и схемы данных, добавив удалённые таблицу и поля, если они были задействованы в вашем решении.
  64. В карточки динамических ролей и генераторов метаролей добавлен флажок “Запланировать пересчёт при запуске сервиса Chronos”. Если пересчёт запланирован по выражению Cron, то при запуске или перезапуске сервиса Chronos пересчёт выполняется только в том случае, если включена эта опция. Если пересчёт выполняется по указанному периоду, то при запуске сервиса пересчёт выполняется, независимо от этой опции.
  65. У генератора метаролей “Агрегатные роли” период пересчёта по умолчанию установлен в 1 час. Ранее период был указан равный 5 минут.
  66. В правила доступа добавлено поле Приоритет, которое позволяет определить приоритетность расширенных настроек правил доступа.
  67. Если в правиле доступа установлен флаг “Всегда проверять правило доступа”, то все расширенные настройки доступа к карточке этого правила всегда будут применяться, даже если доступ на редактирование не запрашивался.
  68. В схеме данных для индекса Postgres теперь добавлена возможность писать кастомные выражения для построения индекса. В выражениях можно использовать плейсхолдеры форматирования {⁠#}, где # - номер колонки индекса, имя которой будет подставлено в выражение.
  69. В карточке “Динамическая роль” добавлена кнопка “Пересчитать роль сейчас”, и в карточке “Генератор метаролей” добавлена кнопка “Пересчитать генератор метаролей сейчас”, которые выполняют расчёт для указанной карточки сразу по нажатию на кнопку.
  70. В шаблоны файлов обрабатываемых платформой типов (.txt, .html, .xlsx, .docx) добавлена поддержка вложенных подгрупп внутри других групп для возможности организации многоуровневой группировки. Теперь группу таблицы (например, <_group> в текстовом документе) можно вложить в другую группу таблицы.
  71. В шаблоны файлов обрабатываемых платформой типов (.txt, .html, .xlsx, .docx) добавлена поддержка вложенных таблиц. Теперь таблицу (например, <_table> в текстовом документе) можно вложить внутрь строки (<_row> в текстовом документе) или группы (<_group> в текстовом документе).
  72. В подсистему плейсхолдеров добавлена возможность создавать плейсхолдер-объявление с указанием алиаса. С помощью конструкции {⁠#alias placeholder} в тексте можно объявить указанный плейсхолдер с заданным ему алиасом (сам плейсхолдер-объявление при этом будет удален из текста при обработке плейсхолдеров), а другие плейсхолдеры могут использовать в качестве настроек плейсхолдера указанный алиас.
  73. В подсистему плейсхолдеров в плейсхолдерах представлений (fv, tv) улучшена возможность настройки параметров представлений. Теперь можно настраивать несколько параметров, а в качестве передаваемого значения можно задавать константу (конструкция with param <ParamName> value <const>) или значение из других плейсхолдеров, объявленных через плейсхолдер-объявление (конструкция with param <ParamName> from <alias>).
  74. В подсистему плейсхолдеров в плейсхолдеры представлений добавлена возможность указывать составной источник данных плейсхолдера аналогично плейсхолдерам f и t (пример - t:Section1.Field1->Section2.Field2).
  75. В шаблоны файлов Excel добавлена поддержка формул. Теперь формулы корректно обновляются при обновлении таблицы, клонируются при их использовании внутри таблиц и расширяются при использовании в формуле в качестве значений столбца таблицы.
  76. Скрипты установки Setup.bat/setup.sh и обновления Upgrade.bat/upgrade.sh теперь выполняют пересчёт динамических ролей, генераторов метаролей и замещений (замещения не пересчитываются при установке, поскольку в системе ещё нет заместителей).
  77. Скрипты установки Setup.bat/setup.sh и обновления Upgrade.bat/upgrade.sh теперь обновляют SignatureKey и CipherKey в app.json веб-сервиса web и сервиса Chronos.
  78. В TessaAdmin настройка “Формат поля” удалена для элементов управления, в которых она не использовалась. Настройка сохранена для элементов управления “Строка” (используется в режиме “только для чтения”) и “Текст”.
  79. При выполнении действий с заданиями (кнопки взятия в работу, вариантов завершения и др.) файлы карточки теперь сохраняются отдельным запросом к серверу, вслед за которым выполняется собственно действие с заданием. Это позволяет с одной стороны, гарантировать, что действие с заданием не будет выполнено, если не удалось успешно сохранить файлы. С другой стороны, бизнес-процессы на сервере могут рассчитывать на то, что содержимое приложенных файлов уже загружено, а не будет загружено в фоне после завершения запроса на сохранение.
  80. В TessaAdmin для типов заданий добавлен флаг “Разрешить сохранение с файлами”, который указывает системе, что действия с заданиями этого типа можно выполнять совместно с сохранением карточки вместе с содержимым файлов, т.е. поведение системы для заданий этого типа будет таким же, как и в предыдущих версиях платформы. Устанавливайте этот флаг только в том случае, если этого явно требуют расширения в вашем проекте.
  81. В таблице Outbox информация по отправляемому письму, включая прикладываемые файлы и список дополнительных получателей, теперь сериализуется в колонке Info в текстовой форме в формате json. Информация по существующим письмам в очереди на отправку перемещена в бинарную колонку InfoLegacy.
  82. В сообщениях об ошибках улучшен вывод стек-трейсов для некоторых случаев, таких как вывод местоположения строки кода, который выполнил SQL-запрос, завершённый с ошибкой.
  83. При нажатии кнопок (плиток) маршрутов и бизнес-процессов при наличии изменений в карточке эти изменения сначала сохраняются отдельным запросом к серверу (включая изменения, связанные с файлами), и затем выполняется отдельный запрос, обозначающий нажатие кнопки. Это гарантирует, что при наличии ошибок в процессе сохранения действие с процессом выполнено не будет.
  84. Кнопка “Копировать” в окне информации по конфигурации по TessaAdmin теперь копирует в буфер также информацию по используемой СУБД и флагам.
  85. Для типов файлов в TessaAdmin оставлен доступным только узел “Секции”, поскольку остальные узлы (формы, расширения, валидаторы) не используются.
  86. Почтовое уведомление для смены ключей подписи и шифрования было локализовано. В прошлых версиях это уведомление называлось уведомлением о смене токена.
  87. Добавлена поддержка аутентификации OAuth для отправки и получения почты посредством Exchange Web Services. Для этого в файле app.json сервиса Chronos в настройках “NoticeMailer.ExchangeOAuthToken” (для отправки почты) и “MobileApproval.ExchangeOAuthToken” (для получения почты) укажите непустой ключ API, генерируемый на стороне Exchange, посредством которого Chronos будет взаимодействовать с сервисом. Обратитесь к документации Exchange для создания такого ключа.
  88. В карточках типового решения, для которых включен типовой процесс маршрутов, добавлена возможность группировки файлов по циклам согласования с отображением версий файлов и копий, созданных на каждом цикле. А также с возможностью отображать файлы только текущего и последнего цикла, только последнего цикла или же всех файлов. Настройки автоматического включений группировки для карточек вынесены в карточку настроек типового решения.
  89. В строках подключения для MSSQL Server удалена настройка MultipleActiveResultSets=true, которая не требуется для функционирования системы и её расширений.
  90. Группировку файлов по типам теперь нельзя выбрать в TessaAdmin для контрола “Список файлов”. Также удалён класс группировки FileTypeGrouping.
  91. В поле Hash таблицы FileVersions теперь записывается хеш-сумма SHA256 (с учётом FIPS-совместимых алгоритмов на Windows), ранее использовался алгоритм HMACSHA256 с некоторым постоянным ключом. Для проверки хеш-сумм у файлов, для которых они были рассчитаны в предыдущих версиях системы, используйте объект HashSignatureProvider.FilesLegacy. В платформе хеш-суммы рассчитываются для файлов карточек “Приложение” и “Приложение Web”, а также такая возможность есть в API расширений.
  92. В TessaAdmin в процессе сохранения типов карточек, файлов и заданий отображается сплэш-окно “Сохранение типов”.
  93. Утилита tadmin: добавлена команда InvalidateCache для сброса всех кэшей или списка указанных кэшей со стороны веб-сервиса, к которому подключается команда, а также со стороны всех веб-сервисов и сервисов Chronos, связанных с этим сервисом (при указании строки подключения к Redis).
  94. Утилита tadmin: добавлена команда ManageRoles для управления ролями в части пересчёта замещений, динамических ролей и метаролей.
  95. Утилита tadmin: команда CheckDatabase без указанного параметра -timeout теперь проверяет подключение с тем таймаутом, который указан в строке подключения, или с параметром по умолчанию для СУБД, если он не указан. В предыдущих сборках платформы указывалось значение 0, что соответствует бесконечному таймауту.
  96. Утилита tadmin: для команды ConvertConfiguration добавлен опциональный ключ /mode, указывающий режим конвертации для конфигурации: Upgrade - режим по умолчанию; Downgrade - преобразование из нового формата в старый (.jtype->.tct, .jcard->.card); LF - преобразование переводов строк в \n (с такими переводами выполняется выгрузка в текущей версии платформы Windows или в любой версии на Linux); CRLF - преобразование переводов строк в \r\n (так выгружалась конфигурация на Windows в предыдущих версиях платформы).
  97. Утилита tadmin: для команды PackageApp добавлен опциональный ключ /v для указания версии сборки платформы. В случае, если утилита не может прочитать версию приложения из файла .exe, то по умолчанию будет использована текущая версия платформы, или ключ /v может явно задать версию.
  98. Утилита tadmin: для команды PackageApp добавлен опциональный ключ /64bit для указания того, что приложение является 64-битным и не может быть запущено на 32-битных ОС. Если приложение является 32-битным или AnyCPU (разрядность зависит от ОС), то не указывайте этот ключ. Разрешается, чтобы два приложения имели один и тот же алиас, но разную разрядность, т.е. одно приложение опубликовано с ключом /64bit, другое - без него.
  99. Утилита tadmin: для команды PackageApp добавлен опциональный ключ /api2 для указания того, что приложение может использовать новый API v2 для взаимодействия с менеджером приложений. Рекомендуется для desktop-приложений TESSA, начиная со сборки 3.5.0.
  100. Утилита tadmin: добавлена команда PackageWebApp для создания файла с карточкой приложения Web, которая импортируется для публикации приложения.
  101. Утилита tadmin: команды GetToken/SetToken переименованы в GetKey/SetKey соответственно, для генерации ключей для подписи укажите параметр “Signature” (без кавычек), например: tadmin GetKey Signature|tadmin SetKey Signature “/path:C:\inetpub\wwwroot\tessa”. Также параметр “Cipher” позволяет сгенерировать и заменить ключ шифрования.
  102. Утилита tadmin: команда SetKey (переименована из SetToken) вернёт ненулевой результат (“errorlevel” для Windows, “$?” для Linux), если ключ не заменён ни в одном файле, т.е. либо он не найден, либо возникли ошибки при замене.
  103. API: Все проекты расширений (Client/Server/Shared) теперь собираются для платформы .NET Core 3.1, это расширило доступную функциональность языка C# и возможности библиотеки базовых классов .NET Core.
  104. API: При синхронизации статических ролей в модуле синхронизации с AD / LDAP получаем состав роли только, если роль была изменена.
  105. API: В контекст синхронизации с AD / LDAP добавлены объекты для работы с синхронизацией пользователей/поиском. Получение руководителя подразделения вынесено в расширение типового решения.
  106. API: В синхронизации с AD / LDAP добавлен флаг CardHelper.AdSyncForceCardRepoKey для принудительного сохранения карточки через cardRepository с расширениями. Флаг необходимо добавлять в Card.Info.
  107. API: Добавлен метод-расширение ICardRepository.InvalidateCacheAsync, выполняющий запрос на сброс всех кэшей или списка указанных кэшей со стороны веб-сервиса, а также со стороны всех веб-сервисов и сервисов Chronos, связанных с этим сервисом (при указании строки подключения к Redis). Запрос может быть вызван как с клиента, так и с сервера, при этом пользователь в текущей сессии должен быть администратором. Этот запрос также выполняет консольная команда tadmin InvalidateCache.
  108. API: В методы IUIHost.ShowFormDialogAsync и ShowDialogAsync добавлен параметр closeOnEscapeKey (по умолчанию false). Если указано true, то окно можно будет закрыть по нажатию Esc, если это нажатие не перехватит текущий элемент управления.
  109. API: В контексте скриптов плейсхолдеров IPlaceholderScriptContext тип свойства context.Table теперь указан как IEditablePlaceholderTable вместо IPlaceholderTable. Это позволяет редактировать список вставляемых строк в расширениях шаблонов файлов “Перед формированием таблицы”.
  110. API: В контексте расширения ICardStoreExtension добавлена возможность подписываться на событие OnContentStoring, которое возникает перед сохранением контента файла на сервере. На клиенте данное событие не вызывается.
  111. API: В API потокового сканирования добавлена возможность переопределить фильтрацию файлов, обрабатываемых модулем. Расширение должно быть зарегистрировано в Unity по интерфейсу IDocLoadExtension в методе регистратора RegisterUnity.
  112. API: В маршрутах в этап “Создание карточки”, для всех режимов работы, добавлена возможность изменения создаваемой карточки в сценарии постобработки перед выполнением действия с карточкой: открытием, сохранением, запуском процесса.
  113. API: В IWorkflowEngineCardsScope добавлен метод AddCard(Card), который позволяет добавить карточку (в том числе и новую) в область видимости (scope) карточек для обработки процесса в Workflow Engine. Добавленные карточки будут автоматически сохранены при завершении обработки.
  114. API: В IDocumentTabManager добавлен метод CloseCardAsync, который позволяет закрыть карточку.
  115. API: В ConversionHelper метода TryConvert добавлен опциональный параметр culture, позволяющий указать культуру, отличную от инвариативной.
  116. API: В объект CardTaskDialogButtonInfo, который содержит информацию о кнопке диалога, добавлено свойство CompleteDialog, которое определяет, завершает ли нажатие данной кнопки текущий диалог.
  117. API: Изменён способ задания горячих клавиш для кнопок верхнего и нижнего тулбара расположенных в модальном диалоге. Для привязки горячих клавиш к кнопке их необходимо указать в параметре gestures соответствующего конструктора класса наследника Tessa.UI.Cards.CardToolbarItem.
  118. API: Некоторые синхронные API переделаны на аналогичные асинхронные, например, делегаты для генерации контекстных меню ContextMenuGenerators, закрытие кнопок методом IUIButton.CloseAsync и лямбда-выражение с действием кнопки, передаваемое в конструктор класса UIButton.
  119. API: Во все скрипты подсистемы маршрутов добавлена возможность написания асинхронного кода.
  120. API: В конструктор бизнес-процессов в скрипты условий в настройках связи добавлена возможность использовать директиву #script для переключения режима написания условия в режим скрипта.
  121. API: В WorkflowManager добавлен метод GetWorkflowCardIDAsync асинхронно возвращающий идентификатор карточки, в которой содержатся секции бизнес-процесса. По умолчанию возвращает значение свойства WorkflowManager.WorkflowCardID. При одновременном переопределении WorkflowManager.GetWorkflowCardIDAsync и WorkflowManager.WorkflowCardID используется значение возвращаемое методом WorkflowManager.GetWorkflowCardIDAsync.
  122. API: В Tessa.Workflow.IWorkflowEngineContext добавлено свойство CardStorePriorityComparer позволяющее получить или задать компаратор определяющий порядок сохранения загруженных карточек. Может иметь значение по умолчанию для типа, в этом случае упорядочивание карточек при сохранении не выполняется.
  123. API: При запуске расширений на веб-сервисе Kestrel в контейнере Unity доступен интерфейс System.IServiceProvider, который предоставляет доступ к зависимостям, зарегистрированным в DI-контейнере ASP.NET Core, таким как сервис IHostApplicationLifetime, который позволяет отслеживать завершение приложения веб-сервиса. Если ваше расширение может быть запущено не только для веб-сервиса, то указывайте [OptionalDependency] для этого интерфейса. Пример доступен в руководстве разработчика.
  124. API: В токене сессии ISessionToken добавлены свойства Client64Bit и Client64BitOS для определения разрядности клиентского приложения и клиентской ОС. Если свойства равны null, то приложения не передали свою разрядность в момент входа, поэтому стоит ожидать, что они могут выполнять только 32-битный код или AnyCPU.
  125. API: В модель представления ICardModel были добавлены списки делегатов ControlInitializers, BlockInitializers, FormInitializers, которые вызываются после создания элемента управления и его асинхронной инициализации. В пределах этих делегатов действует контекст создания вкладки FormCreationContext.Current, который может задействоваться для инициализации элементов управления файлами, например: FormCreationContext.Current.Register(fileControl).
  126. API: В методы регистрации сервера приложений для плагинов RegisterServerForPluginAsync добавлен параметр enableInterprocessCommunication, позволяющий включить глобальные кэши в пределах работающего процесса плагина Chronos (в типовом решении таких плагинов нет). По умолчанию, по-прежнему, используется значение false, и кэши не сбрасываются в нескольких процессах сразу, это рекомендуемое поведение. При необходимости указать значение true (если вы написали плагин с долгоживущим контейнером Unity), передайте значение true в параметре, а также в файле app.json для Chronos установите строку подключения к Redis, по аналогии с веб-сервисом, в противном случае возможны проблемы со сбросом кэша между процессами плагинов и веб-сервисов.
  127. API: В API файлов для интерфейса IFileControl добавлен метод ClearSelection, который ранее был методом-расширением. Поведение метода может изменяться, в зависимости от реализации интерфейса.
  128. API: При отправке писем теперь можно указать новое свойство MailInfo.CardTypeName с указанием названия типа карточки.
  129. API: Трассировка расширений теперь используется для типов расширений IApplicationExtension, ICardMetadataExtension, ICardRepairExtension, ICardUIExtension, IClientInitializationExtension, IFileControlExtension, IFileExtension, IFileVersionExtension, ITileGlobalExtension, ITileLocalExtension, ITilePanelExtension, IServerInitializationExtension. Добавлена возможность подключить трассировку для любых расширений, контекст которых реализует интерфейс ITraceableExtensionContext. Переименована настройка CardTracingMode на ExtensionTracingMode, используемая для трассировки расширений. Настройка указывается в файлах app.json для TessaClient и веб-сервиса. Также используйте параметр командной строки TessaClient.exe /ExtensionTrace вместо /CardTrace. Инструкция по трассировке расширений доступна в руководстве разработчика.
  130. API: Добавлен абстрактный класс FilesViewGeneratorBaseUIExtension, позволяющий для указанных в коде элементов управления “Представление” определить настройки для работы в режиме “Список файлов”. Пример использования расширения доступен в руководстве разработчика.
  131. API: Добавлена коллекция IViewPlaceholderContext.SharedParameters, содержащая параметры фильтрации, добавляемые во все представления при замене плейсхолдеров, в которых есть параметры с соответствующим алиасом. Коллекция используется в т.ч. при генерации файла по шаблону из представлений.
  132. API: Добавлена настройка ISettings.MaxFileContentNameLength, определяющая максимальную длину имени файла вместе с расширением, который записывается в кэше файлов (во временной папке) при загрузке и редактировании файлов в TessaClient. По умолчанию длина ограничивается 100 символами. Изменить настройку можно в клиентском расширении ISettingsExtension, пример такого расширения приведён в руководстве разработчика.
  133. API: Удалены флаги и методы, связанные с изменением типа файла (CardFileFlags.UpdateType, IFileManager.ChangeTypeAsync и др.), поскольку тип файла не используется, и такое изменение выполнялось некорректно.
  134. API: Добавлен объект IRoleManagerService, доступный на клиенте и на сервере, и позволяющий выполнять операции с ролями, которые ранее располагались в плагинах Chronos, такие как пересчёт замещений, динамических ролей и генераторов метаролей.
  135. API: На клиенте для сохранения карточки добавлено свойство CardModifierIsSeparateFromFilesContents в объект ICardSavingRequest, которое определяет, что дополнительное действие по изменению карточки CardModifierActionAsync будет выполнено отдельным сохранением карточки, если в карточке присутствуют файлы с изменённым содержимым (файлы были добавлены или отредактированы). Объект ICardSavingRequest указывается при сохранении карточки средствами объектов ICardEditorModel и ICardModel. Свойство может использоваться для выполнения действий с заданиями (взятие в работу, завершение и др.) таким образом, чтобы к моменту выполнения обработки на сервере содержимое всех файлов, отправленных пользователем, было доступно. Если клиентские расширения ICardUIExtension.Saving выполнят добавление или изменение содержимого файла, то они будут сохранены в том же запросе в обход настройки CardModifierIsSeparateFromFilesContents.
  136. API: Используйте статическое свойство BeautifiedStackTrace.Current для вывода стек-трейса вместо Environment.StackTrace, если не требуется выводить в стеке автоматически сгенерированный код, связанный с асинхронностью, итераторами и др.
  137. API: В элемент управления, представляющий таблицу для отображения и редактирования коллекционной секции, добавлена возможность указания функции дополнительного форматирования отображаемого значения в ячейках таблицы (GridViewModel.CellFormatFunc). Функция применяется после выполнения стандартного форматирования отображаемого значения ячейки таблицы.
  138. API: В web-клиенте добавлено свойство style для стилизации строк tableRowViewModel и ячеек tableCellViewModel в элементе управления “Таблица”, что позволяет в т.ч. устанавливать различный цвет фона в расширениях.
  139. API: В ICardTaskHistoryManager.ResolveGroupAsync добавлена поддержка работы с вложенными итерационными группами в истории заданий. Для этого необходимо указать идентификатор родительская группы, в этом случает будет выбрана родительская группа заданного типа с наибольшей итерацией.
  140. API: Добавлена перегрузка метода IFileContainer.AddVirtualAsync, позволяющая указать источник файлов IFileSource, отличный от источника по умолчанию, указанного в IFileContainer. Т.о. можно добавить файл в один объект карточки, а отобразить его в другом объекте, или отобразить в карточке файл, который связан с источником файлов, не привязанном к карточке.
  141. API: Добавлен метод расширений IFileControlExtension.Initialized, в пределах которого доступна модель карточки context.TryGetCardModel() со всеми инициализированными объектами UI. Расширение выполняется перед цепочкой расширений ICardUIExtension.Initialized, выполнение происходит для каждого элемента управления IFileControl. Не используйте метод context.TryGetCardModel() в других методах расширений, кроме IFileControlExtension.Initialized.
  142. API: В web-клиенте при загрузке файлов на предпросмотр теперь выполняются те же серверные расширения ICardGetFileContentExtension, что и при загрузке других файлов, а предпросмотр выполняется серверными расширениями, по аналогии с тем, как в desktop-клиенте выполняется конвертация файлов в PDF.
  143. API: Добавлен флаг CardFileFlags.CalculateHash в свойстве файла CardFile.Flags, которые можно установить при добавлении или изменении содержимого файла для того, чтобы хеш-сумма в свойстве Hash была рассчитана по содержимому файла на сервере. Вычисленную хеш-сумму можно проверить в таблице FileVersions в колонке Hash и в свойстве CardFile.Hash, но после фактического сохранения файла, это событие context.ContentStoreCompleted в расширении ICardStoreExtension на сервере.
  144. API: Добавлены методы FileHelper.Create, FileHelper.OpenRead, FileHelper.OpenWrite, которые аналогичны соответствующим методам статического класса File, но с параметрами по умолчанию разрешают асинхронные чтение/запись и оптимизируют последовательное чтение для метода OpenRead.
  145. API: Добавлены методы IViewModelContainer.TryGet/Get, которые упрощают синтаксис для типизированного доступа к контролам, блокам и формам в CardUIExtension и других расширениях UI, например: var button = context.Model.Controls.Get<ButtonViewModel>(“ButtonAlias”).
  146. API: Обновлены библиотеки: .NET Core 3.1.4, AvalonEdit 6.0.1, BarcodeLib 2.2.5, BitMiracle.LibTiff.NET 2.4.639, CsvHelper 15.0.5, DocumentFormat.OpenXml 2.11.0, HtmlAgilityPack 1.11.24, ITFoxtec.Identity.Saml2 4.0.5, Kerberos.NET 4.0.12, Linq2DB 2.9.8, Microsoft.Exchange.WebServices.NETStandard v2.0.0-beta1 (встроена в Tessa.Server.dll), Newtonsoft.Json 12.0.3, NLog 4.7.2, Npgsql 4.1.3.1, QRCoder 1.3.9, Swashbuckle.AspNetCore 5.4.1, UAParser 3.1.44, Unity 5.11.8.

Исправления и оптимизации

  1. Все desktop-приложения (TessaClient, TessaAdmin, TessaAppManager, SchemeEditor) теперь построены на платформе .NET Core 3.1 (вместо .NET Framework 4.7.2), это оптимизировало время их запуска и скорость работы.
  2. В маршрутах исправлена компиляция скриптов шаблона этапов, если в нём указана несуществующая группа этапов.
  3. В маршрутах исправлена ошибка доступности для редактирования флага “Вернуть при несогласовании”, если запрещено редактирование этапов.
  4. В маршрутах исправлены сроки заданий доп. согласования, указанных при отправке из задания согласования. Ошибка появилась в сборке 3.3.0.
  5. В маршрутах исправлена ошибка отображения комментария к заданию этапа “Подписание”, указанного в настройках этапа.
  6. В маршрутах в настройках этапа уведомления исправлена строка локализации для сценария изменения уведомления.
  7. В маршрутах в этапе “Диалог” исправлена ошибка создания карточки такого типа, для которого используются типы документов.
  8. В маршрутах в этапе “Диалог” исправлена ошибка предзаполнения карточки диалога при запуске в синхронном режиме.
  9. В маршрутах в этапе “Диалог” с временем жизни “Карточка” исправлена ошибка сохранения карточки диалога при завершении задания, если в ней не было изменений.
  10. В маршрутах добавлена проверка наличия типа карточки в настройках диалога при инициализации карточки диалога в скрипте инициализации.
  11. В маршрутах в этапе “Диалог” при закрытии карточки диалога добавлен запрос подтверждения закрытия карточки, если в ней есть несохранённые изменения.
  12. В маршрутах в этапе “Диалог”, с временем жизни “Задание” и “Карточка”, исправлена обработка сохранения и валидации карточки при закрытии по кнопке закрытия окна диалога.
  13. В маршрутах в этапе “Диалог”, с временем жизни “Задание”, исправлена ошибка открытия существующей карточки, если для типа карточки используются типы документов.
  14. В маршрутах добавлено прерывание выполнения обработки этапа при наличии ошибки в ValidationResult контекста после выполнения BeforeInitialization.
  15. В маршрутах в этапе “Диалог”, с временем жизни “Запрос” или “Задание” работающем в асинхронном режиме, исправлена ошибка сохранения контента новой версии файла.
  16. В маршрутах в этапе “Диалог”, с временем жизни “Запрос” или “Задание” работающем в асинхронном режиме, исправлена ошибка сохранения незагруженного контента файла.
  17. В маршрутах в этапе “Диалог” исправлена ошибка поглощения на клиенте возможных сообщений валидации и исключений.
  18. В маршрутах исправлена ошибка сохранения изменений свойств файлов, осуществлённых через API файлов.
  19. В маршрутах в этапе “Диалог” исправлена ошибка преждевременного освобождения ресурсов файлового контейнера основной карточки.
  20. В маршрутах в этапе “Диалог”, с временем жизни “Карточка”, исправлена ошибка сохранения нового имени файла после его переименования.
  21. В маршрутах исправлено поведение при отображении кнопки “Добавить роль “Вычисляемые исполнители”“.
  22. В маршрутах исправлена ошибка при взятии в работу заданий этапов: “Согласование”, “Подписание”, “Регистрация” и “Настраиваемое задание”, если задания были отправлены этапами, входящими во вторичный процесс, которые запущен этапом “Ветвление”, расположенным во вторичном процессе. Ошибка появилась в сборке 3.4.0.
  23. В маршрутах в этапе “Диалог” исправлена ошибка доступности сочетаний клавиш у скрытых кнопок типов: кнопка тулбара, кнопка нижнего тулбара и нижняя диалоговая кнопка.
  24. В маршрутах в этапе “Диалог” исправлена ошибка закрытия рабочей области карточки.
  25. В маршрутах в этапе “Диалог” добавлена блокировка кнопок завершения этапа при выполнении операции, заблокировавшей изменение карточки.
  26. В маршрутах в этапе “Диалог” с временем жизни “Запрос”, работающем в синхронном режиме, исправлена работа с файлами.
  27. В маршрутах в этапе “Диалог” изменена доступность кнопки “Пересчитать”, расположенной на вкладке “Маршрут”. Кнопка недоступна, если карточка открыта в диалоге с временем жизни “Запрос” или “Задание”, а также для времени жизни “Карточка”, если отображаемая в диалоге карточка создаётся.
  28. В маршрутах в этапе “Диалог” с временем жизни “Запрос” для маршрута, работающего в синхронном режиме, исправлена ошибка, связанная с невысвобождением зарезервированных номеров, которые были выделены при создании карточки, если в скрипте инициализации выполнялся доступ к карточке диалога через метод IKrScript.GetNewCardAsync().
  29. В маршрутах в этапе “Диалог” исправлено создание соответствующих элементов истории заданий.
  30. В маршрутах исправлена генерация файлов по шаблону внутри открытой транзакции на сохранение карточки.
  31. В маршрутах исправлена ошибка, при которой выполнялась отправка на доработку, если на текущем цикле согласования все подтверждённые этапы были согласованы, но существует хотя бы один не подтверждённый, не согласованный на предыдущем цикле согласования. Ошибка появилась в сборке 3.4.0.
  32. В маршрутах в этапе “Согласование” исправлена ошибка изменения состояния процесса при выставленном флаге “Не возвращать на доработку” и снятом “Изменять состояние при завершении”. Ошибка появилась в сборке 3.4.0.
  33. В маршрутах в этапе “Согласование” исправлена ошибка изменения состояния процесса при выставленном флаге “Не возвращать на доработку”, если предыдущий этап согласования был не согласован. Ошибка появилась в сборке 3.4.0.
  34. В маршрутах во вторичных процессах исправлена ошибка, при которой не отображалось сообщение при недоступности для выполнения при запуске вторичного процесса из TessaClient.
  35. В маршрутах исправлена ошибка пересчёта группы этапов от имени текущего пользователя, а не инициатора.
  36. В маршрутах исправлена ошибка изменения порядка пропущенных этапов, в карточке созданной путём копирования или создания по шаблону. Ошибка появилась в сборке 3.4.0.
  37. В маршрутах исправлена ошибка при закрытии карточки вторичного процесса, если перед этим она была неудачно сохранена.
  38. В маршрутах в этап “Регистрация” добавлена отправка уведомления о задании регистрации.
  39. Исправлена ошибка задания текущего контекста в качестве родительского, при создании области видимости контекста операции с пользовательским интерфейсом, при выполнении проверки возможности выполнения команды и при определении возможности отображения плитки. Ошибка приводила к открытию новой карточки, созданной через выпадающее меню плитки “Создать карточку”, в диалоге, если перед этим был открыт синхронный диалог с временем жизни “Запрос”.
  40. В обсуждениях исправлена архивация обсуждений в случае, если участник является модератором, но не является супермодератором.
  41. В обсуждениях исправлено контекстное меню, если пользователь не является участником обсуждения, а видит обсуждение как супермодератор, он не видит элементы меню, доступные для участника.
  42. Представления “Мои обсуждения” и “Последние обсуждения” по умолчанию не показывают архивированные топики. Для отображения всех обсуждений, включая архивированные, используйте соответствующий параметр фильтрации.
  43. В обсуждениях исправлена ошибка при удалении участника, если он является сотрудником и был добавлен как роль.
  44. Исправлен скрипт миграции для сборки 3.4.0.
  45. Исправлено подключение из приложения Tessa Applications к серверу платформы 3.x, если на сервере есть ошибки или предупреждения в представлениях, т.е. в TessaAdmin присутствует представление в списке, рядом с которым отображается красный или жёлтый восклицательный знак.
  46. В конструкторе бизнес-процессов в скриптах условий для кнопок исправлена ошибка при использовании свойства Session.
  47. В конструкторе бизнес-процессов исправлена ошибка при обработке кнопок, которые воздействуют на запущенный процесс.
  48. В конструкторе бизнес-процессов исправлена ошибка открытия старых настроенных условий в таблице с условиями, если были добавлены новые типы условий со строковыми секциями.
  49. В конструкторе бизнес-процессов исправлена смена плановой даты завершения задания при получении действием “Задание” и “Группа заданий” сигнала изменения задания с указанием новой даты.
  50. В конструкторе бизнес-процессов исправлена редкая ошибка, при открытии уже существующего шаблона процесса редактор процесса открывался пустым.
  51. В конструкторе бизнес-процессов исправлена ошибка, из-за которой кнопки, которые отправляют сигналы в процесс, не отображались в легком клиенте.
  52. В конструкторе бизнес-процессов исправлена ошибка при привязке хеша к полю строковой секции карточки приводившей к игнорированию значения null, сохранённого в хеше, если для этого поля в схеме указано значение по умолчанию отличное от null.
  53. В конструкторе бизнес-процессов в действии “Создать карточку” теперь в поле “Шаблон карточки” отображается имя шаблона карточки, а не дайджест карточки, на основе которой создан шаблон.
  54. В конструкторе бизнес-процессов исправлена редкая ошибка, возникающая при добавлении стрелки.
  55. В конструкторе бизнес-процессов в действии “Условие” теперь в поле “Переход” расположенном на форме редактирования условия отображается, в дополнении к имени связи, её заголовок. Аналогично заголовок связи теперь отображается в колонке таблицы “Настройки условий”.
  56. В любых компилируемых скриптах исправлено использование класса Regex для применения регулярных выражений. Для этого по-прежнему требуется подключение пространства имён System.Text.RegularExpressions. В предыдущих сборках это требовалось только для веб-сервиса, развёрнутого на ОС Linux, со сборки 3.4.0 - также для сервиса на ОС Windows, причём решить проблему можно было, добавив в скрипт строку “#reference System.Text.RegularExpressions” (без кавычек).
  57. Исправлены ошибки при загрузке сертификатов для SAML-интеграции.
  58. В web-клиенте исправлен цвет фона контекстного меню для вкладок с рабочими местами и карточками.
  59. В web-клиенте исправлен цвет фона для элемента управления “Список файлов”.
  60. В web-клиенте исправлена проверка лицензии для модуля форумов и обсуждений, если лицензия является Enterprise.
  61. В web-клиенте исправлены ошибки при отображении тегов файлов в элементе управления “Список файлов”.
  62. В web-клиенте исправлена ошибка, из-за которой после закрытия диалога строки в элементе управления “Таблица” в карточке удалялись все события в объекте fileContainer, добавленные в расширениях.
  63. В web-клиенте исправлена ошибка, из-за которой не удавалось использовать базовые пути при использовании веб-сервиса Nginx или Apache. Добавлено дополнительное свойство PathBase в файл конфигурации.
  64. В web-клиенте исправлена ошибка в расширении карточки вторичного процесса, из-за которой не удавалось открыть карточку.
  65. В web-клиенте исправлена ошибка подсветки текста при поиске в элементах управления “Таблица” и на вкладке “История заданий”.
  66. В web-клиенте исправлена ошибка валидации настройки этапа “Диалог”.
  67. В web-клиенте в представлениях на панели пейджинга добавлены всплывающие подсказки на кнопках, аналогично desktop-клиенту.
  68. В web-клиенте добавлена всплывающая подсказка на кнопке “Создать карточку”, аналогично desktop-клиенту.
  69. В web-клиенте при открытии истории заданий в отдельной вкладке по ссылке из карточки - представление теперь открывается на всю доступную область, без отображаемого дерева.
  70. В web-клиенте для этапа “Создание карточки”, добавляемого в шаблон этапов, теперь скрывается вид задания, который отображался по ошибке.
  71. В web-клиенте в поле быстрого поиска представлений используется стандартное контекстное меню браузера, включая функции Копировать/Вырезать/Вставить.
  72. В web-клиенте оптимизирован размер передаваемого токена сессии. Это также исправило проблему с превышением ограничений на размер cookies при слишком длинной строке в кратком имени сотрудника.
  73. В web-клиенте исправлено отображение всплывающей подсказки для элементов управления “Флажок”.
  74. В web-клиенте исправлено отображение вкладок рабочих мест при открытии, если в настройках пользователя некоторые вкладки указаны дважды.
  75. В web-клиенте исправлено редактирование этапа “Диалог” в шаблоне этапа или вторичном процессе, если указан шаблон карточки, а не тип карточки или документа.
  76. В web-клиенте исправлен предпросмотр виртуальных файлов из справочника “Виртуальные файлы”, которые при предпросмотре должны конвертироваться в Pdf.
  77. В web-клиенте исправлено отображение длинных названий вкладок с пробелами в названии, таких как “История заданий”, если отображается прокрутка вкладок.
  78. В web-клиенте для обсуждений исправлено отображение описания в окне топика.
  79. В web-клиенте исправлена ошибка, из-за которой колонки в представлениях неправильно позиционировались при перетаскивании после скрытия одной или нескольких колонок.
  80. В web-клиенте decimal тип сериализуется как строка. Была исправлена ошибка, из-за которой, при сохранении карточки, нельзя было провалидировать KrToken. Это было связано с сериализацией/десериализацей decimal полей в структуре картчоки - из-за особенностей работы js, на клиенте при десериализации decimal поля могли обрезаться.
  81. Для обсуждений в TessaClient исправлен фон вкладки и локализация некоторых сообщений.
  82. Исправлены методы ICardGetStrategy при получении пустого перечисления идентификаторов IEnumerable<Guid> вместо null.
  83. Файл .hgignore в папке сборки Source для создания репозитория теперь не игнорирует папку Bin\packages, при отсутствии которой происходит ошибка в сборке.
  84. Исправлен сброс кэша локализации при наличии нескольких рабочих процессов для тех из процессов, где кэш ранее не сбрасывался.
  85. Исправлена проблема, когда в элементе управления “Ссылка” с указанным форматом поля при выборе значения из представления в карточке сохранялось локализованное значение, а не сама строка локализации.
  86. Исправлена ошибка в представлениях, возникающая при использовании выражений “ParamName.Value”, “ParamName.Value1” и “ParamName.Value2” для параметра с типом Int16.
  87. Исправлена ошибка в ICardUIExtension, приводившая к тому, что метод расширения мог быть запущен не из потока UI, например, если одно из расширений в цепочке вызывало асинхронный метод с ConfigureAwait(false).
  88. Исправлено изменение настроек в диалоге “Мои настройки” в TessaClient, которое могло привести к сбросу ряда настроек к поведению по умолчанию до перезапуска приложения.
  89. Оптимизировано распознавание штрих-кода в модуле потокового ввода документов.
  90. Исправлена редкая ошибка обработки больших файлов в модуле потокового ввода документов.
  91. В представлении “Вторичные процессы” исправлены параметры фильтрации по типу и по состоянию.
  92. В скрипте обновления сборки на Linux upgrade.sh исправлено обновление со сборок, которые в номере версии имеют две цифры между точками, например: 2.7.10.
  93. Исправлен плагин отправки уведомлений на почту о непрочитанных сообщениях по форумам.
  94. При вызове методов IBusinessCalendarService в клиентских расширениях desktop-клиента при возникновении ошибок на сервере, они теперь передаются на клиент в форме ValidationException. Исключением является метод ValidateCalendarAsync, который возвращает ошибки в объекте ValidationResult.
  95. Исправлено асинхронное выполнение в цепочке расширений ICardUIExtension.Finalizing и в событиях IWorkspaceModel.Closing (в т.ч. для ICardEditorModel.Closing).
  96. Исправлен вызов ICardEditorModel.CloseAsync с указанием параметра force=false. Пользователю выводился диалог-подтверждение для сохранения, но сохранение не выполнялось, даже если пользователь нажал “Да” в диалоге.
  97. Изменено получение руководителя подразделения: теперь он определяется по атрибуту manager у сотрудников подразделения, вместо атрибута managedBy у подразделения.
  98. Исправлен расчет плейсхолдеров fv в дайджесте карточек, если использовалось форматирование with param.
  99. При обращении к веб-сервису по адресу, который не привязывается к контроллеру, теперь возвращается код ошибки 404 “Not Found” вместо 200 “OK”.
  100. Оптимизирован расчет дайджеста, в случае если он уже был расчитан другим расширением.
  101. Исправлена редкая ошибка при кэшировании запроса на создание карточки, выполняемого в рамках платформенной обработки метода ICardRepository.NewAsync. Проблема могла проявляться в виде ошибки “An item with the same key has already been added. Key: SectionRows” в представлении рабочего места руководителя, или при других параллельных запросах на создание карточки, файла или задания, выполняемых впервые или сразу после сброса кэша в рабочем процессе веб-сервиса.
  102. Исправлены ошибки при одновременной аутентификации в LDAP, которые появились в сборке 3.4.0.
  103. Исправлена ошибка при синхронизации исключительно статических ролей в модуле синхронизации с AD / LDAP.
  104. Исправлена возможная ошибка с отсутствующей кодовой страницей 1251 при выгрузке представлений в CSV, а также с кодировками почты, если веб-сервис или Chronos установлены на Windows. Проблема была в вызове метода Initialize() в TessaPlatform.Dependencies. Ошибка появилась в сборке 3.4.0.
  105. В TessaClient и TessaAdmin исправлен выбор значения сабсета NULL, если сабсет возвращает значения логического типа Boolean Null и при этом присутствует отображаемый параметр фильтрации, связанный с сабсетом.
  106. В TessaAdmin исправлена ошибка, когда в редакторе типов карточек изменяемый тип карточки не помечался как изменённый при редактировании некоторых элементов управления.
  107. При наличии объектов-дублей в схеме данных (например, несколько колонок с одинаковыми именами в пределах таблицы) теперь выводится подробное сообщение об ошибке с указанием того, какой именно объект имеет дубли. Такая ошибка возникает при открытии выгруженной в репозиторий схемы данных, которая была повреждена (например, в результате некорректного объединения изменений с разных веток).
  108. Исправлено изменение схемы данных за одно сохранение, в процессе которого меняются именами две колонки в таблице.
  109. Исправлена ошибка, когда после неудачного сохранения карточки флаг ClosePending ICardEditorModel не сбрасывался на false.
  110. Исправлен скрипт условия в карточке типа условия “По маршруту”.
  111. В приложении Tessa Applications исправлено потребление памяти при частом обновлении списка приложений вручную.
  112. В приложении Tessa Applications оптимизировано скачивание приложений, когда часть файлов уже скачена в других папках или поставлялась вместе с msi-инсталлятором.
  113. Исправлены ошибки доступа к вкладкам “Мои настройки” и “Мои замещения” карточки сотрудника для пользователей, не являющихся администраторами системы, когда тип карточки сотрудника добавляется в типовое решение.
  114. Исправлена некорректная работа расширенных настроек правил доступа, когда кнопки “Добавить” и “Удалить” элемента управления “Таблица” при определенных настройках доступа были доступны, когда фактически доступа к ним не было, и были недоступны, когда доступ фактически должен был быть.
  115. При штатной отмене посредством cancellationToken выполнения SQL-запроса и для ряда других операций текст запроса с исключением OperationCanceledException теперь заносится в лог на уровне логирования Trace. Ранее сообщение вида “A task was canceled” могло быть залогировано в веб-сервисе как предупреждение или ошибка, хотя в действительности, его логирование не требуется.
  116. Если на сервер выполняется обращение по просроченной сессии, то сообщение теперь выводится на уровне логирования Info, и полный текст исключения выводится на уровне логирования Debug. Это предотвращает большое количество текста в файле лога на уровне логирования Error при штатных ситуациях, например, когда через web-клиент выполняется обращение по сессии, открытой более недели назад.
  117. Исправлена ситуация, когда при штатной отмене посредством cancellationToken операции с карточкой могли оставаться незакрытые блокировки на чтение или запись этой карточки. Например, небольшой шанс такой проблемы имелся, если закрыть окно браузера сразу после того, как началось выполнение открытия или сохранения карточки.
  118. Исправлена ситуация, когда при штатной отмене посредством cancellationToken метода operationRepository.ExecuteInLockAsync (и его производных - например, ExecuteInRolesLockAsync) операция с блокировкой могла быть не удалена. Например, при длительном ожидании завершения плагина Chronos платформой может быть инициирована отмена плагина через cancellationToken, которая в свою очередь имеет шанс на то, что блокировка на пересчёт ролей или на отправку почтовых уведомлений по обсуждениям не будет снята, и при следующем запуске Chronos соответствующие плагины выведут ошибку таймаута на ожидание блокировки.
  119. Исправлено освобождение ресурсов, зарегистрированных в объекте IUnityDisposableContainer в случае, если некоторые из регистраций в методах Dispose или DisposeAsync выбрасывают исключение (хотя это противоречит паттерну Dispose). Теперь такое исключение логируется, но не прерывает выполнение очистки для других ресурсов.
  120. Исправлены логируемые на сервере ошибки NullReferenceException at Tessa.Views.Parser.SyntaxTree.Parameters.ValueSyntaxNode.ConvertValue, если в поисковом запросе был параметр представления, который затем был удалён. Ошибки не влияли на выполнение поискового запроса, но зря добавлялись в лог веб-сервиса.
  121. Исправлено возникновение исключения ObjectDisposedOperation при выполнении операции, такой, как сохранение карточки, для объекта ICardEditorModel в коде расширений, если этот объект (вкладка с карточкой или диалог) уже был закрыт вызовом метода CloseAsync.
  122. Исправлено возможное дублирование узлов с представлениями и поисковыми запросами при выборе в ссылочных элементах управления в режиме отбора в desktop-клиенте.
  123. Исправлена ситуация, когда утилита tadmin PackageApp использовалась для публикации приложения, не являющегося сборкой .NET. Теперь такая публикация выполняется успешно.
  124. При расчёте метаролей и динамических ролей теперь удаляются дубликаты записей пользователя по UserID, которые мог возвращать неправильно составленный SQL-запрос, что приводило к невозможности вставки строки из-за внешнего ключа.
  125. Исправлено скрытие удаленных объектов в плагине синхронизации с AD / LDAP.
  126. Исправлена редкая ошибка при поиске объектов, принадлежащих referral серверам, в модуле синхронизации с AD / LDAP.
  127. Исправлено получение краткого имени пользователя в плагине синхронизации с AD / LDAP.
  128. При синхронизации с Active Directory исправлена ошибка получения PrimaryGroupID для объектов, не являющихся группами.
  129. Оптимизирована синхронизация с AD / LDAP в случае, если для синхронизируемого объекта (пользователя, подразделения или группы) отсутствуют изменения в домене в синхронизируемых полях. Ранее синхронизация выполнялась при изменении любых полей в домене.
  130. В представлении “Состояния документа” исправлено отображение колонки “Библиотека схемы”, где вместо библиотеки “Standard solution” могла отображаться библиотека “Default”.
  131. Исправлен расчёт замещений при добавлении/удалении сотрудников в статические роли и подразделения через списки ролей в карточке сотрудника.
  132. Исправлена локализация вида заданий при визуализации в типовом процессе отправки задач (плитка “Поставить задачу” или этап маршрута “Задача”).
  133. Исправлена опечатка в уведомлении “Рассылка о заданиях” со ссылкой на просроченную задачу.
  134. Исправлена редкая проблема с выделением одинаковых номеров разными пользователями из одной и той же последовательности. Проблема появилась в сборках 2.7.9 и 3.2.0.
  135. Исправлено получение прав доступа на чтение карточки для пользователя, которому было отправлено ознакомление. Исправление реализовано через новое правило доступа “Default acquaintance access rule” и контекстную роль “Ознакомление” (“Acquaintance”). Ошибка появилась в сборке 3.4.0.
  136. В приложении TessaClient исправлен метод печати диаграммы, который в некоторых случаях печатал чистый лист без диаграммы.
  137. Исправлено возможное появление двух боковых панелей, где вторая панель не закрывалась, если в процессе выполнения асинхронных расширений пользователь с помощью мыши выполнил жест на открытие панели второй раз. Проблема появилась в сборке 3.4.0.
  138. Исправлена ошибка генерации шаблонов файлов Word, когда конец закладки для обозначения таблицы и конец закладки для обозначения группы внутри таблицы были в одном и том же месте документа.
  139. Исправлена ошибка вставки изображений в колонтитулы при генерации Word-документа по шаблону.
  140. В карточке настроек “Типовое решение” удалена вкладка “Уведомления”, в котором уведомление о возврате заданий из отложенного состояния более не используется, теперь для этого имеются соответствующие тип уведомления и карточка уведомления.
  141. В desktop-клиентах TessaClient/TessaAdmin исправлено возможное размытие при отображении обводящей рамки для элементов управления “Текст”, “Метка”, “Строка” (в режиме “Avalon”).
  142. Исправлено дублирование строк результата в представлении “Правила доступа”, когда добавляются несколько значений для параметра “Тип карточки”, “Состояние” или “Роль”.
  143. Исправлены редкие ошибки при запуске приложения, связанные с невозможностью загрузить ресурс с расширением .xaml.
  144. Исправлено выполнение асинхронного кода в обработчике события GridViewModel.RowValidating для элемента управления “Таблица” в карточках.
  145. Исправлена публикация приложений в тихом режиме с параметром /q.
  146. Исправлена обработка имени набора параметров “По умолчанию” для представления, добавленного в рабочее место. Ошибка приводила к невозможности удаления поискового запроса из-за ошибки “Parameters SetName is empty”.
  147. Исправлена ошибка при обработке NTLM токена при аутентификации Kerberos.
  148. Исправлена ошибка, из-за которой расширенные настройки прав доступа не скрывали элементы управления заданий в некоторых ситуациях.
  149. Исправлена ошибка проверки токена прав доступа при создании карточки, из-за которой действие создания карточки в конструкторе процессов и этап создания карточки в маршрутах не работали, если у сотрудника отсутствовал доступ на создание карточки указанного типа.
  150. Исправлена проверка доступа к файлу по категории в расширенных настройках правил доступа.
  151. Исправлена ошибка NRE в расширении KrVirtualFileGetContentExtension при загрузке виртуального файла с неизвестным идентификатором.
  152. Исправлены возможные проблемы при сбросе кэша метаинформации представлений для СУБД PostgreSQL, когда параллельно изменению метаинформации происходят запросы на выполнение представлений к другим рабочим процессам веб-сервиса или нодам кластера. При этом могла быть повторно создана хранимая процедура для выполнения представления по старой метаинформации.
  153. В схеме данных, которая поставляется со сборкой в папке Configuration\Scheme, удалены неиспользуемые файлы миграций и хранимых процедур. Файлы присутствовали в папке, но не использовались редактором схемы данных.
  154. Исправлен метод ValidationResultBuilder.Add(IValidationResultItem), который мог приводить к неправильному вычислению значения для метода IsSuccessful().
  155. Исправлена ошибка поиска сотрудника по логину для СУБД PostgreSQL в модуле синхронизации с AD / LDAP.
  156. Исправлена ошибка поиска штрих-кода для СУБД PostgreSQL в модуле потокового ввода документов.
  157. При запуске Chronos на ОС Linux теперь выполняется очистка файлов, используемых для синхронизации между процессами, которые могли остаться после предыдущего запуска Chronos, если его процесс был принудительно завершён. Такие файлы по умолчанию расположены в подпапке ~/.config/tessa/sync для учётной записи, от имени которой запущен сервис Chronos.
  158. Исправлена ошибка “Can’t acquire or create Linux event, error code is -28” в Chronos на ОС Linux. Ошибка появлялась в случае крайне продолжительной работы Chronos без перезапуска сервера.
  159. Исправлена команда tadmin MigrateFiles, которая не запускалась в сборке 3.4.0.
  160. Исправлена ошибка, из-за которой не взятое в работу задание, завершаемое с удалением или откладываемое, бралось в работу текущим пользователем, если при этом происходила ошибка.
  161. Исправлен предпросмотр типа карточки “Сотрудник” с расширениями. Ошибка появилась в сборке 3.4.0.
  162. При исправлении типа карточки теперь выполняется удаление валидаторов, у которых не задана ссылка на проверяемое поле.
  163. При исправлении типа карточки, если был обнаружен неизвестный объект (элемент управления, валидатор и др.), то его имя теперь выводится в сообщении об ошибке с учётом локализации.
  164. Оптимизирован расчёт замещений.
  165. При генерации файла по шаблону в случае, если указано неизвестное расширение файла, для которого не зарегистрирован обработчик, - теперь выводится сообщение об ошибке вместо файла нулевого размера.
  166. Исправлены возможные ошибки “Could not load file or assembly” для библиотек System.**.dll, возникающие при использовании API системы, таких как методы интерфейса IEDSManager.
  167. При создании карточки сотрудника запрещено редактирование информации на вкладке “Мои замещения”, поскольку указание замещений до первого сохранения карточки не поддерживается.
  168. Исправлена ошибка с текстом “Column count mismatch” при отладке представления с выводом текста запроса для СУБД PostgreSQL, когда основной СУБД является MSSQL.
  169. При создании новой процедуры в схеме данных её название по умолчанию теперь указано как “Procedure” (ранее было название “Function”).
  170. В представлении “Задания от меня” удалён оператор “не равен” для параметра “Исполнитель”, поскольку он не работал.
  171. При сборке проектов расширений исправлено копирование в папку Bin\extensions файлов Tessa.Extensions.Server.dll и Tessa.Extensions.Shared.dll (и их отладочных символов pdb).
  172. Параметры DateTime, передаваемые в IBusinessCalendarService, теперь всегда используют указанное время без перевода его в UTC. Временная зона, для которой указано это время, задаётся отдельным параметром. Исправление актуально для сборки 3.4.0, в которой появилась поддержка нескольких временных зон, и указание DateTimeKind.Local или Unspecified могло исказить время без учёта временной зоны.
  173. Исправлена обработка ошибок в TessaAdmin, возникших в процессе импорта или экспорта представлений и рабочих мест.
  174. В представлении “Правило доступа” поиск в параметре “Разрешение” сделан регистронезависимым, ранее он был регистрозависимым. Проблема появилась в сборке 3.4.0.
  175. Исправлена ошибка, из-за которой при формировании письма мобильного согласования прикладывался лист согласования в ситуациях, когда лист согласования отсутствовал в карточке.
  176. При открытии новой вкладки в TessaClient строка с вкладками теперь всегда прокручивается до новой вкладки. При выборе вкладки, которая частично уместилась на экране, также выполняется прокрутка.
  177. Оптимизирован расчёт генерации метаролей при большом количестве ролей, например, генерация сотен агрегатных ролей по подразделениям в орг. структуре.
  178. Исправлена ошибка проверки доступа на создание карточки, когда в правиле доступа на создание использовались контекстные роли и расширенные настройки прав доступа одновременно.
  179. Исправлен сброс кэша для карточки настроек, в которой были изменения, не связанные с увеличением версии карточки. Обычно это добавление файлов.
  180. Исправлена ошибка “The semaphore has been disposed”, которая могла записываться в логе в процессе остановки сервиса Chronos или в других ситуациях.
  181. В схеме данных исправлена ошибка, из-за которой при изменении порядка колонок в индексе сам индекс не перестраивался.
  182. Исправлено получение результата операции по конвертации файлов IFileConverter, если она была вызвана с флагом FileConverterRequestFlags.DoNotCacheResult, но без флага WithoutResponse.
  183. Исправлена конвертация файлов средствами IFileConverter, если расширение файла набрано не в нижнем регистре (в т.ч. для предпросмотра в web-клиенте).
  184. Валидатор уникальности с признаком удаления строк-дубликатов теперь также удаляет данные в дочерних коллекционных секциях для удаляемых строк.
  185. Исправлена загрузка сборок на сервере и на клиенте по путям ProbingPath и по путям, в которых загружены расширения с модулями (из отдельных подпапок).
  186. Улучшено логирование ошибок веб-сервиса, связанных с запуском приложения и с ошибками запросов ASP.NET Core в части, не связанной с ошибками в Tessa. Например, это вывод ошибки конфигурации Swagger.
  187. Исправлены проблемы с ожиданием сброса глобального кэша, если cancellationToken, переданный в момент подписки на событие, был отменён после того, как ожидание было запущено (например, метод SubscribeAsync вернул управление). Описанная ситуация могла приводить к тому, что кэш не функционировал и одновременно с этим аномально повышалась загруженность процессора.
  188. Исправлена обработка ошибок, возникающих при установке прогресса операции по сохранению карточки с файлами.
  189. Исправлена ошибка доступа к полям строки, когда после создания новой строки при повторном ее открытии запрещенные для редактирования поля становились доступными для редактирования.
  190. Исправлены ошибки при указании одной и той же сборки с расширениями в extensions.xml или одной и той же сборки с плагинами Chronos в plugins.xml. Теперь такие сборки игнорируются.
  191. Исправлен автоматический поиск сервера Exchange для отправки и получения почты, если в app.json веб-сервиса в поле “NoticeMailer.ExchangeServer” или “MobileApproval.ExchangeServer” указана пустая строка.
  192. Исправлены настройки автоматической Windows-аутентификации на сервер Exchange для получения почты, если в поле “MobileApproval.ExchangeUser” указана пустая строка. Ранее в этом случае использовались настройки Exchange для отправки почты.
  193. Оптимизированы уведомления по задачам в TessaClient, где с клиента не передавались параметры пейджинга, что при большом количестве новых заданий приводило к загрузке лишних данных на клиент.
  194. Для валидатора уникальности исправлена серверная проверка для строк коллекционной секции, если в настройках валидатора указана родительская секция. Клиентская проверка ранее выполнялась корректно в TessaClient, поэтому ошибке был подвержен web-клиент и кастомные клиенты, где уникальность не проверялась в этом случае.
  195. В клиентских расширениях TessaClient исправлены возможные ошибки при обращении к свойствам карточки IInitializationContainer.PersonalRoleSatellite параллельно из нескольких потоков.
  196. Исправлена установка замещений для статических ролей, подразделений, контекстных ролей и динамических ролей после импорта карточки и после восстановления удалённой карточки. Такие замещения задаются в диалоге “Мои замещения” при выборе “Все роли и подразделения”, “Все статические роли” и “Все подразделения” в списке ролей для замещений.
  197. Исправлена ошибка при сохранении карточки, если для нее был добавлен валидатор уникальности, настроенный на виртуальную секцию.
  198. В карточках “Приложение” расчёт хеш-сумм файлов теперь выполняется на сервере при сохранении карточки. Это оптимизировало добавление файлов вручную в TessaClient, а также исправило такое добавление в web-клиенте, где хеш-суммы не рассчитывались.
  199. Исправлена ситуация, при которой для файлов, помеченных как большие или имеющих нелокальное содержимое RemoteFileContent, мог отображаться пункт контекстного меню “Открыть для чтения в папке”.
  200. Оптимизированы операции с файлами на клиенте и на сервере в части асинхронности и размера буфера, используемого для чтения или записи.
  201. В контроле файлов исправлено поведение настройки группировки “Группы свёрнуты”, если не указывался алиас группировки внутри параметра “Группировка”.
  202. При создании карточки “Категория документа” больше не выбран по умолчанию тип карточки “Протокол”.
  203. В уведомлении “Задание отправлено” исправлена ошибка, приводившая к дублированию сообщения.
  204. В Tessa Applications исправлена обработка загрузки приложения, которое было только что удалено с сервера, при этом список приложений в Tessa Applications не был обновлён.
  205. Исправлен автоматический выбор категории файлов, который мог ошибочно выбирать категорию, если доступен ввод категории вручную, или могла быть выбрана категория “Без категории”, если файлы без категории запрещены.
  206. В контроле “Таблица” в карточках исправлено удаление строк по горячей клавише Delete. Ошибка появилась в сборке 3.3.0.
  207. Исправлено форматирование результатов табличных плейсхолдеров в ситуации, когда в одной и той же таблице используется несколько одинаковых плейсхолдеров, но с разными настройками форматирования.
  208. Исправлено значение IViewContext.SelectedCellValue для представлений со включённым выбором по ячейкам, если ячейка была автоматически выбрана в момент загрузки представления (это первая ячейка первой строки).
  209. Исправлена работа типа условия “По состоянию” в бизнес-процессах Workflow Engine, если состояние было изменено в том же запросе, что и проверка условия.
  210. Исправлена обработка ошибок на сервере при сохранении содержимого файлов в карточке, если ошибка возникла в результате обрыва соединения с клиентом.
  211. В Tessa Applications исправлено подключение к серверам при обновлении списка приложений, если с последнего обновления изменились параметры подключения VPN и другие глобальные сетевые настройки.
  212. При выгрузке в файлы для библиотек локализации, библиотек карточек и объектов схемы исправлены возможные появления символа - это CR в переводе строки CR LF.
  213. При выгрузке в файлы для библиотек локализации пустой комментарий и комментарий, состоящий из пробелов, всегда выгружается без пустого тега <Comment>.
  214. Исправлена команда tadmin ExportLocalization, которая не выгружала комментарии для строк локализации.
  215. Для контрола “Ссылка” скрыта кнопка множественного выбора в диалоге выбора из представлений в desktop-клиенте. Кнопка отображается только для контрола “Список”.
  216. Исправлен экспорт типов карточек, файлов и заданий в файлы .jtype таким образом, чтобы обеспечить стабильный порядок в коллекциях и чтобы файл с типом карточки не изменялся при экспорте различными способами (TessaAdmin, tadmin).
Back to top