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

Версия 3.4 (13.11.2019)

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

  1. Изменены рабочие места: Administrator, User (переименовано представление по типам условий, добавлены узлы “Мои обсуждения” и “Последние обсуждения”).
  2. Изменены представления: KrPermissionsExtensionView (удалено), ConditionTypes (переименовано из NotificationConditionTypes), ConditionUsePlaces (добавлено), FileTemplates, FunctionRoleCards (добавлено), KrDialogButtonTypes (добавлено), KrDialogCardAutoOpenModes (добавлено), KrDialogCardStoreModes (добавлено), KrPermissionFlags, KrPermissionRoles (добавлено), KrPermissionRuleAccessSettings (добавлено), KrPermissions, KrPermissionsControlTypes (добавлено), KrPermissionsExtendedCards (добавлено), KrPermissionsExtendedMandatory (добавлено), KrPermissionsExtendedTasks (добавлено), KrPermissionsExtendedVisibility (добавлено), KrPermissionsFileAccessSettings (добавлено), KrPermissionsMandatoryValidationTypes (добавлено), KrPermissionStates (добавлено), KrPermissionTypes (добавлено), KrStageTemplates, KrTypesForDialogs (добавлено), KrVirtualFiles (добавлено), LastTopics (добавлено), LinkedDocuments, MyTopics (добавлено), TaskKinds, TopicParticipants (добавлено).
  3. Изменены таблицы: AutoApproveHistory, ConditionsVirtual (переименована из PersonalRoleNotificationConditionsVirtual), ConditionTypes (переименована из NotificationConditionTypes), ConditionTypesBuildOutput (переименована из NotificationConditionTypesBuildOutput), ConditionTypeUsePlaces (добавлена), ConditionUsePlaces (добавлена), FileTemplates, FmAddTopicInfoVirtual (добавлена), FmAttachmentTypes (добавлена), FmAttachments (добавлена), FmForumSatellite (добавлена), FmMessages (добавлена), FmMessagesPluginTable (добавлена), FmMessagesTypes (добавлена), FmNotifications (добавлена), FmParticipantTypes (добавлена), FmTopicParticipantRoles (добавлена), FmTopicParticipantRolesUnsubscribed (добавлена), FmTopicParticipants (добавлена), FmTopicParticipantsInfoVirtual (добавлена), FmTopicParticipantsVirtual (добавлена), FmTopicRoleParticipantsInfoVirtual (добавлена), FmTopicTypes (добавлена), FmTopics (добавлена), FmUserSettingsVirtual (добавлена), FmUserStat (добавлена), FunctionRoles (добавлена), FunctionRolesVirtual (добавлена), KrAdditionalApprovalInfo, KrApprovalHistory, KrApprovalHistoryVirtual, KrApprovalSettingsVirtual, KrDialogButtonSettingsVirtual (добавлена), KrDialogButtonTypes (добавлена), KrDialogCardAutoOpenModes (добавлена), KrDialogCardStoreModes (добавлена), KrDialogSatellite (добавлена), KrDialogStageTypeSettingsVirtual (добавлена), KrDocType, KrPermissionExtendedCardRuleFields (добавлена), KrPermissionExtendedCardRules (добавлена), KrPermissionExtendedFileRuleCategories (добавлена), KrPermissionExtendedFileRules (добавлена), KrPermissionExtendedMandatoryRuleFields (добавлена), KrPermissionExtendedMandatoryRuleOptions (добавлена), KrPermissionExtendedMandatoryRules (добавлена), KrPermissionExtendedMandatoryRuleTypes (добавлена), KrPermissionExtendedTaskRuleFields (добавлена), KrPermissionExtendedTaskRules (добавлена), KrPermissionExtendedTaskRuleTypes (добавлена), KrPermissionExtendedVisibilityRules (добавлена), KrPermissionFlags (удалена), KrPermissionRoles, KrPermissionRuleAccessSettings (добавлена), KrPermissions, KrPermissionsControlTypes (добавлена), KrPermissionsFileAccessSettings (добавлена), KrPermissionsMandatoryValidationTypes (добавлена), KrPermissionsSystem (добавлена), KrProcessStageTypes, KrSecondaryProcesses, KrSettings, KrSettingsCardTypes, KrStages, KrStagesVirtual, KrRouteSettings (добавлена), KrRouteModes (добавлена), KrTaskKindSettingsVirtual (добавлена), KrTaskTypeCondition (добавлена), KrTaskTypeConditionSettings (добавлена), KrTypedTaskStageTypeSettings, KrVirtualFileCardTypes (добавлена), KrVirtualFileRoles (добавлена), KrVirtualFiles (добавлена), KrVirtualFileStates (добавлена), KrVirtualFileVersions (добавлена), LocalizationEntries, LocalizationStrings, OperationTypes, PersonalRoleSatellite, PlaceholderCompilationCache (добавлена), RoleDeputies, ServerInstances, UserSettingsFunctionRolesVirtual (добавлена), UserSettingsVirtual, WeConditionAction.
  4. Изменены миграции: KrPermissions (добавлена).
  5. Изменены процедуры: KrPermissionsObtainReadersLock (добавлена), KrPermissionsObtainWritersLock (добавлена).
  6. Изменены функции: CalendarAddWorkQuants, CalendarGetLastQuantStart.
  7. Изменены типы карточек: AuthorCondition, ConditionsBase (добавлен), ConditionType (переименован из NotificationConditionType), Currency, DepartmentCondition, DocStateCondition, DocTypeCondition, DocumentCategory, EmptyCondition (добавлен), FileCategory, FileTemplate, ForumSatellite (добавлен), FunctionRole (добавлен), InitiatorCondition, KrApprovalStageTypeSettings, KrApprove, KrCard, KrDeregistrationAction (добавлен), KrDialogStageTypeSettings (добавлен), KrDocType, KrEdit, KrEditInterject, KrExampleDialogSatellite (добавлен), KrPermissions, KrRegistration, KrRegistrationAction (добавлен), KrSatellite, KrSecondaryProcess, KrSettings, KrShowDialog (добавлен), KrSigning, KrTemplateCard, KrUniversalTaskStageTypeSettings, KrUnversalTask, KrVirtualFile (добавлен), Notification, NotificationType, NotificationUserSettings, PartnerCondition, PersonalizationUserSettings (добавлен), PersonalRoleSatellite, ReportPermissions, ServerInstance, TaskHistoryGroupType, TaskKind, TaskTypeCondition (добавлен), TopicTabs (добавлен), WorkflowConditionAction, RouteCondition (добавлен), KrSecondarySatellite.
  8. Изменены карточки: AdvisoryTaskKind (добавлен), ApprovalHistoryCondition, Assigned to me, AuthorCondition, DepartmentCondition, DocStateCondition, DocTypeCondition, File templates\ApprovalHistory, File templates\PrintableApprovalHistory, ForumNewMessagesNotification (добавлена), ForumNewMessagesNotificationType(добавлена), FullRecalcRouteButton (удалена), InitiatorCondition (добавлена), KrDocType, KrPermissions, KrSettings, PartnerCondition (добавлена), PersonalRoleSatellite, TasksNotification (добавлена), VirtualFiles\ApprovalHistory (добавлена), ReturnForAmendingTemplate (добавлена), RouteCondition (добавлена).
  9. Изменены карточки (необязательные изменения): Addendum, ApprovalGroup, Assigned to me (Excel), CancelButton, Contract, Default access rules, DeregisterButton, Directive, Document, EditTemplate, Incoming, NewIterationTemplate, Official note, Order, Outgoing, ProtocolBranchPure, RebuildButton, RegisterButton, RejectButton, SendProtocolTasksButton, Server settings (settings), Standard solution (settings), StartProcessButton, Protocol of the meeting, Protocol of the meeting (Excel).
  10. Изменены библиотеки локализации.
  11. Обновите файл app.json для веб-сервиса web в соответствии с тем, что поставляется со сборкой.
  12. Изменены файлы тем интерфейса в подпапке themes для приложения TessaClient. Начиная с этой сборки, файлы тем также используются в веб-сервисе (папка wwwroot\themes).
  13. У следующих приложений настройки из конфигурационного файла .config (например, TessaClient.exe.config) были перенесены в файл app.json: Publisher, SchemeEditor, TessaAdmin, TessaAppManager, TessaClient, TokenEditor, утилита tadmin. Убедитесь, что конфигурационные файлы обновлены из соответствующей папки в сборки и их содержимое актуально для вашей инсталляции. В ряде случаев файлы .config были удалены, т.к. все настройки перемещены в app.json.
  14. Настройки подключения к прокси-серверу для приложения TessaClient теперь указываются в файле app.json, значения ProxyUri и ProxyClass. В предыдущих версиях эти настройки задавались в DefaultProxy и system.net/defaultproxy/module соответственно.
  15. При обновлении сервиса Chronos, установленного как сервис Windows, при переходе на эту сборку требуется сначала удалить предыдущий установленный сервис, используя InstallUtil.exe, затем заменить файлы в папке, и затем установить сервис посредством команды sc.exe. Обратитесь к руководству по установке за обновлённой инструкцией по установке сервиса Windows. При инсталляции на Linux изменений нет.
  16. На сервере приложений теперь требуется установленный пакет .NET Core Runtime & Hosting Bundle версии 3.0.0 или старше. Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet-core/3.0
  17. Если для сборки проектов расширений вы используете IDE Visual Studio 2019, то теперь требуется версия 16.3 или старше. Также, независимо от выбранной IDE, требуется установленный пакет .NET Core SDK версии 3.0.100 или старше (устанавливается вместе с Visual Studio). Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet-core/3.0
  18. При развёртывании сервера приложений на Windows с использованием IIS для работы Windows-аутентификации в web-клиенте обратитесь к руководству по установке, чтобы указать параметры пула приложений для веб-приложения tw_winauth.
  19. При развёртывании сервера приложений на Windows теперь используется InProcess-хостинг процесса веб-сервиса внутри IIS. Это не позволяет настроить в IIS несколько раздельных веб-приложений для одного и того же пула приложений (например, приложение tw_winauth для Windows-аутентификации в web-клиенте, или веб-сервисы, разработанные в рамках проекта в отдельном веб-приложении, отличном от веб-сервиса “web”). Создайте отдельные пулы приложений для каждого веб-приложения в IIS. Пример настройки есть в руководстве по установке в разделе по настройке Windows аутентификации в web-клиенте. Также вы можете отключить InProcess-хостинг, отредактировав файл web.config в папке веб-сервиса “web” и укажите в параметре hostingModel=”OutOfProcess” (это приведёт к снижению производительности при работе в высоконагруженной среде).
  20. Сервер приложений теперь работает с использованием платформы .NET Core. Версия .NET Framework, установленная на сервере приложений при развёртывании на Windows, не является важной. Серверные расширения Tessa.Extensions.Server, Tessa.Extensions.Shared (и библиотеки модулей, если используются) должны таргетироваться на платформу netstandard2.0 (если для проекта это указано по умолчанию в сборке) или на платформу netcoreapp3.0 (для использования функций API .NET Core, недоступных в .NET Standard). Если вы изменили платформу на net472 или другую версию .NET Framework, то необходимо изменить платформу обратно на netstandard2.0, а функциональность, связанную с .NET Framework (обычно это сторонние библиотеки или WPF) необходимо вынести в отдельное веб-приложение. Пример создания такого веб-приложения приведён в “Создание веб-сервиса WCF, который вызывает веб-сервис платформы” (аналогичное приложение может быть разработано как REST с использованием ASP.NET Core 2.x). Перечисленные изменения не затрагивают библиотеки клиентских расширений desktop-клиента, которые по-прежнему таргетируются на платформу .NET Framework.
  21. Swagger, встроенный в веб-приложение web (по пути /swagger от адреса веб-приложения), теперь генерирует json-файл для описания REST API платформы по спецификации OpenApi v3 (в предыдущих версиях использовалась версия спецификации v2). Если вы используете файл swagger.json для генерации клиентов к сервисам REST API, то убедитесь, что используемый для генерации инструментарий поддерживает спецификацию OpenApi v3.
  22. Утилита tadmin для Windows (папка Tools) теперь использует платформу .NET Core вместо .NET Framework. Начиная с этой сборки запуск утилиты на 32-битных версиях Windows невозможен.
  23. Веб-сервис (папки Services/web, linux/web), сервис Chronos (папки Chronos, linux/chronos) и утилита tadmin (папки Tools, linux/tools) публикуются в режиме ReadyToRun для ускорения запуска на 64-битных платформах Windows и Linux. Некоторые файлы .dll в этой папке (такие как Tessa.dll) больше по размеру и их нельзя копировать с заменой в другие папки, где выполнение возможно на других платформах. Обратное копирование возможно, например, если выйдет патч для библиотеки Tessa.dll, её можно в одинаковом виде скопировать в эту и другие папки сборки, где это требуется согласно инструкции к патчу.
  24. Веб-сервис (папки Services/web, linux/web) теперь ссылается на расширения в подпапке extensions. Убедитесь, что ваш файл app.json в настройке “ProbingPath” содержит относительный путь до этой папки (по умолчанию в сборке это так).
  25. Обновите файл решения Tessa.Extensions.sln. Он содержит ссылки на два новых проекта расширений, которые также требуется скопировать из сборки в ваш репозиторий: Tessa.Extensions.Default.Console и Tessa.Extensions.Console. Первый проект содержит исходные коды всех консольных команд утилиты tadmin, а второй позволяет аналогичным образом добавлять консольные команды в рамках проекта. Такие команды можно будет штатно вызывать при помощи утилиты tadmin (на Windows или Linux). Примеры доступны в руководстве разработчика.
  26. Обновите файл проекта Tessa.Extensions.Server.Web.csproj, используемого для разработки REST-контроллеров в рамках проекта, из аналогичного файла в сборке в папке Source\Extensions\Tessa.Extensions.Server.Web.
  27. Обновите файл проекта Tessa.Extensions.Server.csproj, используемого для разработки серверных расширений в рамках проекта, из аналогичного файла в сборке в папке Source\Extensions\Tessa.Extensions.Server. Вместо замены всего файла достаточно указать <TargetFramework>netcoreapp3.0</TargetFramework> вместо netstandard2.0.
  28. В сборках расширений Tessa.Extensions.*** (Client, Server, Shared) обновлён пример тестового веб-сервиса для интеграции. Если вы не используете тестовый веб-сервис, то код в проектах можно не обновлять.
  29. В файлах проектов .csproj для сборок расширений Tessa.Extensions.*** (Chronos, Server, Server.Web, Shared) и Tessa.Module.Sample.*** (Server, Shared) обновлён блок со скриптами таким образом, чтобы сборку проектов можно было выполнить из ОС Linux, используя .NET Core SDK. Вы можете не изменять файлы проектов, если выполнять сборку из ОС Linux не требуется.
  30. Если вы используете модули расширений (такие как Tessa.Module.Sample.***), то обновите файл .csproj для серверной сборки (Tessa.Module.Sample.Server), указав <TargetFramework>netcoreapp3.0</TargetFramework> вместо netstandard2.0.
  31. Сборка содержит большое количество изменений API в части асинхронности. Прочтите рекомендации в ReleaseNotes к сборке 3.3.1 в части асинхронности, и примените их к текущей сборке. Также в ваших проектах расширений замените соответствующие сигнатуры методов расширений из “override void BeforeRequest” в “override async Task BeforeRequest” (где вместо “BeforeRequest” последовательно указывайте разные методы расширений, т.е. AfterRequest и др.).
  32. Если обработчики событий в ваших расширениях (такие как Evaluating) также содержат асинхронные вызовы, то убедитесь, что аргументы событий в параметре “e” содержат метод Defer, тогда вызовите метод, обернув в него весь асинхронный код в вашем обработчике (или весь код обработчика целиком): “using (e.Defer()) { … /* код с await-ами */ }”. В сигнатуре вашего обработчика укажите “async void” или просто “async”, если это лямбда-выражение: async (s, e) => … Если метод e.Defer() отсутствует, то вызовите асинхронные методы синхронным образом: MethodAsync().GetAwaiter().GetResult().
  33. Удалены синхронные методы из интерфейса ICardRepository, используйте асинхронные методы и, при необходимости, укажите .GetAwaiter().GetResult() для синхронного вызова.
  34. В коде расширений для объекта DbManager используйте метод Execute<T> вместо ExecuteScalar<T>, и метод ExecuteList<T> вместо ExecuteScalarList<T>.
  35. Подсистема типов условий была вынесена из подсистемы уведомлений как подсистема платформы. Все объекты с именами *NotificationCondition* переименованы в *Condition* и перенесены из Tessa.Notices в Tessa.Platform.Conditions, а namespace Tessa.Compilation.Notifications переименован в Tessa.Compilation.Conditions.
  36. Лист согласования типового решения перенесен в карточку виртуального файла “Лист согласования” и шаблоны файлов “Лист согласования” и “Печатный лист согласования”. Все старые расширения на лист согласования больше не поддерживаются по умолчанию, доработку листа согласования можно проводить непосредственно в карточках шаблонов листа согласования. Если необходимо включить старый лист согласования типового решения для поддержки старых расширений, то нужно скопировать файл Fixes\KrApprovalList\KrApprovalList.cs в серверные расширения, где реализованы старые расширения на лист согласования.
  37. Плагин TasksNotificationPlugin теперь работает через подсистему уведомлений. Формируемое уведомление расположено в карточке уведомления “Рассылка о заданиях”, а логика загрузки данных письма осталась в коде плагина.
  38. Если в рабочих местах вы использовали расширение на узле AutomaticNodeRefreshExtension, то удалите его и добавьте, заново указав настройки.
  39. Для получения настроек расширений KrSettings укажите в конструкторе расширения объект KrSettingsLazy, на котором в месте использования вызовите метод GetValueAsync. Функция Func<KrSettings> больше не зарегистрирована в Unity.
  40. Подсистема расширений правил доступа была обновлена и теперь методы для проверки правил доступа находятся в IKrPermissionsManager, а не KrPermissionsHelper. Список флагов KrPermissionFlags был перенесен в KrPermissionFlagDescriptors (имена флагов остались прежними). В объекте KrToken свойство Permission теперь представляет из себя не значение типа Enum, а перечисление значений типа KrPermissionFlagDescriptor.
  41. Расширения правил доступа ITaskPermissionsExtension и IKrPermissionsExtension были обновлены на новую подсистему прав доступа и теперь разделены на ITaskPermissionsExtension, ICardPermissionsExtension и IKrPermissionsRuleExtension. Теперь данные расширения регистрируются как обычные расширения через IExtensionContainer.
  42. В расширениях используйте пространство имён Tessa.Themes вместо Tessa.UI.Themes для взаимодействия с темами оформления. Некоторые методы перенесены из ThemeHelper в UIHelper, а метод-расширения для класса Theme из пространства имён Tessa.UI.Themes в Tessa.UI.
  43. При запуске процесса Workflow Engine через IWorkflowEngineProcessor.StartNewProcessAsync теперь передается объект сигнала IWorkflowEngineSignal вместо типа сигнала.
  44. В конструкторе бизнес-процессов в действиях “Задание” и “Группа заданий” изменен порядок обработки события “Выполнить” и обработки таблицы “Варианты завершения” при завершении задания. Теперь сначала выполняются события “Выполнить” из таблицы “Обрабатываемые события”, а затем обрабатывается таблица “Варианты завершения”.
  45. Консольная команда tadmin SetToken теперь всегда требует путь к папке с файлами app.json в качестве параметра без имени. Ранее использовался или опциональный параметр /folder, или значение из конфигурационного файла, которое удалено в текущей версии.
  46. В руководстве по установке добавлен раздел с настройкой приложения, развёрнутого в среде управления контейнерами Docker. Ознакомьтесь с этим разделом, если вы используете систему, установленную в контейнерах Docker.
  47. Приложение Docker теперь использует версию PostgreSQL 12 в файле сборки Docker\tessa\docker-compose.yml. Если вы использовали Docker с предыдущими сборками, то в рамках работ по обновлению на новую версию платформы либо отредактируйте файл docker-compose.yml, заменив строку “postgres:12-alpine” на “postgres:11-alpine”, чтобы в вашей инсталляции использовалась версия PostgreSQL 11. Либо выполните работу по обновлению файлов базы данных на диске “db” в Docker с версии PostgreSQL 11 на PostgreSQL 12, для этого обратитесь к документации PostgreSQL.
  48. В шаблонах этапов маршрутов для тех этапов, в которых был указан вид задания в предыдущих сборках, укажите этот вид в соответствующем поле. Обратите внимание, что если вы не укажете вид задания, то задания будут корректно отправлены с предыдущим указанным видом (несмотря на то, что он не отображается в настройках этапа). Однако, в следующих сборках такая обратная совместимость будет удалена.

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

  1. В типовую поставку добавлен модуль “Форумы и обсуждения”. Модуль должен быть указан в лицензии; лицензии Enterprise-редакции включают модуль автоматически, перевыписывать такие лицензии не требуется. Типы документов и карточек, для которых должны быть доступны обсуждения, следует включить в типовое решение, также для них должен стоять соответствующий флажок для работы обсуждений в строке таблицы в карточке настроек “Типовое решение” или в карточке “Тип документа”.
  2. В карточках добавлен элемент управления “Представление”. Он позволяет вывести любые представления внутри карточки, передав в них параметры через настраиваемый маппинг. Также возможно организовать связанные представления master-detail. Элемент управления не поддерживается в web-клиенте, поддержка будет добавлена в следующих версиях.
  3. В карточках добавлен элемент управления “Выбор цвета” для выбора или отображения цвета в формате ARGB. Элемент управления связывается с полем в карточке типа целое число Int32.
  4. В карточках заголовки блоков и элементов управления теперь могут указываться с форматированием строк локализации “… {$Alias} …”.
  5. В “Мои настройки” добавлена вкладка “Персонализация”, на которой можно настроить цвет фона для заданий в различных функциональных ролях (автор или исполнитель) и цвет фона сообщений для форумов, все настройки индивидуальны для пользователя. Если какой-либо из цветов не указан (как задано по умолчанию), то используется соответствующий цвет из текущей выбранной темы. Функциональные роли заданий “Автор” и “Исполнитель” указаны в таблице-перечислении FunctionRoles, которая настраивается в справочнике: Администратор - Прочее - Функциональные роли. Для каждой функциональной роли автоматически формируются настройки цветов в диалоге “Мои настройки”. В текущем релизе используются только две функциональные роли “Автор” и “Исполнитель”, но дополнительные роли можно применять в расширениях, пример доступен в руководстве разработчика.
  6. В теме интерфейса добавлены цвета фона заданий отдельно для авторов и исполнителей с учётом того, видит ли пользователь задание как заместитель. В файле темы .json это ключи: TaskPerformerBackground, TaskPerformerDeputyBackground, TaskAuthorBackground, TaskAuthorDeputyBackground. Таким образом, для каждой темы можно настроить окрашивание заданий авторов и исполнителей в разные цвета без написания расширений. По умолчанию все эти цвета указаны такие же, как и цвета заданий по умолчанию (жёлтые задания).
  7. В подсистему плейсхолдеров добавлена возможность шаблонизировать текст с помощью скриптов. Для этого можно использовать конструкции вида <# … #>, <#= … #>, в которые можно встроить код. Данная возможность поддерживается в типе карточки Уведомление, в тексте шаблонов файлов текстового типа (.txt, .html) и в настройках действий Задание, Группа заданий, Уведомление в конструкторе бизнес-процессов.
  8. В шаблонах файлов .html и .txt добавлена возможность использовать тег <_table>…<_/table>, чтобы исключить из документа всю таблицу вместе с заголовками колонок, когда нет ни одной строки внутри таблицы.
  9. В тип карточки “Шаблон файла” добавлена возможность писать методы расширения IPlaceholderReplaceExtension, которые будут вызваны только при формировании файла по данному шаблону.
  10. В тип карточки “Шаблон файла” добавлен флаг Системный, который позволяет отключить генерацию плиток для данного шаблона файлов на боковой панели карточки/представления.
  11. В шаблонах файлов добавлена возможность указания области таблицы, внутри которой весь текст будет удален, если таблица внутри данной области не содержит ни одной строки. Это может быть использовано для удаления заголовков таблицы в ситуациях, когда в данной таблице нет строк.
  12. В шаблонах файлов Word добавлена возможность указания кастомной области строки, группы или таблицы с помощью закладок в документе Word.
  13. В шаблонах файлов Excel добавлена возможность использовать в качестве обозначения строки/группы/таблицы строку Excel целиком.
  14. В шаблонах файлов добавлена возможность использования комплексных строк локализаций, внутри которых локализуется текст вида “… {$nested_string} …”.
  15. В шаблон файла “Мои задания” добавлена подсветка ячейки со сроком завершения задания при просрочке, аналогично представлению “Мои задания”.
  16. Добавление подписок на уведомления в карточке через плитку “Настройки уведомлений по карточке” теперь возможно и без нажатия плитки “Редактировать”, если есть доступ на возможность подписываться на уведомление по данной карточке.
  17. Добавлена карточка уведомления “Рассылка о заданиях”, позволяющая настроить внешний вид письма для ежедневной почтовой рассылки по текущим заданиям. Логика загрузки данных по-прежнему реализована внутри плагина TasksNotificationPlugin (код плагина доступен в типовых расширениях).
  18. В тип карточки “Тип условия” добавлено поле “Места использования условия”. Данное поле отвечает за то, где данный тип условия доступен для выбора.
  19. Добавлен тип карточки “Виртуальный файл”, который позволяет настроить виртуальные файлы для карточек, генерируемые с помощью шаблонов файлов.
  20. Лист согласования типового решения перенесен в карточку виртуального файла “Лист согласования” и шаблоны файлов “Лист согласования” и “Печатный лист согласования”. Также был добавлен тип условия “Видимость листа согласования”.
  21. В конструкторе бизнес-процессов добавлены новые действия “Регистрация” и “Отмена регистрации”. Данные действия идентичны этапам “Регистрация” и “Отмена регистрации” из маршрутов в режиме “Без отправки задания”.
  22. В маршрутах для следующих этапов добавлено стандартное поле “Вид задания”: согласование, подписание, регистрация, доработка, типизированное задание. Для тех этапов, где вид задания уже настраивался, сейчас указывается двумя способами: старым и новым. Необходимо переносить настройки в новое поле, старое поле будет удалено в следующих версиях. Для этого откройте шаблон этапа и укажите вид задания.
  23. В маршрутах добавлен тип этапа “Диалог”, позволяющий отображать диалоговое окно для взаимодействия пользователя с системой.
  24. В маршрутах и бизнес-процессах вкладка со скриптом, который является непустым, отображается вместе со звёздочкой в заголовке вкладки. Также звёздочкой отмечается заголовок блока, внутри которого доступны вкладки со скриптами.
  25. В маршрутах в этап согласования добавлена настройка “Рекомендательное согласование”, которое позволяет не возвращать этап на доработку при несогласовании.
  26. В маршрутах в настройках вторичного процесса в режиме “Кнопка” добавлена возможность указывать сочетание клавиш.
  27. В маршруты добавлена возможность пропуска этапов, созданных по шаблону этапов. Для этого этап надо удалить из таблицы “Этапов” на вкладке “Маршрут” в карточке, причём функциональность пропуска доступна пользователям без прав администратора при наличии правила доступа с флажком “Пропуск этапов”.
  28. В конструкторе бизнес-процессов в настройках кнопки добавлена возможность указывать сочетание клавиш.
  29. В web-клиенте добавлена возможность использовать расширение на узел дерева рабочего места AutomaticNodeRefreshExtension для того, чтобы автоматически обновлять узел по расписанию (каждые несколько секунд).
  30. В web-клиенте добавлена светлая тема, которая ранее была только в desktop-клиенте.
  31. В web-клиенте добавлена возможность настраивать цвета тем оформления и добавлять новые темы в виде таких же файлов .json, какие используются в desktop-клиенте.
  32. В web-клиенте для каждой темы в соответствие задаются типовые фоны и фон по умолчанию, устанавливаемый при переходе на эту тему с другой темы, где также используется типовой фон. Файлы типовых фонов указываются в .json файле темы, это позволяет добавлять, удалять или заменять любые типовые фоны. Поведение аналогично desktop-клиенту.
  33. В web-клиенте добавлена возможность устанавливать корпоративные фоны по умолчанию для всех пользователей web-клиента. Настройка расположена в карточке “Настройки сервера”. Для desktop-клиента по-прежнему используется фон, опубликованный в конфигурационном файле app.json для приложения TessaClient (настройка DefaultWallpaper).
  34. В web-клиенте при настроенной Windows-аутентификации выполняется автоматической вход для доменной учётной записи. Если компьютер не входит в домен, то браузер отображает окно ввода доменных логина/пароля. Если автоматический вход необходимо отключить, то для настройки “WinAutoLogin” укажите значение false в файле app.json веб-сервиса.
  35. В web-клиенте добавлен манифест PWA-приложения (Progressive Web App), расположенный по пути wwwroot/tessa.webmanifest. Это позволяет браузерам на мобильных устройствах устанавливать на рабочий стол ярлык для запуска сайта как отдельного от браузера приложения. PWA-приложение использует Service Worker для оффлайн-кэширования при наличии валидного сертификата HTTPS. При необходимости вы можете изменить свойства манифеста в этом файле, а также установить start_url и scope как путь от имени сервера, например “/tessa/web” (по умолчанию не установлены, поскольку путь может отличаться). Подробное описание формата манифеста доступно на сайте W3C: https://w3c.github.io/manifest
  36. В контрол “Ссылка” для представлений добавлен вызов выпадающего списка кнопками стрелок (вверх и вниз).
  37. Обновлена подсистема правил доступа, в карточке правил доступа можно настраивать дополнительные настройки доступа к карточке, заданиям, файлам, видимости элементов карточки (контролов, блоков, вкладок), видимость данных для пользователя. Также добавлена возможность возможность настраивать фильтрацию правил доступа через подсистему условий.
  38. В настройки типового решения можно добавить типы карточек “Сотрудник”, “Подразделение” и “Статическая роль”. После добавления данных типов карточки в типовое решение, карточки перестают быть доступными только для администратора и доступ к ним определяется через правила доступа.
  39. Доступные для выбора языки локализации теперь определяются строками в системной таблице-перечислении Languages. Для добавления языка достаточно отредактировать таблицу в схеме данных (указав отдельную библиотеку схемы). Также добавьте строку локализации вида “LanguageTemplate_код-языка”.
  40. Изменено кодирование в теле сообщений почтовых уведомлений с Base64 на EightBit.
  41. Карточки “Валюта”, “Вид задания”, “Категория документа”, “Категория файла”, “Права на текущие отчёты”, “Представление”, “Рабочее место”, “Тип группы истории заданий” и “Тип уведомления” теперь всегда создаются и открываются только в модальных диалогах. Плитки создания на правой панели скрыты для карточек, у которых они были, для этого используйте кнопки на панели пейджинга в соответствующих представлениях.
  42. В карточках “Шаблон” и “Удалённая карточка” специальные функции по работе с этими карточками вынесены на верхнюю панель тулбара. Также кнопка возврата из просмотра удалённой карточки в удалённую карточку закрывает вкладку с просмотром.
  43. Добавлена аутентификация Kerberos для серверов приложений на Linux и на сервере приложений Windows, который не входит в домен, и поэтому аутентификация Windows для него не работает. Также появилась возможность выполнять вход LDAP для пользователей с типом входа “Пользователь Windows”.
  44. Добавлены настройки для аутентификации и синхронизации c AD / LDAP: количество попыток подключения к реферальным серверам и задержка перед повторным подключением. Также добавлена возможность отключать ненужные реферальные сервера и игнорировать системные разделы, такие как: ForestDnsZones, DomainDnsZones, Configuration.
  45. В файле app.json для TessaClient добавлены настройки подключения к прокси-серверу ProxyUri и ProxyClass, они по умолчанию закомментированы символами “//”, которые надо удалить для того, чтобы соответствующая настройка работала. ProxyUri указывает адрес и порт для прокси-сервера (например, для Fiddler укажите http://127.0.0.1:8888), когда настройка указана, то весь трафик будет проходить через прокси. При этом и базовый адрес, и адрес прокси должны быть указаны как IP-адрес или имя сервера, но не как localhost (loopback-интерфейс игнорирует прокси). Если помимо ProxyUri задать настройку ProxyClass, то вместо стандартного прокси-объекта System.Net.IWebProxy будет использоваться класс с указанным именем типа. Этот класс должен иметь конструктор с единственным параметром типа Uri - это адрес из настройки ProxyUri. Укажите “Tessa.UI.LoginDialogProxy, Tessa.UI”, чтобы использовать прокси с аутентификацией, при этом будет отображаться окно с логином-паролем.
  46. В сборке в папку с проектами расширений “Source” добавлен файл Export.bat, который позволяет выполнить полный экспорт конфигурации с карточками из веб-сервиса (т.е. из базы данных) по аналогии с тем, как устроена папка “Configuration” в сборке. Аналогично добавлен файл export.sh для запуска под Linux, не забудьте указать ему права перед запуском: sudo chmod 755 export.sh. Описание доступно в руководстве администратора в разделе “Экспорт конфигурации веб-сервиса”.
  47. В руководстве по установке добавлен раздел с настройкой приложения, развёрнутого в среде управления контейнерами Docker. Ознакомьтесь с этим разделом, если вы используете систему, установленную в контейнерах Docker.
  48. Утилита tadmin: реализовано API для расширения набора консольных команд. Исходный код всех типовых консольных команд доступен для модификации в проектных расширениях Tessa.Extensions.Default.Console. В проекте Tessa.Extensions.Console рекомендуется добавлять новые консольные команды при необходимости. Примеры доступны в руководстве разработчика. Скомпилированные расширения с консольными командами подключаются таким же образом, как и другие расширения, - посредством файлов extensions.xml. В сборке по умолчанию расширения утилиты tadmin содержатся в папке Tools/extensions и linux/tools/extensions.
  49. Утилита tadmin: команды DeleteCards, ImportCards, ImportLocalization теперь сразу выводят сообщения о произведённых действиях в лог и по умолчанию в окно консоли после того, как действие производится (например, сразу после удаления или импорта карточки). Если какое-то из действий выполняется долго или приводит к зависанию, то теперь это заметно в логе и в окне консоли.
  50. Утилита tadmin: для команды ExportCards добавлен ключ /localize для локализации имён файлов с карточками на указанный язык, если они являются строками локализации (начинаются с символа “$”). Например: /localize:en или /localize:ru.
  51. Утилита tadmin: добавлена команда ExportScheme для экспорта схемы данных, полученной от веб-сервиса, в структуру папок схемы (файл *.tsd для описание базы данных и вложенные подпапки).
  52. Утилита tadmin: добавлена команда ExportSchemeSql для экспорта схемы данных, полученной из базы данных по прямому SQL-соединению, в структуру папок схемы (файл *.tsd для описания базы данных и вложенные подпапки).
  53. Утилита tadmin: добавлена команда ExportLocalization для экспорта библиотек локализации, полученных от веб-сервиса, в файлы *.tll.
  54. Утилита tadmin: добавлена команда ExportTypes для экспорта типов карточек, файлов и заданий, полученных от веб-сервиса, в файлы *.jtype.
  55. Утилита tadmin: добавлена команда ExportViews для экспорта представлений, полученных от веб-сервиса, в файлы *.view.
  56. Утилита tadmin: добавлена команда ExportWorkplaces для экспорта рабочих мест, полученных от веб-сервиса, в файлы *.workplace.
  57. API: Все расширения и большинство API в платформе сделаны асинхронными, это относится и к серверным API (веб-сервисы, Chronos), и к клиентским. В расширениях токен отмены операции передаётся в свойстве context.CancellationToken. На текущий момент синхронными остаются части API, связанные с маршрутами, Workflow Engine, и некоторыми API из типового решения Kr***. Скрипты в различных карточках настроек также синхронные, в т.ч. в карточках маршрутов, действий в Workflow Engine, в правилах доступа, шаблонах файлов и др.
  58. API: В web-клиенте добавлен новый вид расширений TabPanelUIExtension, где доступна возможность изменять кнопки на основной панели со вкладками рабочих мест и карточек.
  59. API: Добавлен новый вид серверных расширений IPlaceholderReplaceExtension, позволяющий модифицировать результат замены плейсхолдеров или сам формируемый документ при замене плейсхолдеров. Задействуется при обработке шаблонов файлов любых типов.
  60. API: В объект IPlaceholderManager в метод ReplaceText добавлен параметр withScripts, который включает возможность использования шаблонизации с помощью скриптов <#…#> при замене переданного текста.
  61. API: В контекст обработки типов условий добавлено свойство CardID, которое возвращает идентификатор карточки.
  62. API: При выполнения проверки условия подсистемы типов условий в конструкторе бизнес-процессов добавлена возможность получить текущий контекст обработки процесса из Info контекста. Это можно сделать, добавив using Tessa.Workflow.Helpful, с помощью метода context.GetWorkflowContext(). Если проверка условия производится не в рамках обработки процесса из конструктора бизнес-процессов, данный метод вернёт null.
  63. API: Методы интерфейса IAdvancedCardDialogManager теперь возвращают объект IUIContext для диалога, который был открыт. Это позволяет в вызывающем такой метод коде получить данные, заполненные в диалоге IUIContext.CardEditor.CardModel.Card.
  64. API: В ICardUIExtensionContext добавлено свойство StoreRequest, позволяющее получить доступ к реквесту на сохранение в Saving расширении.
  65. API: В CardTask добавлено поле Settings, являющееся словарем, и позволяющее хранить произвольные данные для задания в рамках жизни задания. Данные хранятся в таблице Tasks столбец Settings.
  66. API: В API конвертации файлов IFileConverter для запроса IFileConverterRequest добавлены свойства CardTypeID, CardTypeName, FileTypeID, FileTypeName и FileRequestInfo, которые будут использованы в запросе на загрузку контента файла для конвертации в плагине Chronos (значения из FileRequestInfo переносятся в request.Info запроса GetFileContent). Задействуйте новые свойства для написания расширений на конвертируемые файлы в виде CardGetFileContentExtension, в т.ч. для конвертации виртуальных файлов. Эти свойства также используются при вычислении хеш-кода RequestHash, который влияет на возможность параллельно выполнять конвертацию одного и того же файла.
  67. API: В API синхронизации с AD / LDAP добавлена возможность изменять состав статической роли или подразделения во время синхронизации.
  68. API: В API потокового сканирования добавлена возможность переопределить поиск штрих-кода в системе, а так же загрузку и сохранение карточки с отсканированным файлом.
  69. API: В этапы маршрутов “Согласование”, “Подписание”, “Редактирование”, “Регистрация” добавлен список завершённых заданий в Stage.Info по ключу “Tasks”. Значение доступно в скриптах постобработки.
  70. API: Добавлен метод IFileConverter.DeleteFileAsync, позволяющий удалить сконвертированный файл из кэша, если он там присутствует. Для таких сценариев, как конвертация, инициируемая с веб-сервиса, но фактически выполняемая в плагине Chronos, где кэш файлов требуется как способ передачи содержимого файла после конвертации. Если известно, что операция по конвертации уникальна и результат конвертации не будет нужен, то посредством метода DeleteFileAsync можно удалить содержимое файла из карточки “Кэш файлов”.
  71. API: Добавлен флаг FileConverterRequestFlags.AllowConcurrentIdenticOperations, позволяющий выполнять параллельную конвертацию файлов с идентичными параметрами конвертации IFileConverterRequest, определяемыми хеш-значением RequestHash.
  72. API: В модели представления контролов “Целое число”, “Вещественное число” и “Десятичное число” добавлена возможность изменять свойства MinValue и MaxValue, ограничивающие соответственно минимально и максимально допустимые значения, вводимые пользователем.
  73. API: В расширениях на метаинформацию ICardMetadataExtension в методе ModifyTypesAsync теперь можно отложить проверку валидности схемы данных для типа карточки, добавив его идентификатор в коллекцию context.DelayedSchemeCheckCardTypeIDSet, если некоторые из секций или колонок cardType.SchemeItems отсутствуют в схеме данных (в т.ч. как виртуальные), но будут добавлены как объекты CardMetadataSection и CardMetadataColumn позже в методе расширения ModifyMetadataAsync. Если по завершении этого метода в типе карточки cardType.SchemeItems присутствуют ссылки на секции или колонки, отсутствующие в секциях cardMetadata.GetSectionsAsync(), то тип считается повреждённым, и добавляется такое же сообщение об ошибке, как если бы проверка типа не была отложена.
  74. API: Обновлена подсистема правил доступа. Теперь проверка настроек доступа через подсистему правил доступа выполняется через IKrPermissionsManager.
  75. API: Любые классы расширений (наследники IExtension, которые регистрируются как RegisterExtension) могут реализовать интерфейс IAsyncInitializable для асинхронной инициализации, которая выполняется после вызова конструктора.
  76. API: Классы для взаимодействия с темами интерфейса в большинстве своём перенесены в пространство имён Tessa.Themes в сборке Tessa.dll, при этом объекты отвязаны от зависимостей WPF. Т.о. информацию по темам интерфейса можно анализировать на сервере, в т.ч. выполнять парсинг .json файлов темы, и получать значения цветов и кистей в виде Storage-объектов. Это используется для поддержки тем в web-клиенте.
  77. API: Добавлен низкоуровневый интерфейс ICardLockingStrategy, который может использоваться на сервере для управления блокировками на чтение и запись карточек в отрыве от транзакции ICardTransactionStrategy. Некорректное использование методов в этом интерфейсе может привести к “повисшим” блокировкам, используйте с осторожностью.
  78. API: При отправке писем можно указать новое свойство MailInfo.Format с указанием формата отправляемого сообщения. По умолчанию это Html (как и было ранее), но также можно указать PlainText для отправки в формате “простой текст”.
  79. API: Добавлен интерфейс IBarcodeConverter (Tessa.Extensions.Platform.Server.DocLoad), используя который можно изменить типы штрих-кодов для их поиска и обработки в соответствии с используемой библиотекой, если в расширении IDocLoadExtension вместо библиотеки ZXing была использована другая библиотека. Реализация по умолчанию доступна в классе Tessa.Extensions.Default.Server.DocLoad.BarcodeConverter с открытым кодом.
  80. API: Обновлены библиотеки: .NET Core 3.0.0, AvalonEdit 6.0.0, BarcodeLib 2.2.3, CsvHelper 13.0.0, HtmlAgilityPack 1.11.16, ITfoxtec.Identity.Saml2 4.0.2, NLog 4.6.8, Npgsql 4.1.1, Linq2DB 2.9.3, Microsoft.CodeAnalysis.CSharp 3.2.1, Swashbuckle.AspNetCore 5.0.0-rc4, UAParser 3.1.43, ZXing.Net 0.16.5.

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

  1. Исправлено отображение загруженных расширений в некоторых случаях, когда таблица отображалась пустой.
  2. В конструкторе бизнес-процессов исправлена проблема с зависанием блокировки экземпляра процесса, когда процесс обрабатывается успешно и завершается, но ошибка возникает после обработки процесса.
  3. В конструкторе бизнес-процессов исправлено падение действия Уведомление, если получатели уведомления не заданы.
  4. В конструкторе бизнес-процессов в действии “Отправить сигнал” исправлена ошибка, возникающая при отсутствии в настройках действия скриптов.
  5. В конструкторе бизнес-процессов исправлена ошибка завершения процесса, если завершение производится вызовом действия “Отправить сигнал”.
  6. В конструкторе бизнес-процессов исправлена ошибка, иногда возникающая при асинхронной обработке действия таймера.
  7. В конструкторе бизнес-процессов исправлена ошибка формирования уведомления о создании задания в ситуациях, когда идет последовательная отправка заданий.
  8. В конструкторе бизнес-процессов исправлена ошибка, из-за которой новый экземпляр узла сохранялся в ситуации, когда условие входа в узел не было выполнено.
  9. В конструкторе бизнес-процессов в плагине планировщика таймеров исправлена проблема, из-за которой после перезапуска Chronos некорректно обновлялись уже созданные таймеры.
  10. В конструкторе бизнес-процессов в плагине планировщика таймеров исправлена ошибка, возникающая когда дата срабатывания таймера близка или меньше текущей даты.
  11. Исправлено выполнение делегатов OpenCardOptions.CardModifierActionAsync и CardModelModifierActionAsync в вызовах editor.OpenCardAsync и uiHost.OpenCardAsync в desktop-клиенте. Ошибка появилась в сборке 3.3.1.
  12. Исправлен метод IFileBuilder.AddWithNotificationAsync при добавлении в контейнер, связанный с элементами управления файлов в UI. Ошибка появилась в сборке 3.3.1.
  13. Исправлено подчеркивание места с ошибкой во всех компиляторах системы, когда текст содержит знаки табуляции не только в начале строки.
  14. Исправлена замена гиперссылок в шаблоне файла Word внутри таблицы при использовании одного и того же плейсхолдера в тексте и ссылке.
  15. Исправлены наименования родительских подразделений при синхронизации в LDAP.
  16. Исправлен вход сотрудников типа “Пользователь LDAP” при наличии referrals.
  17. Исправлен SQL-запрос в представлении LinkedDocuments, запущенном на MSSQL, если при выполнении представления не заданы параметры фильтрации, связанные с постраничным отображением.
  18. Исправлена ошибка при сохранении карточки по нажатию на плитку в маршрутах, если сохранение не удалось.
  19. Исправлены проблемы, связанные с возможным зависанием процесса веб-сервиса при изменении конфигурации. Актуально только при установке на Linux. Ошибка присутствовала со сборки 3.0, но вероятность её возникновения значительно повысилась в 3.3.1.
  20. Исправлено выполнение этапа “Уведомление” в маршруте, если этап был создан в сборке платформы 3.3 или раньше. Ошибка появилась в сборке 3.3.1.
  21. Оптимизировано взаимодействие с пулом потоков в приложениях TessaAppManager, TessaClient, TessaAdmin. Это заметно повышает производительность TessaAppManager при взаимодействии с большим количеством серверов.
  22. Всплывающие сообщения об ошибках подключения в TessaAppManager теперь более компактные. Действительную причину ошибки можно увидеть как и раньше, кликнув на всплывающее сообщение или нажав на кнопку с восклицательным знаком под списком серверов.
  23. В web-клиенте исправлено добавление этапов в таблицу маршрута.
  24. В web-клиенте исправлены возможные проблемы при открытии карточки сотрудника с последующим закрытием.
  25. В web-клиенте исправлена отправка на ознакомление при нажатии на кнопку отправки в диалоге несколько раз подряд.
  26. В web-клиенте исправлен выбор значения в контроле “Список” с использованием клавиши “стрелка вниз” на клавиатуре.
  27. В web-клиенте исправлено указание доп. согласующих в этапах маршрутов, если выполнен клик по согласующему. При этом ожидается, что отображаются текущие доп. согласующие для выбранного согласующего.
  28. В web-клиенте исправлена ошибка в валидации контрола таблицы с замещениями.
  29. В web-клиенте исправлена ошибка при закрытии вкладки в мобильной форме, если при этом открыто меню переключения вкладок.
  30. В web-клиенте исправлены ссылки на статические ресурсы на странице при использовании нескольких экземпляров сервера приложений по разным базовым путям при установке на Linux (Nginx или Apache).
  31. В web-клиенте исправлено отображение некоторых представлений с иерархической группировкой, в т.ч. для примеров представлений Groups, GroupsWithHierarchy и Hierarchy.
  32. В web-клиенте исправлено сохранение настройки “Показать пустые папки” для рабочего места. Ранее настройка сбрасывалась каждый раз при переоткрытии web-клиента.
  33. В web-клиенте исправлены копирование и вставка узлов-папок, в т.ч. в ситуации, когда поисковые запросы были добавлены в папку непосредственно перед копированием.
  34. В web-клиенте исправлено сохранение карточки без файлов в серверных расширениях, где, несмотря на отсутствие файлов, в расширениях на сохранение было установлено context.ContentStorePending = true, и событие context.ContentStoreCompleted вызывалось, хотя не должно было.
  35. Оптимизировано изменение библиотек локализации и массовое создание типов карточек на СУБД PostgreSQL.
  36. Удаление библиотек локализации теперь выполняется корректно при отключённых внешних ключах на базе данных.
  37. Исправлен предпросмотр с расширениями в TessaAdmin для типов карточек из типового решения. В предыдущих версиях системы при предпросмотре не добавлялись блок контролов с состоянием документа и вкладка “Маршрут”.
  38. В контроле “Ссылка” исправлено лишнее срабатывание события “ValueSelected”, если в контроле после подстановки остался фокус и произошло сохранение карточки.
  39. В контролах “Список” и “Ссылка” теперь при сохранении карточки по Ctrl+S с неподтверждённым значением, выбранным из выпадающего списка, будет автоматически подтверждено выбранное значение.
  40. В контроле “Список” исправлено поведение в тех случаях, когда для поиска и вставки данных из представления использовались разные поля, а поле для поиска позволяло ввести более длинное значение, нежели подставляемое. Это приводило к тому, что значение не переносилось в карточку (отсутствовало в структуре Card).
  41. Исправлено поведение системы при одновременном изменении карточки с отличающейся версией разными пользователями. Из-за ошибки в логике хотя пользователю, изменившему неактуальную версию карточки, и выдавалось сообщение об ошибке, его изменения всё равно частично сохранялись в базе данных, “затирая” изменения другого пользователя. Ошибка появилась со сборки 2.6.
  42. Исправлено возможное зависание приложения TessaClient, если в результате закрытия вкладки с карточкой выводится окно с сообщениями валидации. Ошибка появилась в сборке 3.3.1.
  43. Исправлено выполнение расширений ICardUIExtension.Finalizing при принудительном закрытии вкладки с карточкой cardModel.CloseAsync(force: true), обычно это при закрытии окна приложения.
  44. Исправлено получение объекта типа CardDialogManager в клиентских расширениях TessaClient так, чтобы возвращался тот же объект, что и при получении ICardDialogManager.
  45. Исправлена отладка представлений в TessaAdmin, где текст запроса заканчивался на имя параметра.
  46. Исправлена стилизация ячеек #appearance в представлениях в TessaClient и TessaAdmin.
  47. Исправлены файлы IgnoredFiles.txt, перечисляющие файлы, исключаемые для публикации, для приложений TessaClient, TessaAdmin, TessaAppManager. Теперь при использовании утилиты для публикации tadmin PackageApp файлы с карточками *.jcard и *.card, оставшиеся после предыдущего вызова команды или экспорта карточек, больше не добавляются в карточку приложения для публикации.
  48. Исправлена сортировка в колонках представлений по умолчанию, которая была всегда по возрастанию для любых представлений, если сервер приложений запущен на Linux, а в качестве клиента используется TessaAdmin или TessaClient. Ошибке подвержены все сборки, начиная с 3.0.
  49. Исправлена ошибка в методе IBusinessCalendarService.AddWorkingQuantsToDateAsync при выполнении на базе данных Postgres. Ошибка появилась в сборке 3.3.
  50. При использовании метода в API web-клиента для предпросмотра файлов с конвертацией на сервере, значения из параметра “info” теперь передаются в запрос CardGetFileContentRequest.Info, что позволяет использовать этот метод совместно с расширениями на виртуальные файлы.
  51. Исправлено подставление неверной даты в параметр типа Date Detail-представления, если он ссылается на другой параметр из Master-представления.
  52. В маршрутах исправлен возврат после согласования на последнем этапе, в этом случае состояние документа меняется на “На доработке”, как это было до перехода к системе маршрутов в сборке 2.6. Ранее по ошибке устанавливалось состояние “Согласован”.
  53. В маршрутах исправлено выполнение процесса, если был задан некорректный запрос для вычисления SQL исполнителей, что приводило к переходу на следующий этап и “зависанию” исполненного задания.
  54. В маршрутах исправлено переключение на сателлит вторичного процесса, после исполнения этапа “Задача” во вторичном процессе.
  55. В маршрутах исправлена ошибка при одновременной отмене нескольких заданий во вторичном процессе.
  56. Исправлено открытие экземпляра бизнес-процесса, к которому относится ошибка, из карточки ошибки.
  57. При добавлении виртуальных файлов на сервере посредством метода-расширения IFileContainer.AddVirtualAsync исправлена передача параметров в свойстве RequestInfo для виртуальных файлов и их версий в клиентские запросы загрузки содержимого файла/версии, списка версий для файлов и списка подписей для версии.
  58. Исправлены ошибки вида “Could not find any resources appropriate for the specified culture or the neutral culture” при использовании версии библиотеки PdfSharp из пространства имён Tessa.PdfSharp (библиотека Tessa.dll). Актуально при использовании библиотеки в расширениях для функциональности, не предусмотренной в типовом решении.
  59. Исправлен поиск местоположения сборки методом assembly.GetLocationFileNameFromCodeBase(), в т.ч. для поиска файлов app.json и extensions.xml, при выполнении на платформе .NET Core в ОС Windows. Ошибка появлялась только при запуске из сетевой папки вида \\computer\folder. Исправление ранее было неактуально для типовых сценариев использования системы в связке .NET Framework + Windows, но начиная с этой сборки типовым сценарием является .NET Core + Windows.
  60. Исправлена ошибка при обновлении руководителя подразделения в синхронизации AD/LDAP.
  61. Исправлена ошибка при определении отключенного аккаунта в синхронизации AD/LDAP.
  62. Исправлена ошибка перерасчета динамических ролей, возникающая в некоторых ситуациях.
  63. Исправлено обновление значения в контролах “Список” и “Ссылка”, если они располагаются не на текущей открытой вкладке.
  64. Оптимизировано взаимодействие по сети в части параллельного выполнения запросов к серверу для desktop-приложений (TessaClient, TessaAdmin, TessaAppManager, tadmin).
  65. Исправлена поддержка на Linux для кодировок, основанных на кодовых страницах, таких как KOI8-R и Windows-1251.
  66. Исправлена отправка ежедневных уведомлений по заданиям для заместителей по взятым в работу заданиям, если они взяты в работу другим замещаемым сотрудником. Например, Иванов замещает Петрова, Васильев замещает Сидорова, все четыре сотрудника есть в роли, на которую назначено задание; Сидоров взял задание в работу; в тексте уведомления это задание должны увидеть только Сидоров и Васильев, но его также видели Иванов и Петров.
  67. Плитка “Печать штрих-кода” больше не отображается для ещё не сохранённых карточек.
  68. Исправлена ошибка при выборе значения из представления для контролов карточки “Ссылка” и “Список”, если в нем включен ручной ввод, не указан алиас представления и до этого был вручную введен текст.
  69. Если на вкладке карточки есть контрол “Список файлов”, но отсутствует стандартная область предпросмотра (поскольку “Список файлов” связан с контролом “Предпросмотр” или область предпросмотра скрыта флажком в настройках вкладки в TessaAdmin или в расширении), то пункты контекстного меню “Показать область предпросмотра” и “Скрыть область предпросмотра” не отображаются для этого контрола. Ранее пункты меню отображались, но при их использовании возникала ошибка.
  70. Исправлен возврат полей строки представления в верхнем регистре при использовании IUIHost.ShowViewsDialog. В случаях, если в представлении использовалось расширение CreateCardExtension, с его помощью создавалась карточки и после этого нажать на кнопку в тулбаре “Сохранить и выбрать”, SelectedRow содержал в себе поля в верхнем регистре.
  71. Исправлена выгрузка представления в HTML, если в колонке appearance SQL-запрос возвращает NULL.
  72. Исправлено поведение контрола “Ссылка” при открытии выпадающего списка с последующим его закрытием, без выбора элемента (клик в пустой области), если в поле контрола уже было введено некорректное значение.
  73. Исправлена ошибка исправления типов карточек для расширений “Запрет изменения” и “Очистка связанных полей”, удаляющая эти расширения. Она проявлялась в том случае, если в поле “Отслеживаемая колонка” (“Очистка связанных полей”) или “Поле” (“Запрет изменения”) указывалось комплексное поле.
  74. Исправлена ошибка в приложении TessaClient, возникающая, если открыть любое подмножество в отдельной вкладке (например, Ctrl+клик по узлу в дереве), а затем добавить или изменить параметр фильтрации, или обновить представление, чтобы изменилось количество выводимых строк.
  75. Исправлено скрытие выпадающего списка в контроле “Список” по кнопке “Esc”, если список был вызван по кнопке выпадающего списка или, если фокус уже находится внутри списка.
  76. Исправлена ошибка в PostgreSQL-версии функции CalendarGetLastQuantStart. Теперь для расчёта следующего дня не берётся входящее значение даты, поведение теперь совпадает с MSSQL-версией функции - берётся результат работы функции CalendarGetFirstQuantStart.
  77. Диалог валидации с ошибками и другими сообщениями теперь всегда отображается как окно на панели задач.
  78. Исправлено обращение к кэшу контекстных ролей ICardContextRoleCache из разных потоков.
  79. Исправлено обращение к dynamic-свойствам карточек из разных потоков.
  80. Исправлен метод GetNewCard() в скриптах маршрутов.
  81. Исправлена всплывающая подсказка на кнопке возврата в основную карточку из карточки задачи, которая отображается в тулбаре.
  82. Исправлены ситуации, когда после закрытия сплэша мог переключаться фокус с текущего диалогового окна на другое окно.
  83. Исправлен парсинг методов REST-запросов (разрабатываемых на проектах), которые получают строку в теле запросе в формате text/plain с указанием кодировки charset. Ранее можно было использовать только строки без указания кодировки.
  84. Кэш локализации на сервере (в т.ч. в плагинах Chronos) теперь всегда инициализируется в отдельном соединении с базой данных, поэтому исправлены ошибки, связанные с невозможностью инициализировать кэш при выполнении другого запроса в том же соединении, например, при попытке локализовать сообщение об ошибке в процессе чтения строк в открытом DataReader.
  85. В контроле “Список” исправлено выделение элементов и перемещение курсора по клику мышки, если имеется не до конца введённый элемент.
  86. Для приложения TessaClient исправлено подключение к прокси-серверу, с использованием аутентификации или без неё. Проблема появилась со сборки 3.0.
  87. Если файл открыт на редактирование, в открытом приложении файл блокируется для чтения (например, в приложении Word), то при сохранении карточки будет выдаваться предупреждение пользователю, чтобы он закрыл приложение, поскольку в нём могут быть несохранённые данные.
  88. Если добавление строки локализации отменено, то добавленная строка удаляется.
  89. Исправлено использование API FileSchemeService, которое при сохранении схемы на файловые папки могло приводить к созданию файла Partitions\Default\Default.tsp в текущей папке.
  90. В TessaClient и TessaAdmin исправлено отображение параметров фильтрации представлений, для которых указаны типы данных sbyte, short, ushort, uint, ulong.
  91. Оптимизированы серверные компоненты (веб-сервис web, сервис Chronos, утилита tadmin) благодаря переходу на платформу .NET Core 3.0 и использованию технологии ReadyToRun для ускорения запуска. Дополнительно веб-сервис для Windows при запуске на IIS работает в InProcess-режиме, что также оптимизирует время его запуска, время обработки запросов и потребляемую память.
  92. Исправлена ошибка импорта схемы данных в Postgres, из-за которой для колонок с типами string или binary не обрезалось имя констрейнта, проверяющего длину значения, из-за чего могла возникнуть ошибка дублирования имен объектов в базе данных Postgres.
  93. Исправлена ошибка в команде миграции базы данных tadmin MigrateDatabase при выполнении миграции на СУБД PostgreSQL 12. Неактуально для более ранних версий PostgreSQL.
  94. Исправлены ошибки в определении настроек SAML из конфигурационного файла app.json.
  95. В логе Chronos исправлено предупреждение “Attribute ‘NoticeMailer.SmtpPickupDirectoryLocation’ isn’t found”, возникающее в случае, если соответствующая настройка равна null и для отправки почты установлен режим SMTP. Теперь значения null и пустая строка идентичны по поведению и не приводят к предупреждениям.
  96. Для веб-сервиса web исправлены проблемы, связанные с отсутствием типовых сборок расширений или с их расположением в других папках.
  97. Исправлено отображение вложенного исключения для класса исключений LdapException и его наследников, которые используются для ошибок входа пользователей LDAP и пользователей Windows (для включённой аутентификации Kerberos).
  98. В диалоге “Мои замещения” для уже сохранённой строки в таблице замещений исправлены ошибки при добавлении и удалении ролей или заместителей из списков.
  99. Если в настройках типа карточки в типовом решении или для типа документа включено автосогласование, но не указана настройка “Завершать при привешении срока более чем”, то теперь выводится понятное сообщение об ошибке.
  100. Исправлено поведение CardTransactionExtendedStrategy, когда методы этого объекта вызываются вне запроса к компонентам CardStoreExtendedComponent и CardDeleteExtendedComponent, например, после расширений AfterRequest в событии context.ContentStoreCompleted.
  101. Исправлено автосогласование для заданий, назначенных на роль, в которую включено более одного сотрудника.
  102. Исправлено добавление автоикрементных колонок в схему данных для СУБД PostgreSQL, если на момент добавления колонки таблица уже существует.
Back to top