Патч 4.1.2 (02.08.2025)¶
Добавление и изменение функциональности¶
- Во вкладке “Мои замещения” для таблиц “Кого я замещаю” и “Кого я замещаю по типу документа” параметр фильтра “Активно” заменён на “Показывать все замещения”. Теперь по умолчанию отображаются только активные замещения.
- В web-клиенте при отображении обозревателя свойств в модальном режиме добавлена возможность изменения настроек диалога. Вместо
showViewModelDialogиспользуйте вспомогальные методыPropertyGridHelper.showDialogиPropertyGridHelper.showMultipleDialogдля отображения диалога с обозревателем свойств. - В конструкторе бизнес-процессов в действие “Подписание” и одноимённого этапа в маршрутах добавлена возможность подписания файлов ЭП при вынесении положительного решения (подписания). Подробнее в руководстве разработчика и руководстве администратора.
- Добавлен вид аватара “Фото”. Подробнее см. Настройки пользователя.
- В TessaAdmin добавлена возможность удалить последнюю вкладку в типе карточки и в контроле “Вкладки”.
- Добавлено поле “СНИЛС” в карточку сотрудника.
- В представлении “Активные процессы” добавлены колонки “Есть ошибки” и “Последняя ошибка”. Параметр представления “Есть ошибки” теперь также доступен для пользователей без административного доступа.
- В карточке “Настройки электронной подписи” приложенные файлы теперь выводятся с группировкой по категориям, чтобы сразу видеть, является ли файл сертификатом или списком CRL.
- В конфигурационный файл
app.jsonвеб-сервисаwebдобавлена настройка"StaticFileCacheControl", в которой возможно указать заголовок, возвращаемый для запросов на статические файлы (js-файлы с кодом web-клиента, файлы шрифтов, картинки и др. файлы в подпапкеwwwrootвеб-сервиса). По умолчанию заголовок не устанавливается (настройка отсутствует, равнаnullили пустой строке). Описание настройки доступно в документации. - В конфигурационные файлы
app.jsonдля сервисовwebиchronosдобавлена настройка"Redis.Normalization", в которой возможно указать строку подключения к другому серверу или базе данных Redis, чем указана в настройке"Redis"(используемой для иного взаимодействия платформы с Redis). В таком случае именно подключение из"Redis.Normalization"будет использовано для кэширования значений в справочниках нормализации. Это не затрагивает взятие блокировок и подписку на события, связанные с нормализацией. Если настройка отсутствует, либо равнаnullили пустой строке, то используется объект подключения по умолчанию, соответствующий строке из настройки"Redis". - В web-клиенте в область предпросмотра были добавлены кнопки переключения файлов: “следующий”, “предыдущий”.
Консольная утилита tadmin¶
- Добавлена команда ConvertTypes для конвертации типов
.jtypeв репозитории с удалением в них настроек, имеющих значения по умолчанию. - В файле
app.jsonдобавлена настройка"LocalizationPath", в которой возможно указать папку (относительный путь от папки с утилитой или абсолютный путь), содержащую библиотеки локализации в файлах.jlocalization/.jculture(поиск выполняется включая подпапки любой вложенности). По умолчанию указана папка"loc"(относительно папки с утилитой). Создайте эту папку и разместите там библиотеки локализации со строками, которые могут использоваться в разработанных в проекте консольных командах. Такие библиотеки переопределяют и дополняют встроенную локализацию; но если искомые строки отсутствуют в библиотеках из указанных папок, то для них используется встроенная локализация. - Добавлен скрипт
AnalyzeJson, позволяющий проанализировать, сколько по размеру занимает содержимое отдельных ключей от общего объёма JSON-документа. Это полезно, например, при анализе места, занимаемого различными объектами в метаинформации. Подробнее по использованию скрипта см. в разделе документации Выполнить скрипты.NETс указанными именами.
Новые версии библиотек¶
.NET 8.0.18CsvHelper 33.1.0HtmlAgilityPack 1.12.2HtmlSanitizer 9.0.886iTextSharp.LGPLv2.Core 3.7.4MailKit 4.13.0Microsoft.CodeAnalysis.CSharp 4.14.0Microsoft.IdentityModel.Protocols.OpenIdConnect 8.13.0Microsoft.NET.Test.Sdk 17.14.1NLog 5.5.1NLog.Web.AspNetCore 5.5.0PDFsharp-wpf 6.2.1SixLabors.ImageSharp.Drawing 2.1.7StackExchange.Redis 2.8.58Swashbuckle.AspNetCore 9.0.3Swashbuckle.AspNetCore.Newtonsoft 9.0.3
Изменения API¶
- В web-клиенте в проекте SDK реализована возможность настраивать темы приложения. Подробнее в руководстве разработчика web-расширений.
- Добавлен контроллер
api/v1/user-info, а также добавлена возможность реализации собственных серверных обработчиковIUserInfoHandlerдля генерацииIUserInfo. Ранее была возможность получать нужные значения только путём модификации представления, из которого выбирались данные. В клиентской части были расширены возможности для переопределения и доработкиUserInfo. Подробнее в руководстве разработки web-расширений. - Аватары расширены для использования в различных объектах системы. Ранее аватар мог быть создан только для пользователя. Подробнее в руководстве разработчика.
- Для объекта
IActionHistoryStrategyизменены методы (в т.ч. методы-расширения) по добавлению и удалению записей в историю действий. В методы более не передаётсяCancellationTokenдля преждевременной отмены. Аналогичные изменения сделаны для методов у объектовIApiAccessTokenActionHistoryStrategy,IConfigurationLogger,IFileContentActionHistoryStrategy,ITokenActionHistoryStrategy. - У всех асинхронных методов инвалидации кэшей и значений в кэшах удалён параметр с токеном отмены
CancellationToken. - У объектов, реализующих интерфейс
IStorageCleanable, удалены методыIsEmpty(). При очистке структуры объекта вызовомClean()пустые коллекции заменяются наnull, но пустые объекты внутри коллекций не удаляются. ОбъектыStorageObjectсчитались пустыми, если они созданы конструктором по умолчанию и имеют все значения свойств, установленные по умолчанию. - Добавлен пример в руководство разработчика Дерезервирование номеров при автоматизированном создании карточек.
- В web-клиенте добавлены методы для
StorageAccessor, предназначенные для сериализации и десериализации флаговых перечислений в виде списка имён, с учетом специфики TypesJson:setFlags,setFlagsIfNotDefault,tryConvertFlags,tryConvertFlagsOrDefault. - Добавлено API для регистрации сериализаторов, связанных с расширениями, контролами и иными компонентами типов
CardType. Пример создания и регистрации сериализаторов для типового решения в папкеTessa.Extensions.Default.Server/TypeSerializers. - Добавлен статический метод
TypedDictionary.WithOptions(), аналогичный методуTypedList.WithOptions(), для указания настроек при сериализации хэш-таблиц в типизированный JSON. В нём можно указать свойствоSelectPlainJsonSerialization, которое позволяет переопределить для указанной хэш-таблицы и всех вложенных объектов, следует ли записывать для них информацию по типам при сериализации. Аналогичная настройка также добавлена дляTypedList.WithOptions(). СвойствоSelectPlainJsonSerializationфункционирует, только если объектTypedJsonConverterсоздавался как объект, не защищённый от изменения (seal: false); например, предоставив опцииTessaSerializer.CreateDefaultSettings(typedJson: true)в возвращаемый контроллером методawait this.TypedJsonAsync(obj, settings: settings). - Добавлен класс
SuperStreamFixed, который позволяет объединять несколько потоков в один для чтения, аналогично классуSuperStream, но вместо фабрик потоков он получает конкретный список потоковStream. При этом в конструкторе указывается параметрleaveOpen, значениеfalseв котором определяет, что все переданные потоки не должны быть закрыты вместе с текущим объектом или в процессе чтения из него.
Исправления и оптимизации¶
- В web-клиенте исправлена ошибка, из-за которой было невозможно получить фрагменты текущей темы через
ThemeManager.getThemeNode. - В web-клиенте исправлена ошибка, из-за которой не исчезало всплывающее окно выбора даты в диалоговом окне параметров фильтрации.
- Для представления “Теги” исправлена работа сабсетов “Персональные теги” и “Общие теги” при использовании СУБД PostgreSQL.
- Добавлена локализация режимов работы для команды
tadmin UpgradeWorkflowProcesses. - В web-клиенте исправлена ошибка, из-за которой область предпросмотра в карточках могла отображаться при ширине экрана менее 1200 пикселей.
- В веб-сервисе
jinniисправлено предупреждение об устаревшей зависимости в скриптеunoconv, которое могло приводить к ошибкам во время конвертации файла вpdf. Зависимостьsetuptoolsзаменена наpackaging. Подробнее об установке зависимости см. Предупреждение об отсутствии зависимостиpackagingв Windows. - В web-клиенте исправлено получение ошибок сохранения файлов в карточке.
- В desktop-клиенте исправлена ошибка, которая возникала при использовании фильтров в контроле “Представление”, если для такого представления был настроен маппинг параметров.
- Для токенов сессии, созданных по атрибуту
[ApiAccessToken]для методов в интеграционных контроллерах, исправлена нормализация имени сотрудника в свойствеISession.User.Name. - Исправлена работа расширения “Очистка связанных полей” в ситуации, когда отслеживаемая колонка находилась в коллекционной секции.
- В web-клиенте исправлена ошибка, из-за которой некорректно отображался список скрытых вкладок.
- Улучшено качество изображений аватаров.
- В web-клиенте исправлена ошибка, из-за которой в иерархических представлениях некорректно выполнялась сортировка групп.
- Исправлена ошибка, из-за которой в типе карточки “Мои замещения”, в таблице “Кого я замещаю по документам” могли некорректно отображаться вложенные замещения.
- В web-клиенте исправлена ошибка, из-за которой в ссылочных контролах не учитывалась настройка “Перенос строк”.
- Исправлена синхронизация AD/LDAP при указании поддомена AD в качестве контроллера домена.
- Исправлены ошибки при работе узлов master-detail в рабочих местах, где алиас параметра или колонки, указанный в detail-представлении для связи с master-представлением, отсутствовал также в detail-представлении (его наличие важно только в master-представлении).
- В web-клиенте исправлена ошибка некорректного отображения контролов в полноэкранном режиме на iOS.
- В web-клиенте исправлена ошибка, из-за которой можно было добавить пустую строку в текстовое поле, которое заполнено максимальным количеством символов.
- В конструкторе бизнес-процессов исправлена ошибка, из-за которой вносимые процессом изменения карточки не сохранялись при запуске процесса по кнопке с условием в настройках.
- Исправлена ошибка импорта файла представления, если в названии директорий в пути до него содержались точки.
- В маршрутах в этапах “Согласование” и “Подписание” исправлена ошибка, из-за которой этап не завершался при отсутствии исполнителей. Ошибка воспроизводилась, если для этапа был разрешён запуск без исполнителей.
- В web-клиенте исправлена ошибка, в результате которой могла появляться ошибка “The index is not in the allowed range” в обсуждениях на iOS.
- В web-клиенте в маршрутах исправлена ошибка при формировании заголовка окна с параметрами этапа.
- Исправлен скрипт
upgrade.sh, используемый в Docker (совместно с Alpine Linux), для учёта аргументов-csи-db, переданных в скрипт, а также для использования совместно с СУБД MS SQL Server. - В desktop-клиенте в маршрутах исправлено формирование заголовков окон развёрнутых текстовых полей.
- В методе
KrDocumentStateManager.SetStateAsyncисправлена ошибка, из-за которой не изменялось состояние в карточке документа в секцииDocumentCommonInfo. Ошибка возникала, если при выполнении метода в карточке отсутствовала секцияDocumentCommonInfo. - Исправлено нефункционировавшее исправление структуры секций в настройках сотрудника (диалог “Мои настройки” и вкладка с настройками в карточке “Сотрудник”). Это могло приводить к проблемам при отображении настроек, сохранённых на предыдущей версии системы, где отсутствовали настройки, появившиеся в новой версии.
- В web-клиенте добавлена обработка переноса строк во всплывающих подсказках.
- Исправлена ошибка, которая возникала при миграции с версии платформы 3.6 на 4.1.
- В web-клиенте на iOS убрали возможность экспорта нескольких поисковых запросов согласно политике безопасности браузера.
- В web-клиенте в диалоговом окне “Ошибка” шрифт в поле “Подробно” изменён на моноширный.
- Исправлена отправка почты посредством низкоуровневого API
IMailService.PostMessageAsync, где вMailInfoдобавлены файлы, но не указаны строки локализации в коллекцииMailInfo.Localization. - В web-клиенте увеличено количество отображаемых строк в поле “Подробно” в диалоговом окне “Ошибка”.
- В маршрутах исправлена ошибка, из-за которой могла не сохраняться новая карточка документа или сателлита, добавленная в
IKrScope. Ошибка возникала, если карточка не содержала изменений. - Улучшено функционирование системы при возникновении преждевременной отмены операций по токенам
CancellationToken. - В web-клиенте убран повторный запрос на получение карточки при переходе на вкладку с открытым сателлитом карточки задания.
- В web-клиенте исправлено закрытие сателлита карточки документа (ранее не закрывалось) при помощи горячих клавиш Ctrl+Shift+F4 и Ctrl+Shift+Alt+F4.
- Исправлена ошибка резервирования номеров документов, когда номер оставался выделенным после отката транзакции на создание карточки.
- В web-клиенте заголовок диалогового окна получил возможность растягиваться по ширине.
- В web-клиенте добавлен отступ между заголовком и панелями кнопок.
- Если при чтении конфигурации произошла ошибка, связанная с открытием файла на чтение (конфигурационного файла, файла сертификата или иного файла), то система повторяет операцию до 10 раз, ожидая между попытками 200 мс. Это учитывает возможную проблему при редактировании файла конфигурации
app.jsonдля сервисаweb. - В web-клиенте исправлена ошибка отображения индикатора истечения сессии: ранее аватар перекрывал данный индикатор.
- Исправлена ошибка, когда номер карточки не мог дерезервироваться при её создании, если любое другое расширение
CardNewExtensionдобавило ошибку уже после резервирования номера. - В web-клиенте исправлен баг в случае открытия нескольких карточек, имеющих виртуальный файл, при просмотре этого файла отображался контент ранее открытого виртуального файла.
- В web-клиенте исправлена ошибка, в результате которой индикатор обязательного поля мог переноситься на следующую строку в отрыве от заголовка.
- Оптимизирован размер сериализуемых типов
.jtypeв файлах и в метаинформации, передаваемой на клиент. Значения по умолчанию для настроек контролов, блоков, расширений и других объектов более не записываются. Версия формата метаинформации не изменена. - Оптимизировано чтение настроек из карточки “Настройки электронной подписи” при выполнении действий, связанных с ЭП: подписание файлов и проверка подписи.
- Исправлена редкая ошибка при изменении библиотеки схемы для референсной колонки (внутри комплексной). Ошибка появилась с версии 4.1.0 и содержала текст:
Value cannot be null. (Parameter 'info.GetValueOrDefault<SchemeType>(nameof(this.Type))'). - Исправлено добавление файла в desktop-клиенте с указанием категории, когда представление, получающее категории, не возвращает третью колонку с порядковым номером. Актуально, например, для файлов в карточке настроек “Настройки электронной подписи”.
- В web-клиенте исправлена ошибка, приводящая к отображению диалоговых окон ошибок КриптоПро в Safari на macOS.
- В текст сообщения об ошибке компиляции C#-скрипта для группы ссылок и типа группы ссылок добавлен текст произошедшей ошибки и её источник.
- В web-клиенте исправлена ошибка, из-за которой для контролов “Метка” и “Текст” не применялся указанный
className. - Исправлено формирование имени виртуального файла, созданного по шаблону с включённым признаком “Конвертировать в PDF”, если в имени шаблона файла используется плейсхолдер.
- В конструкторе бизнес-процессов в действиях “Согласование”, “Подписание” и “Настраиваемое задание” исправлена ошибка, из-за которой не работали флаги: “Редактировать карточку” и “Редактировать любые файлы”.
- Оптимизирована метаинформация, загружаемая web-клиентом. Размер метаинформации, возвращаемой для типового решения, сокращён более чем в 2 раза (при условии её сжатия по алгоритму
Brotli, которое настроено по умолчанию). - Оптимизирована загрузка фонового изображения с сервера в web-клиенте в части нагрузки на сервер.
- Оптимизирована работа системы, связанная с получением информации по доменным именам (DN) для IP-адресов в запросах к веб-сервису (используется при открытии сессии, при записи в историю действий и др.). В памяти процесса реализовано кэширование со сроком жизни в 1 час для каждого IP-адреса.
- В конструкторе бизнес-процессов в действии “Управление заданием” убрана возможность создания привязки для поля “Тип управления”.
- В web-клиенте исправлена ошибка, из-за которой выпадающие списки могли располагаться не по центру.
- Исправлена ошибка доступа, возникающая при проверке расширенных настроек доступа по токену со всеми правами, выданному серверными расширениями.
- Оптимизировано выполнение цепочек расширений
IExtensionContainer. - В web-клиенте для контрола “Предпросмотр файлов” исправлена ошибка, из-за которой он мог не растягиваться по ширине в диалоговом окне.
- В web-клиенте исправлена ошибка, в результате которой при изменении размеров окна браузера была возможность перекрыть область представлений.
- В web-клиенте исправлена ошибка, приводящая к некорректной ширине области представлений при изменении ширины дерева рабочего места.
- В web-клиенте в карточке “Сотрудник” исправлена ошибка во всплывающей подсказке для флага “Наследовать календарь”.
- При отправке уведомлений исправлена загрузка контента приложенных файлов в случае, если для них отдельно указан идентификатор карточки, но не указан её тип.
- В уведомлениях по обсуждениям исправлены возможные ошибки при добавлении вложенных изображений в случае, если для уведомлений используются расширения, прикладывающие дополнительные файлы.
- В обсуждениях исправлено прикладывание изображений в уведомлениях при упоминании сотрудников.
- При повторном запуске процедуры распознавания файла система теперь корректно обновляет карточку операции OCR и показывает диалог мониторинга процесса.
- Исправлено удаление файлов из корзины плагином
RemoveDeletedFiles. Ошибка появилась в версии 4.1.0. - В web-клиенте исправлена ошибка, приводившая к отображению кнопок разворота для контролов внутри контрола “Контейнер” при наведении курсора на него.
Обновление на новую сборку¶
- Все файлы типов
.jtypeперевыгружены для минимизации их размеров. Версия формата метаинформации не изменена. После обновления веб-сервиса системы (или используя отдельный сервисweb, обновлённый до актуальной версии) вызовите команду конвертации всех типов для папки конфигурации с типами в вашем репозитории, указав параметры подключения к вашему серверу:tadmin ConvertTypes PathToRepository/Configuration/Types -a:server_address -u:admin -p:admin. При этом типы не импортируются, конфигурация на сервере никак не изменяется. На сервере, к которому выполняется подключение, не требуется наличие определённых типов и настроек, веб-сервис используется только для выполнения логики сериализации типов. - Рассмотрите возможность по установке настройки
"StaticFileCacheControl", равной строке"public,max-age=604800", в конфигурационном файлеapp.jsonвеб-сервисаweb. Это включит кэширование статических файлов web-клиента (на срок в одну неделю - значение604800в секундах), и тем самым оптимизирует сетевой трафик и разгрузит веб-сервис при открытии или обновлении вкладки браузера с web-клиентом, что актуально при работе в системе большого количества пользователей.
Изменения API при обновлении¶
- Метод
StorageObject.SetNullIfEmptyEnumerableзаменён наSetNullIfEmptyCollection, который теперь учитывает только пустые коллекцииICollection. Замените его при использовании в объектах проектного решения, наследуемых отStorageObject. - Метод
ForumResponse.Empty()удалён из серверного API форумов. Используйте конструктор по умолчаниюnew ForumResponse(). - Добавлен обязательный параметр
CardServiceTypeв метод созданияNumberExtensions.CreateContextAsyncи конструктор контекстаNumberContext. - Модифицировано возвращаемое значение метода
IOperationRepository.StartAsync, которое теперь возвращает флагbool, указывающий на успешность запуска операции. Аналогичное изменение внесено в контроллер REST API по маршрутуapi/v1/operations/{id}/start. - Из объекта
CardTaskудалены свойства:ProcessKind,ProcessName,ProcessID. Теперь эту информацию можно получить из свойстваCardTask.Infoпо ключам:CardHelper.TaskProcessKindKey,CardHelper.TaskProcessNameKeyиCardHelper.TaskProcessIDKey. - У методов
IExtensionContainer.ResolveExecutorAsyncиTryResolveExecutorAsyncудалён параметрCancellationToken. - В web-клиенте более недоступна информация по всем таблицам-перечислениям
cardMetadata.enumerations(доступна метаинформация только по нескольким служебным таблицам). Если в коде расширений web-клиента для проектного решения использовались данные таблиц-перечислений, то реализуйте передачу необходимых данных через расширения на инициализацию приложения: на сервере расширениеServerInitializationExtension, зарегистрированное как.WhenApplications(ApplicationIdentifiers.WebClient), записывает информацию вcontext.Response.Info(примерKrWebServerInitializationExtension.cs); а на клиенте расширениеApplicationExtensionполучает их изcontext.response.infoи записывает в отдельный объект-синглтон (примерforumClientInitializationExtension.ts). - Изменено указание префиксов ключей в коде расширений .NET. Вместо
CardHelper.SystemKeyPrefixиспользуйтеStorageHelper.SystemKeyPrefix. ВместоStorageHelper.UserKeyPrefixиспользуйтеCardHelper.UserKeyPrefix. Для проверки того, что ключ начинается с префикса, вызовите методStorageHelper.HasPrefix(key, prefix)(гдеkey- проверяемый ключ;prefix- проверяемый префикс) - используйте его вместо методовIsSystemKey(key)иIsUserKey(key)(которые присутствовали вCardHelperиStorageHelper). Значения констант и функциональность методов не изменились, только способ их использования. - У метода
IDbmsProvider.GetDbmsAsync()удалён параметрcancellationToken. Интерфейс реализуется вIDbScope, поэтому для вызововdbScope.GetDbmsAsync()также удалите параметрcancellationToken.
Изменения конфигурации при обновлении¶
-
Представления:
-
ActiveWorkflows -
RoleDeputiesManagementDeputized -
RoleDeputiesManagementDeputizedByDocTypes -
TagCards -
UsersDetails(удалено)
-
-
Таблицы:
-
AvatarCache(добавлена) -
KrSigningActionFileCategoriesVirtual(добавлена) -
KrSigningActionHiddenFileCategoriesVirtual(добавлена) -
KrSigningActionVirtual -
KrSigningStageSettingsFileCategoriesVirtual(добавлена) -
KrSigningStageSettingsHiddenFileCategoriesVirtual(добавлена) -
KrSigningStageSettingsVirtual -
KrSigningTaskOptions -
PersonalRoles -
UserAvatarCache(удалена)
-
-
Миграции:
Platform
-
Типы:
-
AvatarUserSettings -
File -
KrSigning -
KrSigningAction -
KrSigningStageTypeSettings -
PersonalRole -
SignatureSettings -
SignFilesDialog(добавлен) -
TemplateFile -
ViewExtensions -
WorkflowTaskControlAction
-
-
Изменены библиотеки локализации.