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

Патч 4.1.3 (02.11.2025)

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

  1. В конструкторе бизнес-процессов в действие “Подписание” и в одноимённый этап в маршрутах добавлена возможность отключить диалог добавления комментария ЭП при подписании файлов ЭП. Подробнее в руководстве разработчика и руководстве администратора.
  2. При отправке заданий в рамках действия конструктора процессов и этапа маршрутов “Процесс согласования” добавлена отправка уведомлений о задании.
  3. В папку сборки Source добавлены скрипты ConfigDiff-Base.bat и ConfigDiff-Commit.bat, которые возможно использовать для определения отличий в папке конфигурации при разработке проектного решения. Для использования также обновите файл .gitignore, в который добавлена строка /Configuration.Base*, и создайте пустой файл Source/ReleaseNotes.txt.
  4. Для форумов и обсуждений к уведомлениям о сообщениях теперь добавляются вложения из этих сообщений.
  5. В токене сессии, передаваемом между сервером и клиентом, теперь не указывается идентификатор приложения ApplicationID. Для некоторых строк в истории действий приложение будет указано как “не задано”, когда сессия ещё не открыта.
  6. Добавлен пример расширения для изменения автора созданного заместителем файла в новой системе замещения при наличии активного задания.
  7. В web-клиенте заместители владельцев файлов и версий при работе с файлами имеют теперь те же права, что и владельцы. Доработка касается как основных, так и расширенных прав доступа.
  8. При добавлении в карточку файла, созданного по шаблону через кнопки “Создать файл по шаблону” и “Заменить файл по шаблону”, а также при добавлении через действие конструктора бизнес-процессов или этап маршрута, в опции файла по ключу FileTemplateID записывается идентификатор шаблона файла.

Консольная утилита tadmin

  1. Добавлена команда ConfigDiff для сравнения двух папок Configuration с выводом результатов в текстовом формате ReleaseNotes или в JSON формате.
  2. Добавлен скрипт ExtractNotesBlock, извлекающий первый блок с заметками из файла в формате ReleaseNotes (т.е. информацию по последней описанной версии). Подробнее по использованию скрипта см. в разделе документации Выполнить скрипты .NET с указанными именами.
  3. Добавлена команда RecalcAcl для пересчёта правил контроля доступа (ACL).

Новые версии библиотек

  1. .NET 8.0.21
  2. DynamicExpresso.Core 2.19.3
  3. HtmlAgilityPack 1.12.4
  4. iTextSharp.LGPLv2.Core 3.7.7
  5. ITfoxtec.Identity.Saml2.MvcCore 4.16.2
  6. Kerberos.NET 4.6.131
  7. linq2db 5.4.1.9
  8. MailKit 4.14.1
  9. Microsoft.Data.SqlClient 6.1.2
  10. Microsoft.IdentityModel.Protocols.OpenIdConnect 8.14.0
  11. Microsoft.NET.Test.Sdk 18.0.0
  12. Newtonsoft.Json 13.0.4
  13. Npgsql 8.0.8
  14. NUnit 4.4.0
  15. NUnit3TestAdapter 5.2.0
  16. OpenTelemetry 1.13.1
  17. PDFsharp-wpf 6.2.2
  18. Quartz 3.15.1
  19. SkiaSharp 3.119.1
  20. SkiaSharp.QrCode 0.9.0
  21. StackExchange.Redis 2.9.32
  22. Swashbuckle.AspNetCore 9.0.6
  23. Swashbuckle.AspNetCore.Newtonsoft 9.0.6
  24. ZXing 0.16.11

Изменения API

  1. В web-клиенте в StorageAccessor добавлены методы set<Type>IfNotEmpty, set<Type>IfNotDefault, с помощью которых можно исключить запись значений по умолчанию в IStorage.
  2. При создании активных операций теперь для них всегда рассчитывается хеш-значение Hash, которое по умолчанию учитывает тип операции TypeID, связанный объект ObjectID и содержимое запроса Request. Ранее хеш рассчитывался только при указании запроса Request и учитывал только содержимое запроса.
  3. При создании активных операций можно указать опциональный идентификатор ObjectID для объекта, связанного с этой операцией (обычно это идентификатор карточки или файла).
  4. В web-клиенте была обновлена версия cadesplugin_api.js для работы “КриптоПРО” плагина.
  5. Добавлен базовый класс BasicConsoleScriptBase для определения скрипта консольной утилиты tadmin, который содержит произвольный контейнер Unity, настраиваемый в методе RegisterCoreAsync. Ранее для таких скриптов рекомендовалось наследоваться от базового класса ConsoleScriptBase. Пример доступен в разделе Создание скриптов для консольной команды tadmin Script.
  6. Для разработки скриптов консольной утилиты tadmin, наследуемых от ServerConsoleScriptBase, ClientConsoleScriptBase или BasicConsoleScriptBase, добавлено свойство ConfigurationManager, через которое можно получить доступ к содержимому конфигурационного файла утилиты.
  7. Изменены сигнатуры методов интерфейса ILdapContext и сигнатура метода ILdapProvider.GetConnectionAsync: при работе со набором LDAP-соединений, хранящихся в контексте LDAP, и при получении LDAP-соединения порт для соединения передается теперь в методы отдельным параметром наравне с URL.
  8. Для объектов Card, CardFile, CardTask и CardTaskHistoryItem свойства TypeName и TypeCaption более не являются обязательными в структуре объекта storage. Например, их можно удалить из файла экспортированной карточки .jcard. По умолчанию эти свойства по-прежнему заполняются.
  9. В web-клиенте в контроле “Дата и время” добавлено свойство forceTimezone — при включении оно учитывает часовой пояс пользователя и отображает дату с учётом локального времени.
  10. Доработан объект CardFileContentSource, используемый в CardFile.ExternalSource для предоставления контента у файла карточки, ссылающегося на контент другого файла. Свойство CardTypeID теперь nullable, его можно не указывать. Добавлено свойство FileTypeName, которое позволяет указать имя файла для реализации ссылок на контент виртуальных файлов со стороны физических файлов. Добавлен признак StoreViaContentRequest, посредством которого можно указать, что при сохранении физического файла с указанным ExternalSource сервер будет выполнять запрос на получение содержимого файла с расширениями (при этом также будет использоваться информация из свойства CardFile.RequestInfo, а свойства StoreSource и OriginalVersionRowID игнорируются). Свойства CardID, FileID, VersionRowID по умолчанию Guid.Empty, их можно не указывать при заданном признаке StoreViaContentRequest.
  11. В интерфейс контекста проверки доступа к файлам IKrPermissionsFilesManagerContext добавлены поля Card, CardId и DocTypeId для хранения информации о карточке, к которой прикреплен файл.
  12. В web-клиенте для модели TableGridViewModelBase добавлено булевое свойство blockScroll, позволяющее заблокировать скроллинг таблицы.

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

  1. В TessaAdmin исправлено использование настроек форматирования, отличных от английского языка. Если у пользователя указаны, например, настройки форматирования для русской культуры, то все даты и числа теперь будут выводиться с применением этих настроек, в т.ч. в представлениях и рабочих местах. Исправление относится только к приложению TessaAdmin, т.е. для TessaClient и web-клиента настройки уже использовались актуальные.
  2. В web-клиенте исправлена ошибка, которая могла возникать при обновлении карточки, если на нескольких её вкладках присутствовал контрол “Текст с форматированием”.
  3. В web-клиенте исправлена ошибка, приводящая к появлению полосы прокрутки в текстовых контролах при некоторых масштабах.
  4. В web-клиенте исправлена ошибка, в результате которой информация в диалоговом окне “О программе” могла обрезаться на некоторых разрешениях и масштабах экранов.
  5. В web-клиенте исправлена ошибка, в результате которой карточка “Управление процессом согласования” могла отображаться в представлениях без локализации.
  6. В web-клиенте исправлена ошибка, в результате которой значение параметра фильтрации “Имя пользователя” представления “Ошибки” могло отображаться без локализации.
  7. Улучшен текст сообщения об ошибке в случае десериализации JSON-объекта, содержащего дублирующие ключи, посредством TessaSerializer (нетипизированный JSON) или TypedJsonConverter (типизированный JSON).
  8. В web-клиенте исправлено открытие файлов через deski. Проблема могла воспроизводиться в случае, если названия файлов содержали символы расширенного Unicode.
  9. При десериализации JSON в .NET (TessaSerializer для нетипизированного JSON, TypedJsonConverter для типизированного JSON) при нахождении неопределённого токена JsonToken.Undefined теперь выбрасывается ошибка, что соответствует спецификации JSON. Это актуально при ошибках синтаксиса, например, если в массиве один из объектов не указан [1, , 3], или если в объекте не указано значение одного из ключей {"key1":1, "key2":, "key3": 3}. Ранее пропущенное значение десериализовывалось как null.
  10. Исправлена возможная ошибка NRE в методе CardSerializableObject.SortStorageList при десериализации типа карточки .jtype, у которого в какой-либо из коллекций присутствует null.
  11. В веб-сервисе jinni исправлена ошибка в ходе обработки файлов, содержащих кириллические символы в названии, при развёртывании веб-сервиса на англоязычной операционной системе в среде Docker.
  12. Оптимизирована работа системы с активными операциями, а также исправлены возможные проблемы с отменой по CancellationToken и с коллизиями по RequestHash.
  13. Оптимизирована работа системы, связанная с получением информации по IP-адресу текущего сервера посредством IHostInfoProvider, что актуально для сервиса web при выполнении логики вне контекста HTTP-запроса (например, фоновая активность), а также во всех сценариях для иных сервисов (при открытии сессии, при записи в историю действий и др.). В памяти процесса реализовано кэширование со сроком жизни в 1 час.
  14. Исправлено изменение описания индексов в схеме данных, которое раньше не отображалось как изменение таблицы при сохранении. Т.о. если при сохранении для таблицы изменено только описание у одного или нескольких индексов, то оно не выполнялось до исправления.
  15. Для служебных виртуальных карточек “Запись в истории”, “Операция” и “Ошибка” текстовые поля всегда возвращаются на клиент с переводом строки \n. Это исправило ситуации, при которых такие карточки могли считаться изменёнными в web-клиенте, если сервер работает под ОС Windows.
  16. В web-клиенте исправлена ошибка, из-за которой контрол выбора цвета не работал в табличных формах.
  17. Исправлена ошибка отправки уведомления о завершении задания “Комментирование” в маршрутах и в процессе согласования.
  18. Исправлена ошибка освобождения регистрационного номера карточки после её безвозвратного удаления в ситуации, когда состояние карточки было отлично от “Зарегистрирован”, использовался только регистрационный номер и для проектного номера не стоял флаг “Освобождать номер при удалении”.
  19. В web-клиенте для мобильной версии приложения кнопка добавления тега в карточках перенесена в основную панель управления карточкой.
  20. В web-клиенте исправлена ошибка открытия представления в диалоговом окне на весь экран: ранее высота открытого представления не обновлялась.
  21. В web-клиенте исправлена ошибка, в результате которой отступы для некоторых параметров фильтрации отображались некорректно.
  22. Консольные скрипты, классы которых наследуются от ServerConsoleScriptBase, теперь гарантированно имеют код возврата this.Result, равный нулю (т.е. успешное выполнение), если переопределённый метод ExecuteCoreAsync не выбрасывает исключений и не изменяет код возврата присваиванием this.Result. Это актуально при запуске нескольких скриптов в пределах юнит-теста.
  23. Исправлен вывод справки с примерами использования для команд tadmin по атрибуту [Example], если в примере присутствуют атрибуты команды без указания имени. Т.е. если имеются параметры метода команды с заданным атрибутом [Argument], причём без аргументов в конструкторе этого атрибута.
  24. Исправлена работа расширения OpenForumContextMenuViewExtension.
  25. В web-клиенте исправлена локализация всплывающей подсказки кнопок “Свернуть” и “Развернуть”, а также добавлена всплывающая подсказка для кнопки блокировки контрола “Текст с форматированием”.
  26. К карточке больше нельзя прикреплять файлы, если для соответствующего типа не выставлен признак “Разрешить файлы”.
  27. При отсутствии выставленного признака “Разрешить задания” для типа карточки теперь также нельзя добавлять записи в историю заданий и в список с информацией по группам заданий, которые были выданы на карточку.
  28. В представлении “Доступные теги” исправлена работа параметра “Владелец”.
  29. В web-клиенте исправлено некорректное удаление сообщений валидации. Так, проблема могла воспроизводиться при проверке генераторов умных ролей, когда часть ошибок считалась дубликатами предыдущих и удалялась.
  30. В web-клиенте исправлена запись категории файлов в структуру карточки с учетом локализации.
  31. В web-клиенте добавлена настройка, позволяющая скрывать контрастную линию в окрашенных строках/ячейках представлений.
  32. В web-клиенте исправлена ошибка, приводящая к некорректному отображению стилей на вкладке заданий в карточках в компактном режиме.
  33. В web-клиенте в представлениях исправлено отображение колонки типа Decimal, теперь значения отображаются согласно настройкам форматирования пользователя.
  34. В web-клиенте исправлена ошибка, в результате которой могла отображаться некорректная локализация в тех случаях, когда приложение еще не инициализировано.
  35. При создании операции методом IOperationRepository.CreateAsync с указанием флага OperationCreationFlags.FailOnHashCollision исправлено выбрасывание исключения OperationAlreadyExistsException для СУБД MS SQL Server. Ранее такое исключение было записано внутри ValidationException.
  36. В desktop-клиенте исправлена локализация всплывающих подсказок кнопок “Развернуть” и “Редактировать” контрола “Текст с форматированием”.
  37. Скорректирована обработка параметра LDAP.ConnectionAttempt в файлах app.json для веб-сервиса и параметра AdSync.ConnectionAttemptCount в файлах app.json для Chronos: теперь фактическое число попыток соединения равно значению параметра, а не значению параметра плюс один, как было до исправления.
  38. Количество попыток подключения к LDAP-серверу при поиске записи в каталоге AD по указанному Distinguished Name (DN) теперь соответствует значению из настроек, тогда как ранее всегда выполнялось 11 попыток.
  39. В web-клиенте исправлена ошибка, в результате которой отсутствовал левый отступ в полях параметров фильтрации с выбранным критерием “между”.
  40. В расширении “Шаблон файла в контроле html” для карточек и диалогов исправлена ошибка, из-за которой карточка при открытии загружалась дважды.
  41. Исправлена ошибка, из-за которой при генерации файлов по шаблону с форматом xlsx в документе не обновлялись формулы в случае, если в нём отсутствовали табличные плейсхолдеры.
  42. Исправлена починка условий с типом “По типу задания” при обновлении условий с версии 3.6.0.
  43. Оптимизировано сохранение карточки с файлами: теперь подключение к БД не удерживается в процессе обработки контента файлов.
  44. Детализировано сообщение об ошибке дублирования строк локализации.
  45. Оптимизировано потребление памяти веб-сервера при компиляции скриптов, в т.ч. при вызове команды tadmin Compile.
  46. В web-клиенте исправлена ошибка, приводившая к возврату свойством DateTimeViewModel.hasEmptyValue значения, обратного корректному.
  47. Загрузка конфигурационных файлов app.json теперь завершается с ошибкой, если за пределом JSON-объекта в конфигурации находится любой контент, кроме комментариев и пробелов. Актуально как при чтении файлов с диска, так и при иных вызовах IConfigurationJsonSerializer.DeserializeAsync (например, чтение конфигурационного файла из Redis). Это предупреждает неочевидные ситуации, когда в середину файла вставлена скобка }, что, вместо ошибки, могло преждевременно завершить чтение JSON, отбросив часть содержимого с конца файла.
  48. Исправлены настройки форматирования на сервере для языков, отличных от английского, при установке системы в Docker.
  49. Оптимизировано открытие карточки “Шаблон бизнес-процесса” в ситуации, когда по шаблону бизнес-процесса есть много активных бизнес-процессов.
  50. Исправлена ошибка, из-за которой в detail-представлении нельзя было произвести фильтрацию по параметру с ссылкой на master-представление.
  51. В маршрутах в этапе “Создание карточки” исправлена ошибка, из-за которой формировался некорректный пакет карточки-заготовки. Ошибка возникала при работе этапа в режиме “Открыть новую карточку” при добавлении файлов к создаваемой карточке.
  52. В web-клиенте исправлена ошибка, из-за которой сохраненные настройки в представлениях, открываемых в режиме выборки, применялись только после полной перезагрузки страницы.
  53. Исправлена десериализация значений типа BigInteger при использовании типизированного и нетипизированного сериализаторов JSON.
  54. В web-клиенте в диалоге настроек представления сортировка по умолчанию теперь задается через выбор пункта “По умолчанию” для соответствующей настройки.
  55. В web-клиенте исправлена ошибка, из-за которой в контроле карточек “Представление” могла неверно выполняться сортировка после обновления представления, если изменялись его настройки.
  56. В web-клиенте исправлена ошибка, из-за которой не работал поиск в диалоге создания файла по шаблону.
  57. В web-клиенте исправлена ошибка, из-за которой для контролов не отображался тултип, определенный в родительском элементе.
  58. В web-клиенте для нового контрола грида исправлено получение значения для ячейки в случае, когда значение является 0 или пустой строкой.
  59. Исправлена ошибка, при которой некорректно работал маппинг параметров представления, если он указывался для контрола табличной секции карточки и ссылался на другую табличную секцию, которая при этом не является дочерней или родительской по отношению к секции, в которой настраивается маппинг параметров представления для контрола.
  60. Исправлена ошибка, из-за которой некорректно обрабатывались условия отправки уведомлений, если условия зависели от текущей сессии.
  61. В web-клиенте исправлена ошибка, приводившая к бесконечному увеличению области превьювера изображений при установленном флаге “Растягивать по вертикали” и отсутствии высоты у строки, в которой располагается элемент управления.
  62. В web-клиенте исправлена ошибка в функции showFileDialog, из-за которой могло быть возвращено некорректное значение. Ошибка воспроизводилась, если был задан параметр returnRejected, и в диалоге был выбран файл, не удовлетворяющий фильтру.
  63. В web-клиенте для кнопки “Фон блока” контрола “Текст с форматированием” исправлено некорректное поведение всплывающей подсказки: теперь всплывающая подсказка относится ко всей кнопке.
  64. В web-клиенте для контрола “Список файлов” увеличена высота области перетаскивания файлов для новой категории.
  65. В web-клиенте для представлений в рабочих местах исправлена потеря позиции полосы прокрутки, при переключении между рабочими местами.
  66. Исправлена ошибка, из-за которой при отправке дочерних резолюций мог не проверяться срок их исполнения относительно срока исполнения родительской задачи.
  67. В web-клиенте исправлена ошибка, из-за которой копирование виртуального файла в буфер обмена посредством Deski происходило с некорректным содержимым.
  68. В маршрутах в параметрах этапа “Управление процессом” исправлена ошибка при выборе из представления этапа в поле “Строка с этапом”.
  69. В web-клиенте в виджете дашборда “Дни рождения” исправлена ошибка, из-за которой виджет не отображал список сотрудников, если хотя бы у одного сотрудника в системе день рождения был 29 февраля.
  70. В web-клиенте исправлена ошибка, в результате которой после смены темы и обновлении страницы могли отображаться обои из предыдущей темы.
  71. Исправлена выгрузка представлений в форматах html/csv, если выбран сабсет представления, содержащий двойные кавычки.

Обновление на новую сборку

  1. Из представления “Активные операции” удалён параметр фильтрации по имени сотрудника (осталась фильтрация по ссылке на сотрудника), а также удалена сортировка по колонке “Сотрудник”.
  2. У форматтера плейсхолдеров #qrcode параметр utf8 теперь игнорируется.

Изменения API при обновлении

  1. В консольных тестах, наследуемых от ConsoleCommandTestBase, методы RunCommandAsync выбрасывают необработанные исключения, возникшие в процессе выполнения команд, причём они обёрнуты в CommandException (кроме TestConsoleShutdownException). Ранее такие исключения подавлялись, и методы RunCommandAsync возвращали null. Исправьте код консольных тестов в проектном решении, где это актуально.
  2. Удалено свойство IOperation.ReportsProgress. Используйте проверку IOperation.Progress.HasValue.
  3. Флаг OperationCreationFlags.FailWhenHasSameRequestHash переименован в FailOnHashCollision.
  4. Метод IOperationRepository.StartFirstAsync (.NET) всегда принимает коллекцию типов. Замените вызовы вида StartFirstAsync(typeID) на StartFirstAsync([typeID]).
  5. Метод IOperationRepository.DeleteOlderThanAsync более недоступен с клиента. Ранее он был доступен для пользователей с правами администратора.
  6. Из объекта IOperationRepository удалены методы GetAllAsync, которые позволяли массово загружать операции из БД.
  7. Создание операции выполняется по адресу веб-сервиса api/v1/operations/new, а предпочитаемый идентификатор может быть передан в теле запроса в свойстве ID.
  8. Для консольных скриптов, определяемых посредством атрибута [ConsoleScript], указание этого атрибута без параметров теперь использует в качестве имени скрипта краткое имя типа. Ранее использовалось полное имя типа, из-за чего актуальное имя необходимо было передавать параметром атрибута, т.е. [ConsoleScript(nameof(AnalyzeJson))], где AnalyzeJson также был именем класса скрипта.
  9. Изменён интерфейс ISession: удалено свойство ApplicationID, вместо которого теперь следует использовать ISession.Token?.ApplicationID.
  10. При отправке уведомлений методы BeforeFormingNotificationForUser расширений INotificationSendExtension, а также условия отправки уведомлений теперь обрабатываются в контексте сессии получателя.
  11. Свойство CardFieVersion.Options теперь сериализуется и десериализуется как типизированный json (ранее использовался нетипизированный json). Метод DeserializeOptions теперь возвращает Dictionary<string, object> (ранее возвращал ISerializableObject).

Изменения конфигурации при обновлении

  1. Представления:

    • Operations

    • Tags

  2. Таблицы:

    • ActionHistory

    • KrSigningActionVirtual

    • KrSigningStageSettingsVirtual

    • Operations

    • OperationsVirtual

    • OperationUpdates

  3. Типы:

    • KrApprovalProcessManagementStageTypeSettings

    • KrProcessManagementStageTypeSettings

    • KrSigningAction

    • KrSigningStageTypeSettings

    • Operation

  4. Изменены библиотеки локализации.

Back to top