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

Версия 2.5.2 (12.12.2017)

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

  1. Изменены представления: ActionHistory, MyAcquaintanceHistory, ProtocolReportsWithPhoto (добавлено).
  2. Изменены таблицы: Outbox, ProtocolReports, RoleDeputies, UserSettingsVirtual.
  3. Изменены типы карточек: GeneralUserSettings, Protocol.
  4. Изменены карточки: Protocol of the meeting, Protocol of the meeting (Excel).
  5. Изменены библиотеки локализации.
  6. Перед обновлением схемы выполните скрипт Fixes/Migration-2.5.2-pre.sql, а после обновления скрипт Fixes/Migration-2.5.2.sql.
  7. Обновите конфигурационный файл app.json в папке с веб-сервисами.
  8. Для созданных в рамках проекта плейсхолдеров можно включить поддержку форматтеров, доработав ваш метод Replace(context, placeholder), который должен возвращать не new PlaceholderValue(…), а результат вызова метода context.FormatText(…) или context.FormatField(…).
  9. Для работы исправления, позволяющего запустить Tessa Applications при наличии недоступного для загрузки обновления, требуется переустановить Tessa Applications через msi-файл. Этот шаг можно пропустить, если это исправление не является важным для вашей инсталляции.
  10. Методы IUIHost.CreateCard(…) и OpenCard(…) были заменены на аналогичные методы CreateCardAsync(…) и OpenCardAsync(…), которые возвращают асинхронную задачу. Во всех местах использований этих методов, где необходимо дождаться результата вызова, достаточно добавить конструкцию “await”, а ваш метод отметить ключевым словом “async”. Также рекомендуется выполнять вызов в блоке TessaSplash.Create(…), чтобы индицировать для пользователя, что сейчас выполняется операция.
  11. Убедитесь, что ваши расширения CardUIExtension учитывают, что в платформе открытие и создание карточек теперь выполняется асинхронно. Всё взаимодействие с UI напрямую (не через ViewModel) к средствам WPF (например, отображение кастомных диалоговых окон) должно выполняться внутри блока DispatcherHelper.InvokeInUI(() => { /* здесь ваш код*/ }).
  12. В связи с обновлённым API номеров класс DocumentNumberDirector был доработан. В его типовом варианте есть ряд изменений, без которых система номеров и контрол “Нумератор” не будут работать корректно. Пожалуйста, убедитесь, что при изменении класса DocumentNumberDirector в проектном решении или при создании его наследника все изменения из обновлённого DocumentNumberDirector были учтены. Это касается его методов GetCoreForKrState, IsAvailableCore, OnReservingNumberFromControl, OnReleasingNumberFromControl.
  13. Метод ICardStreamServerRepository.GetFileContent() теперь возвращает объект ICardFileContentResult, содержащий как ответ на запрос Response, так и содержимое файла GetStreamOrThrow().

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

  1. Приложения TessaClient и TessaAdmin теперь запускаются как 64-битные на 64-битных ОС и при необходимости могут задействовать всю доступную память (без ограничений, связанных с 32-битными процессами), например, при создании документов PDF. Разрядность текущего процесса можно узнать в окне “О программе” для TessaClient или на вкладке “Информация” в Tessa Applications и TessaAdmin: “ИмяПриложения x64” для 64-битного или “ИмяПриложения” для 32-битного.
  2. Приложение TessaClient доступно в виде TessaClient32.exe (в той же папке), которое будет 32-битным даже на 64-битных ОС. Это актуально только для экономии потребляемой памяти, например, когда есть терминальный сервер, на котором запускается множество приложений от разных пользователей. Пример публикации TessaClient в режиме “всегда 32-разрядный” доступен в сборке в скрипте publish_client_32bit_only_demo.bat. В большинстве случаев, когда у вас нет 64-битных ОС или же нет необходимости запускать TessaClient как 32-битный на 64-битных ОС, не используйте этот командный файл и выполняйте публикацию, как раньше, файлом publish_client_demo.bat.
  3. Взаимодействие со сканерами теперь выполняется в отдельном 32-битном процессе. Это гарантирует, что независимо от ошибок, возникших в драйвере сканера, приложение TessaClient продолжит работу.
  4. В web-клиенте добавлены: создание шаблонов карточек; функции контрола “Нумератор” в выпадающем меню; переход в карточку роли, на которую отправлено задание; редактирование административных настроек через плитку “Настройки” в правой панели; восстановление удалённых карточек; удаление операций в представлении “Активные операции”; вывод версии платформы в окне “О программе”.
  5. В web-клиенте сброс клиентского кэша при использовании Service Worker теперь выполняется не только при выходе из системы logout, но и при изменении версии конфигурации на сервере. Версия изменяется автоматически при любых настройках в TessaAdmin, в карточках настроек с флажком “загружать при инициализации”, и в карточках типов документов (для типового решения). Следует учитывать, что при изменении настроек через приложения TessaClient и TessaAdmin может потребоваться перезапустить пул приложений веб-клиента (с которым эти настройки не синхронизируются автоматически). Также при изменении настроек файловых хранилищ не забудьте перезапустить Chronos.
  6. Добавлены плейсхолдеры: {webCardLink}, предоставляющий ссылку на текущую карточку в web-клиенте, и {webAddress}, предоставляющий базовый адрес web-клиента из настроек (заканчивающийся на / ). Для успешной работы этих плейсхолдеров адрес web-клиента должен быть заполнен в карточке “Настройки сервера”.
  7. Для шаблонов файлов в плейсхолдерах добавлены специальные функции - форматтеры, позволяющие модифицировать текст или вместо текста вывести изображение, в т.ч. штрих-код или QR-код. Они работают для форматирования всех стандартных плейсхолдеров. Описание форматтеров доступно в руководстве администратора. По умолчанию доступны форматтеры #cardLink, #webCardLink, #format, #file, #text, #image, #barcode, #qrcode.
  8. Для шаблонов файлов Excel теперь заменяются плейсхолдеры в объектах “Надпись”.
  9. Для шаблонов файлов добавлена возможность указывать плейсхолдеры прямо в имени файла внутри карточки шаблона. Например: “Договор-{f:DocumentCommonInfo.FullNumber}.docx” или “{*alias}.xlsx”.
  10. Для карточки “Протокол” в файловые шаблоны в таблицу с докладами добавлена колонка с фотографией сотрудника, если она присутствует. Фотография должна быть прикреплена к карточке сотрудника, где имя файла начинается с “photo”. Например, “photo1.png”. Имя файла настраивается в представлении ProtocolReportsWithPhoto.
  11. В приложении Tessa Applications в списке приложений добавлен пункт контекстного меню для сворачивания/разворачивания групп приложений. Также список серверов теперь представлен в виде вертикального списка, что удобно при большом количестве серверов.
  12. По умолчанию предпросмотр через внешнюю программу (Word, Excel и др.) будет разрешён одновременно только для одной вкладки карточки, т.к. предпросмотр нескольких файлов через внешние приложения может привести к ошибкам. Предпросмотр для другой вкладки будет автоматически сброшен при активации предпросмотра на новой вкладке, если для обеих вкладок выполняется предпросмотр через внешнее приложение. Это не затрагивает встроенный предпросмотр (в т.ч. для файлов PDF), а также предпросмотр через веб-браузер. В диалоге “Мои настройки” добавлена настройка “Разрешить предпросмотр через несколько внешних программ”, чтобы восстановить прежнее поведение для текущего пользователя.
  13. В настройки маппинга для контролов “Ссылка”, “Список” и “Список файлов” добавлен флажок “Не добавлять параметр для NULL”, при указании которого параметр не указывается при выполнении представления, если соответствующее поле карточки равно NULL (не применимо для маппинга, не связанного с полями карточек, например, для констант). По умолчанию (когда флажок сброшен) параметр добавляется как “равен пусто”.
  14. В файле app.json добавлены настройки SAML.EmailClaimType или SAML.NameClaimType для того, чтобы указать поля “email” и “имя сотрудника”, получаемые при логине в web-клиент посредством ADFS. Имя будет использоваться при автоматическом создании сотрудника, который отсутствовал в Tessa на момент входа.
  15. В области предпросмотра файла добавлена кнопка (рядом с другими кнопками управления областью предпросмотра), которая выполняет повторное открытие файла на предпросмотр в случае, если при его открытии возникли проблемы. Кнопка доступна только в случае, когда предпросмотр загружается или уже загружен, но не отображается.
  16. Такие операции, как создание и открытие карточек, загрузка подписей для версии файла и др. теперь выполняются асинхронно и не блокируют интерфейс UI даже в той ситуации, если обращение к серверу выполняется длительное время (например, сервер загружен и отвечает с задержкой). Пользователь сможет переключаться между другими вкладками и выполнять действия.
  17. Вкладка карточки, в которой выполняется асинхронная операция, теперь отображается с индикацией загрузки в заголовке, по аналогии со вкладками рабочих мест.
  18. API: Для плейсхолдеров добавлена поддержка форматтеров, которые позволяют отформатировать значение независимо от логики работы самого плейсхолдера, например, транслитерировать текст, полученный из поля карточки, из представления или каким-то другим образом. Пример написания форматтера в руководстве разработчика.
  19. API: В объект ListStorage<T> добавлены методы AddValue и InsertValue, полезные при наполнении списка скалярными значениями, например, для ListStorage<Guid>.
  20. API: В Workflow API добавлены перегружаемые методы WorkflowManager.CreateProcessInfoCore, WorkflowManager.CreateTaskInfoCore и DefaultWorkflowQueueProcessor.CreateSignalInfoCore, которые позволяют переопределить создание экземпляров для реализаций интерфейсов IWorkflowProcessInfo, IWorkflowTaskInfo и IWorkflowSignalInfo.
  21. API: В контролах “Ссылка” и “Список” добавлено событие ValueDeleted, которое срабатывает при удалении каждой ссылки (при удалении двух ссылок событие будет вызвано дважды для каждой из них).
  22. API: При отправке писем в объекте MailInfo помимо прикрепляемых файлов теперь можно указать дополнительных получателей письма в основном списке, а также получателей CC и BCC. Для этого используйте метод MailInfo.AddRecipient() и коллекцию Recipients. Также для основного получателя письма помимо email (из таблицы Outbox) можно указать отображаемое имя в поле MainRecipientDisplayName. Пример указания MailInfo для уведомлений есть в классе TaskNotificationSender (Tessa.Extensions.Default.Server.Notices).
  23. API: Объект Validator для удобства использования теперь реализует интерфейс IDisposable, где метод Dispose() вызывает End(). Это позволяет выстраивать цепочки валидации так: using (var validator = context.ValidationResult.BeginSequence()) { validator.ErrorDetails(“text”, “details”); }
  24. API: Добавлены статические методы ValidationResult.Aggregate(), а также возможность объединять результаты ValidationResult оператором “+”.
  25. API: Для отображения всплывающих уведомлений добавлен параметр “textAlignment” в метод-расширение INotificationUIManager.ShowText().
  26. API: Для временных файлов ITempFile добавлен метод Rename(), который позволяет переименовать файл в пределах той же папки.
  27. API: Добавлен объект IFilePreviewManager, позволяющий управлять доступностью предпросмотра для каждого файла. По умолчанию доступность определяется в карточке “Настройки сервера” в поле со списком расширений файлов, предпросмотр которых запрещён. В Unity можно зарегистрировать класс-наследник FilePreviewManager по интерфейсу IFilePreviewManager, указав любую логику запретов и разрешений в методе PreviewIsEnabledCore (при этом доступен контекст карточки UIContext.Current).
  28. API: В API номеров события ReservingNumberFromControl и ReleasingNumberFromControl теперь выполняются как на клиенте, так и на сервере, причём клиентская реализация вызывает серверную. Бизнес-логика, связанная с созданием номера, с необходимостью его зарезервировать и со способом его освобождения, теперь указывается на сервере. Серверные расширения будут выполняться и для desktop-клиента, и для web-клиента. Это также позволяет использовать сложные плейсхолдеры для формата номера и формата последовательности, для которых гарантирован прямой доступ к базе данных (для выполнения сложных выборок или представлений).
  29. API: Добавлены методы IUIHost.OpenCardAsync и CreateCardAsync, позволяющие открывать и создавать карточки асинхронно, не блокируя UI. Их удобно вызывать с ключевым словом await, например: using (TessaSplash.Create(TessaSplashMessage.OpeningCard)) { await uiHost.OpenCardAsync(cardID); }.
  30. API: Добавлены методы-расширения IFileManager.EnsureContentDownloadedAsync(), EnsureContentDownloadedInUIAsync(), EnsureSignaturesLoadedAsync(), позволяющие выполнять загрузку файлов и версий файлов асинхронно. Рекомендуется вызывать их из потока UI, используя конструкцию await.
  31. API: Для интерфейсов работы с карточками ICardRepository, ICardFileManager, ICardEditorModel и др. добавлены методы-расширения для асинхронности. Например, асинхронно загрузить карточку из UI можно таким образом: var response = await cardRepository.GetAsync(request). Аналогичным образом можно ожидать данных от представления: await view.GetDataAsync(request).
  32. API: Многие коллекции и хэш-таблицы в API платформы теперь реализуют интерфейсы IReadOnlyCollection<T>, IReadOnlyList<T> и IReadOnlyDictionary<TKey,TValue>.
  33. API: Обновлены библиотеки: Linq2DB 1.10.1, Microsoft.Exchange.WebServices.NETStandard 1.1.1.

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

  1. Добавлена запись в лог для возможных ошибок при инициализации кэша типов карточек в типовом решении KrTypesCache. При наличии таких ошибок система будет считать, что отсутствуют типы, которые входят в типовое решение.
  2. Оптимизирована загрузка виртуальной задачи с информацией для инициатора по типовому процессу согласования.
  3. Исправлено возможное зависание TessaClient при одиночном клике по файлу для его открытия на предпросмотр, если файл в настоящий момент находится в процессе загрузки (например, после двойного клика по файлу или после его перетаскивания drag&drop).
  4. В web-клиенте исправлено множество ошибок, в т.ч. некоторые из них: проверка ЭЦП для непоследних версий файлов; название по умолчанию для вкладки с карточкой, у которой пустой Digest (например, не задан номер); отображение кнопки переключения вкладок; отображение выпадающего календаря в контроле с датой после увеличения размера шрифта; отображение кнопки выбора сабсетов при некоторых размерах окна; два запроса вместо одного на сохранение карточки при закрытии вкладки для Firefox; видимость пункта “использовать как текущую” в контекстном меню на версии виртуального файла; ошибка при попытке перетащить папку вместо файлов как drag&drop в карточку; корректное сообщение об ошибке при добавлении файлов в карточку размером больше 2 Гб; локализован ряд сообщений, в т.ч. сразу после смены языка интерфейса; дублирование списка фонов после выхода и повторного входа в систему.
  5. В файловых шаблонах Word исправлено использование объектов “Надпись” внутри таблиц, содержащих плейсхолдеры.
  6. Исправлен запуск типового процесса согласования. Теперь инициатор согласования корректно заполняется или остаётся без изменений.
  7. Загрузка карточек настроек теперь выполняется в отдельных соединениях с базой данных, независимо от того, в какой момент на сервере произошла необходимость получить значения из кэша. Это предотвращает потенциальные длительные блокировки и дедлоки.
  8. Исправлено завершение дочерних заданий комментирования при отзыве доп. согласования при условии, что у текущего пользователя может не быть прав на эти задания.
  9. В настройках контролов “Ссылка”, “Список” и “Список файлов” исправлена отмена при сохранении маппинга. Также закрытие окна маппинга средней кнопкой теперь подтверждает настройки как при нажатии “ОК”.
  10. В настройках маппинга в контролах “Ссылка”, “Список” и “Список файлов” исправлен выбор колонки в поле карточки в ситуации, когда колонка расположена внутри комплексной и комплексная колонка больше не добавлена в тип карточки, но присутствует в схеме данных.
  11. При исправлении типов карточек теперь будет учитываться, что в маппинге контролов “Ссылка”, “Список” и “Список файлов” могут быть указаны секции и колонки, отсутствующие в типе карточки или в схеме данных.
  12. Исправлена замена плейсхолдеров в документе Excel, в котором нет ни одной строки, вписанной в ячейки (например, есть только объекты “Надпись”).
  13. Исправлено отображение ошибок в контролах “Ссылка” и “Список” в таких ситуациях, как некорректно настроенное представление.
  14. Исправлена вставка пользователей в роли для настройки SAML.AddNewUserToRoles.
  15. Исправлена локализация сообщений во всплывающих уведомлениях при отключенных уведомлениях в настройках, когда вместо уведомления выводится окно сообщений.
  16. Исправлена отрисовка боковых панелей таким образом, чтобы они, по возможности, не выходили за рабочую область, в т.ч. не перекрывали панель задач.
  17. Если область предпросмотра скрыта, то при выборе файла его предпросмотр не загружается и не занимает ресурсы.
  18. Исправлены таймауты SQL-команды на ожидание взятия и снятия блокировок для карточек. Ранее были указаны слишком большие таймауты. Это относится именно к таймаутам SQL (когда SQL Server не отвечает), а не к таймаутам на ожидание других пользователей, читающих или изменяющих карточку.
  19. Исправлено копирование файлов с заданным ExternalSource на сервере, что также исправило создание шаблонов из карточек посредством ICardStreamServerRepository (вместо ICardRepository).
  20. Исправлен предпросмотр текстовых файлов Unicode с заданным BOM. При наличии в файле байтового маркера BOM его содержимое отображается в соответствующей кодировке Unicode, в противном случае действует прежнее поведение с текущей кодовой страницей, указанной в учётной записи Windows. Это исправление затрагивает как desktop-клиент, так и web-клиент.
  21. Исправлена одновременная отправка множества почтовых сообщений через Microsoft Exchange. Ошибка появилась в 2.5.0.
  22. Исправлена сортировка по номеру в представлении “Мне на ознакомление”. Ошибка появилась в 2.5.0.
  23. В файловых шаблонах исправлено корректирование значений, полученных из базы данных или представления, для некоторых из плейсхолдеров. Это относится к загрузке значений DBNull как null, и к DateTime, у которого должен быть тип UTC.
  24. Для контрола “Ссылка” событие ValueSelected больше не срабатывает в ситуации, когда пользователь нажал на кнопку с выпадающим списком или открыл его с клавиатуры (кнопки вверх/вниз), а потом тут же закрыл выпадающий список, не сделав изменений.
  25. Восстановлена возможность указывать символ “дефис” в качестве алиаса сервера в Tessa Applications.
  26. Приложения TokenEditor и tadmin.exe в режиме замены токена больше не выводят сообщения о невозможности заменить токен в файлах app.json, в которых отсутствует токен, но присутствует “.include”.
  27. Если на сервере возникла ошибка в процессе скачивания обновлений для приложения Tessa Applications, то на клиенте ошибка теперь корректно обрабатывается. При невозможности скачать обновление будет запущена предыдущая версия Tessa Applications. Для загрузки других приложений по-прежнему гарантируется, что будет запущена их обновлённая версия, или же приложение не будет запущено вовсе. Для работы этого исправления требуется переустановить Tessa Applications через msi-файл.
  28. Оптимизировано представление ActionHistory.
  29. Исправлена ситуация, в которой номер документа мог оставаться зарезервированным, если он был выделен автоматически при создании карточки, далее через элемент управления номер был освобождён (или заменён на ручной номер), после чего вкладка была закрыта без сохранения (в т.ч. при выходе из приложения).
  30. Исправлено удаление карточки из корзины (из представления “Удалённые карточки”) в ситуации, когда сериализованная карточка имеет некорректную структуру, например, она была создана в предшествующей версии платформы, в которой не было каких-то системных полей. Удаление карточки из корзины теперь в большинстве ошибочных ситуаций будет успешным, а ошибки будут выведены в лог как предупреждения.
  31. Оптимизирована загрузка карточек с заданиями и работа представления “Мои задания” при наличии большого количества замещений в системе. Для этого добавлен индекс на RoleDeputies (ID, DeputyID, DeputizedID, IsActive).
  32. При выборке писем из таблицы Outbox для их дальнейшей отправки получателям теперь загружаются только те письма, которые могут быть отправлены с учётом времени, которое прошло с предыдущей неудачной отправки. Это позволяет работать отправке писем даже в том случае, если в базе данных большое количество писем (свыше 1000) не отправляются по причине ошибки.
  33. Исправлена ошибка для шаблона файла Excel, когда в одной ячейке находится и плейсхолдер, и другой текст с отличными настройками форматирования (например, плейсхолдер с подчёркиванием, а текст без него). Тогда при замене плейсхолдера на пустую строку будет сгенерирован документ с ошибкой, из-за которого Excel предложит восстановить документ. После исправления документ генерируется без ошибок в описанной ситуации.
  34. Исправлено отображение сообщений об ошибках загрузки содержимого файла или версии файла при открытии по ссылке tessa://, а также при загрузке подписей для версии файла в процессе их отображения или проверки.
  35. Оптимизировано открытие окна визуализатора для типового процесса согласования.
  36. Исправлено пробрасывание текущего контекста UIContext.Current для некоторых специализированных сценариев открытия карточек, например, для открытия ролей из информации по заданию, для “Моих замещений”, для карточек шаблонов и др.
  37. Исправлено сохранение проектного номера для карточки, которая была создана как копия или по шаблону из документа в состоянии “Зарегистрирован”. Это приводило к очистке номера карточки, если её сначала зарегистрировать, а потом отменить регистрацию.
Back to top