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

Версия 4.1 (11.04.2025)

Новые возможности

  1. В web-клиенте добавлено рабочее место с дашбордом, которое обеспечивает отображение и настройку пользовательских виджетов, а также поддерживает разработку кастомных видов виджетов. Подробнее см. в руководстве пользователя и руководстве разработчика.
  2. Для дашборда добавлено интерактивное обучение, запускаемое при его первом открытии. Если обучение отложено, то к нему можно вернуться из меню системы при открытом дашборде. Если же обучение завершено, то вернуться к нему можно будет, только сбросив соответствующие данные в Моих настройках. Также добавлена возможность разработки собственной программы обучения, подробнее см. в руководстве разработчика.
  3. Добавлен конструктор согласований. Подробнее см. в разделе Настройки процессов согласования.
  4. Добавлен расширяемый механизм упоминания пользователей в обсуждениях. Подробнее см. Упоминание пользователей в обсуждениях.
  5. Добавлены средства нормализации справочников, позволяющие не хранить строковые значения ссылок рядом с идентификаторами в базе данных, но выполнять их автоматическое получение с учётом кэширования при загрузке/создании карточек и при выполнении представлений. Справочник нормализации выбирается для комплексной колонки в схеме данных из списка, перечисленного в записях таблицы NormalizationSources. Идентификатором справочника может быть единственная колонка во внешнем ключе, имеющая один из типов: уникальный идентификатор (Guid), строковый тип или целочисленный тип. Такая комплексная колонка должна содержать строковую физическую или референсную колонку, значение которой заполняется из справочника. При добавлении комплексной колонки в тип карточки, файла или задания, строковое значение будет заполняться в соответствии с идентификатором при загрузке/создании типа, и оно будет игнорироваться при сохранении. В представлениях для метаинформации колонки-значения (строкового типа) указывается справочник нормализации NormalizationSource и колонка с идентификатором NormalizationKeyColumn, и эта колонка не должна возвращаться в SQL-запросе (в режиме без сабсета Normal). В метаинформации сабсета представления возможно выбрать справочник нормализации NormalizationSource, в этом случае SQL-запрос представления для этого сабсета не должен возвращать колонку-значение с алиасом из свойства CaptionColumn. Также используйте новые свойства в метаинформации сабсета: SortingColumns для сортировки строк сабсета и NullRefCaption для указания выводимого значения строки сабсета с идентификатором NULL. Справочник нормализации может кэшироваться в Redis, а также брать блокировки в Redis.
  6. В настройки колонки в схеме данных добавлен флаг Виртуальная (Virtual), позволяющий указать, что колонка является виртуальной, т.е. метаинформация по ней присутствует в схеме данных, но колонка отсутствует в структуре таблицы в базе данных. Для записей в таблице-перечислении значения виртуальных колонок не записываются в базу данных (но присутствуют в метаинформации). Для таблиц, добавляемых в типы карточек, файлов и заданий, значения виртуальных колонок игнорируются при сохранении, и их значения равны null при загрузке/создании карточки. При установке флага на комплексной колонке все колонки внутри неё (референсные и физические) считаются виртуальными. Колонка со строковым значением для справочника нормализации всегда является виртуальной (но её значение заполняется при загрузке/создании карточки в соответствии со справочником). Если таблица является виртуальной, то все её колонки также будут виртуальными, независимо от этого флага.
  7. Добавлены токены доступа к API-ресурсам, используемые внешними интеграционными сервисами, которые взаимодействуют с платформой по RESTful API. Подробнее см. Просмотр и управление токенами доступа к API.
  8. Расширена поддержка системой режима работы SaaS. Для этого режима добавлена поддержка запуска плагинов внутри процесса веб-сервиса. Подробнее см. в разделе Настройка запуска плагинов на веб-сервисе.
  9. Все демонстрационные объекты конфигурации (такие, как карточка “Автомобиль”), расширения, строки локализации и т.п. теперь имеют префикс Ab и располагаются в подпапках или группах с именем AbTest. Для их удаления обратитесь к разделу Удаление встроенных демонстрационных возможностей AbTest.
  10. Добавлена функциональность удаления файла в корзину с возможностью его восстановления. Подробнее см. Удаление и восстановление файла. Функциональность доступна с версии 4.0.1.
  11. В web-клиенте добавлена функциональность аватаров для пользователей системы. Реализованы загрузка аватара пользователем и сброс аватара к значению по умолчанию. Функциональность доступна с версии 4.0.1.
  12. Реализована поддержка временных ссылок на контент системы, получение контента по такой ссылке не требует авторизации. В рамках проектных решений могут быть реализованы свои обработчики для доступа к необходимому контенту. Подробнее в руководстве разработчика. Функциональность доступна с версии 4.0.1.
  13. В метаданные колонок представлений добавлено поле InvisibleByDefault, с помощью которого можно указать, что в пользовательском интерфейсе колонка должна быть скрыта по умолчанию, но её видимостью можно управлять через пользовательские настройки представлений (по умолчанию колонки видны). Функциональность доступна с версии 4.0.1.
  14. Реализована аутентификация в системе с использованием внешних провайдеров по протоколам OAuth 2.0 и OpenID Connect. Подробнее см. Руководство по настройке аутентификации через OAuth. Функциональность доступна с версии 4.0.2.
  15. Реализована возможность создания временной ссылки на файл или версию файла из соответствующего контекстного меню. Файл должен быть сохранён на сервере, и для типа карточки должно быть добавлено правило доступа, разрешающее создавать такую ссылку. Функциональность доступна с версии 4.0.2.
  16. Добавлена поддержка для формата файла лицензии .jlic, который содержит информацию по лицензии в JSON-формате. Строка поиска файлов лицензии в конфигурационных файлах app*.json и файлах проектов .csproj теперь указывается как *.?lic, чтобы учесть как бинарные файлы лицензии *.tlic, так и JSON-файлы *.jlic. В будущих версиях платформы поддержка бинарного формата *.tlic будет прекращена. Функциональность доступна с версии 4.0.2 (для релизов 4.0.x) и с версии 3.6.0.20 (для релизов 3.6.0.x).
  17. Добавлена возможность просмотра и управления данными системы в Redis посредством сервиса webbi - Redis Explorer. Функциональность доступна с версии 4.0.5.

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

  1. Реализовано расширение на представление и на узел рабочего места UserAvatarInRowViewExtension, которое позволяет добавить аватар сотрудника в ячейку строки представления.
  2. Доработаны действия редактора бизнес-процессов “Задание”, “Группа заданий”, “Универсальное задание и “Управление заданием”. Теперь эти действия поддерживают настройку связанных с заданием ролей через интерфейс.
  3. В окно “Настройки процесса” редактора экземпляров и редактора шаблонов бизнес-процессов добавлена кнопка “Обновить действия процесса”. Она позволяет вызвать обновление действий для конкретного экземпляра или конкретного шаблона бизнес-процесса.
  4. Для флагов правил доступа “Редактирование ФРЗ своих заданий” и “Редактирование ФРЗ всех заданий” добавлены всплывающие подсказки.
  5. Для кнопок шаблонов бизнес-процессов добавлены настройки “Алиас”, “Отображать на тулбаре”, “Разрешённые версии бизнес-процесса” и “Скрывать из интерфейса”, подробнее см. раздел документации Кнопки бизнес-процесса.
  6. В строковые значения ключей, указываемых в конфигурационных файлах app.json, добавлена возможность подставлять значения символов с помощью конструкции %var%, где var - имя символа, определённого в блоке .define, или имя переменной окружения (без учёта регистра). Если символ или переменная не определены, то подставляется пустая строка. Укажите %% для эскейпинга символа % (%%var%% преобразуется в строку %var%). Пример: "Host=localhost; Database=%DATABASE_NAME%; User ID=postgres; Password=%DATABASE_PASSWORD%; Pooling=true; Timeout=0" заменит %DATABASE_NAME% на имя базы и %DATABASE_PASSWORD% на пароль из переменных среды, которые альтернативно можно задать в блоке ".define": [ "DATABASE_NAME=tessa", "DATABASE_PASSWORD=Master1234" ] в том же или в соседнем файле app-vars.json (имя указано для примера).
  7. В web-клиенте обновлен внешний вид окна входа в систему.
  8. Добавлен раздел документации Конфигурационные файлы и переменные окружения, в котором перечислены различные виды конфигурационных файлов, описан их синтаксис и приведены примеры, а также перечислены переменные окружения, которые можно использовать в системе.
  9. Добавлены переменные окружения, посредством которых можно изменить пути к конфигурационным файлам и папкам для запущенного приложения: TESSA_EXTENSIONS_ROOT, TESSA_APP_JSON, TESSA_NLOG_CONFIG, TESSA_CID, TESSA_AUTHORIZED_KEYS. Также доработано поведение переменной среды TESSA_CONFIG_ROOT. Описание в разделе Переменные окружения.
  10. В файлах extensions.xml для тега <path/> укажите атрибут subfolders="false", чтобы в указанной папке не выполнялось сканирование подпапок на наличие в них дополнительных файлов extensions.xml. По умолчанию сканирование выполняется.
  11. В web-клиенте из контекстного меню колонок представлений, находящихся в рабочих местах, был удалены пункты “Отобразить столбец” и “Расположение тегов”, а также пункты, связанные с сохранением и сбросом настроек. Теперь эта функциональность доступна в диалоге настроек представления.
  12. В мобильной версии web-клиента удалено контекстное меню для колонок представлений. Теперь эти настройки можно изменить через диалог настроек представления.
  13. В web-клиенте добавлено ограничение на сортировку. Теперь можно сортировать представления максимум по двум колонкам.
  14. В web-клиенте добавлен диалог настроек представлений в рабочих местах и карточках. С помощью него можно задать порядок и видимость колонок, указать сортировку, группировку и способ отображения тегов. Также с помощью данного диалога можно восстановить настройки по умолчанию.
  15. В web-клиенте добавлен информационный блок, доступный при клике на кнопку настроек представления, с помощью которого можно узнать о том, что настройки представления были изменены текущим пользователем, но не сохранены. Также с помощью данного блока эти настройки можно сохранить или сбросить к последним сохранённым.
  16. В web-клиенте добавлена возможность выполнять прокрутку многостраничного тулбара посредством колеса мыши.
  17. В web-клиенте добавлена возможность циклического переключения между страницами тулбара.
  18. В web-клиенте реализован валидатор уникальности для проверки значения в поле секции относительно других карточек или других строк в той же карточке.
  19. В web-клиенте добавлено расширение для выполнения валидаторов карточки при её сохранении. Если при выполнении одного из валидаторов будет получена ошибка, то запрос на сохранение карточки не будет отправлен на сервер.
  20. В web-клиенте в диалоговых окнах выбора представлений теперь не отображаются вкладки с рабочими местами, если для выбора доступно единственное рабочее место.
  21. В web-клиенте в диалоговых окнах выбора представлений теперь не отображается дерево представлений, содержащее единственный узел без видимых дочерних узлов.
  22. В плагине RemoveInactiveSessionsPlugin старые сессии теперь удаляются, независимо от использованного сессией типа лицензии.
  23. Добавлено разрешение “Восстановление всех удалённых файлов” в правило доступа, которое позволяет сотруднику восстанавливать любые файлы в карточке - как удалённые им самим, так и удалённые другими сотрудниками.
  24. Добавлен плагин RemoveDeletedFilesPlugin для удаления старых файлов из корзины. Срок хранения удалённых файлов в корзине задаётся в карточке “Настройки сервера”. Подробнее см. Настройки сервера.
  25. В типовых задачах добавлен валидатор уникальности для поля “Исполнители”. Теперь, во время обработки задания, повторяющиеся исполнители будут удаляться автоматически.
  26. В настройки этапа маршрутов “Создать файл по шаблону” и одноимённого действия в конструкторе бизнес-процессов добавлена настройка “Категория файла”. Подробнее о настройках см. в разделах документации Маршруты документов. Создать файл по шаблону и Описание действий бизнес-процессов. Добавить файл по шаблону.
  27. При выводе строк подключения к Redis и к базе данных (например, в логи и на консоль) из строк удаляются пароли.
  28. Изменена схема работы уведомлений в форумах и обсуждениях: теперь уведомления о новом сообщении приходят всем подписанным участникам сразу после отправки сообщения вместо периодической отправки группами по несколько сообщений.
  29. Для форумов и обсуждений добавлено уведомление о добавлении участника в топик.
  30. При экспорте карточек типа “Раздел справки” html-содержимое теперь выгружается в отдельный файл в отформатированном виде.
  31. Добавлен новый тип события для истории действий “Неудачное открытие карточки”. Событие данного типа записывается в историю действий при любых возникающих ошибках во время попытки открытия карточек для просмотра, редактирования или экспорта. Подробные данные о возникших ошибках расположены на вкладке “Системная информация” карточки “Запись в истории”.
  32. В шаблоны файлов в формате .docx добавлена возможность выделения области строки, группы или таблицы с помощью примечания. Подробнее см. раздел Примеры создания шаблонов файлов в формате docx.
  33. В шаблоны файлов с формате .docx добавлена возможность использовать блоки с условиями внутри областей таблиц. Такие блоки с условиями будут обработаны отдельно для каждой строки таблицы. Подробнее см. раздел Блоки с условиями в шаблонах файлов в формате docx.
  34. В веб-сервис jinni добавлена проверка /hcheck, позволяющая установить доступность всех соединений с Redis, указанных при запуске в конфигурационных файлах, параметрах командной строки или переменных окружения.
  35. В веб-сервис jinni добавлена поддержка значений ServerCode для проверки инициализации данных системы в Redis. ServerCode можно указать либо в файле app.json, либо в переменной окружения JINNI_SERVER_CODE.
  36. Для контрола “Представление” добавлена настройка “Отключить при создании карточки”, предотвращающая выполнение представления, если текущая карточка только что создана и ещё не сохранена. Подробнее см. в разделе документации Представление.
  37. В web-клиенте добавлена возможность выбора кодировки текстовых файлов в режиме предпросмотра.
  38. В интеграции SAML добавлена возможность использовать тип привязки Redirect в запросе logout. Также теперь доступна ручная настройка ограничений идентификатора имени пользователя в SAML. См. настройки SAML в конфигурационном файле приложения.
  39. В настройки расширения создания карточки из представления CreateCardExtension добавлен параметр “Заголовок вкладки/окна”, который определяет заголовок для открываемой вкладки или модального окна, в зависимости от варианта открытия созданной карточки. Если значение не указано, то используется стандартный текст заголовка.
  40. При создании нового тега из диалога и представления модальное окно теперь открывается с заголовком “Новый тег”, а не “Новая карточка”.
  41. Добавлена поддержка умных ролей в составе умных ролей.
  42. В web-клиенте в область предпросмотра файлов в правый верхний угол добавлена кнопка, позволяющая открыть файл в диалоговом окне, развёрнутым на весь экран.
  43. В карточке “Настройки сервера” для форумов и обсуждений увеличено значение настройки “Максимальный размер сообщения” по умолчанию с 1000 до 5000 символов.
  44. Для типа карточки “Сотрудник” изменён внешний вид и компоновка интерфейса, и скорректированы некоторые строки локализации.
  45. Добавлена возможность выбора представлений в типе карточек “Шаблон файла” при помощи ручного ввода. Это позволяет выбрать представления, генерируемые перехватчиком на клиенте.
  46. Добавлена поддержка множественного выбора строк в master-представлении с передачей значений всех выбранных строк в detail-представление. Актуально для master-detail связей в узлах рабочих мест и для master-detail связей контролов “Представление” в карточках. Подробнее см. в документации.
  47. В web-клиенте добавлено всплывающее окно с подтверждением изменений при попытке закрытия диалога создания обсуждений.
  48. В web-клиенте для Google Chrome в уведомление об открытой вкладке браузера с приложением добавлены кнопки для перехода на открытую вкладку или открытия приложения в текущей.
  49. Плагин TextRecognition для обработки операций по распознаванию текста в файле перенесён в веб-сервис web. Теперь операции по OCR берутся в работу сразу после их создания.
  50. В web-клиенте в окне “О программе” теперь выводится текущее описание конфигурации. Его можно установить посредством вызова скрипта Fixes/SetConfigDescription.xx.sql (xx равен pg для PostgreSQL, или ms для MS SQL Server). Подробнее в разделе руководства Примеры использования со стандартными скриптами из папки Fixes.
  51. Добавлена иконка для файлов с аннотациями pdf.
  52. Добавлена возможность удалить все аннотации pdf.
  53. В web-клиенте изменена анимация загрузки.
  54. Вместо фиксированного набора цветов в системе теперь используется гибкий механизм именованных цветовых палитр, подробнее см. Настройки цветов палитры.
  55. В настройки контрола “Выбор цвета” добавлено новое поле “Палитра”, с помощью которого можно указать набор цветов для выбора пользователем, подробнее см. Выбор цвета.
  56. Цвет текста для тега больше не может быть задан пользователем и теперь всегда определяется автоматически на основе выбранного цвета фона.
  57. Для выбора цвета тега добавлена новая системная палитра.
  58. В руководстве разработчика добавлен пример реализации обработчика для нового OAuth-провайдера. Подробнее см. Добавление нового OAuth-провайдера.
  59. Доработаны скрипты setup.sh, upgrade.sh, export.sh, migrate.sh (только linux-версии) для выполнения в неинтерактивном режиме, что позволяет удобно их использовать в сценариях автоматизации. Вызовите скрипт с аргументом --help, чтобы получить краткую справку по доступным аргументам командной строки. За описанием их использования обратитесь к разделу Автоматизация скриптов установки и обновления.
  60. Вложенные изображения в форумах и контроле “Текст с форматированием” теперь всегда используют ссылку для получения своего контента.
  61. В web-клиенте изменён внешний вид тулбара для контрола “Текст с форматированием” и для поля ввода сообщения в форумах и обсуждениях.
  62. В web-клиенте добавлена возможность развернуть на весь экран поле ввода сообщения в форумах и обсуждениях.
  63. В web-клиенте для контрола “Обсуждения” в контекстном меню добавлена кнопка “Войти в режим повышенных привилегий”.
  64. В web-клиенте добавлена возможность отображения диалогов валидации в полноэкранном режиме.
  65. В разделе руководства Использование Redis добавлены подразделы Вывод установленных блокировок и Удаление блокировок с указанием доступных в системе средств для управления блокировками вручную.
  66. Добавлена поддержка протокола HTTP/3 для веб-сервисов, запущенных с использованием Kestrel. Актуально при локальной установке на Windows без использования IIS, а также при установке на Linux, если для front-сервера (nginx, Apache) разрешён протокол HTTP/3. Также настройка Http2Disabled должна быть установлена как false.
  67. Улучшена поддержка версии протокола TLS 1.3. Подробнее про доступные версии протокола TLS обратитесь к разделу Примечание по безопасности и поддержка протоколов HTTPS/TLS.
  68. В руководство разработчика добавлен раздел, описывающий основные концепции создания собственного контроллера для веб-сервиса. Подробнее см. Создание контроллера веб-сервиса на основе API TESSA.
  69. В редактор типа задания добавлена настройка “Форма по умолчанию”, которая позволяет выбрать одну из форм типа задания в качестве формы по умолчанию, или же выбрать в качестве таковой вариант “Пустая форма”. Для варианта завершения типа задания теперь, помимо форм из типа задания, доступен для выбора вариант “Форма по умолчанию”. См. раздел руководства Тип задания.
  70. В карточку правил доступа добавлен флаг “Создание ссылки на скачивание файла/версии”, позволяющий для карточек, включенных в типовое решение управлять возможностями создания временных ссылок на файлы пользователями.
  71. В карточку настроек сервера была добавлена настройка “Максимальный период действия ссылки на файл (дней)”, позволяющая задать максимальное количество дней, в течение которых будет действовать временная ссылка. При создании временной ссылки пользователь может указать меньший период, чем указано в настройке, но не больший.
  72. Добавлены события истории действий, связанные с функциональностью доступа по токенам (в т.ч. для временных ссылок на файлы и для токенов доступа к API): “Создание токена доступа”, “Просмотр токена доступа”, “Получение данных по токену доступа”, “Отзыв токена доступа”.
  73. В web-клиенте изменено действие при клике на файл. Теперь при одинарном клике открывается предпросмотр, если он доступен.
  74. В web-клиенте добавлена возможность копировать выделенный текст в предпросмотре посредством Р7-Офис / OnlyOffice.
  75. В web-клиенте добавлена возможность выбирать режим курсора мыши и выделять текст в предпросмотре PDF.
  76. В web-клиенте добавлено действие при двойном клике на файл: если доступен Deski, откроется файл на редактирование/чтение; если Deski недоступен, откроется предпросмотр файла, если он доступен. На мобильном устройстве всегда откроется файл в предпросмотре, если он доступен.
  77. В функциональные роли (ФР) добавлена настройка “Отображать в задании по умолчанию”. Для ФР “Автор” она включена по умолчанию. Эта настройка определяет необходимость того, чтобы по умолчанию устанавливать флаг “Отображать в задании” для всех добавляемых записей с этой ФР, если только при добавлении записи с этой ФР флаг “Отображать в задании” не был определён принудительно (например, через расширение).
  78. В desktop-клиенте пункт контекстного меню на файлах “Сканировать и загрузить” переименован на “Создать PDF”. Сканирование более не поддерживается.
  79. Для карточек “Календарь” и “Тип календаря: Рабочая неделя” удалено автоматическое заполнение значений для начала и окончания действия исключения при создании новой строки в таблице исключений.
  80. В web-клиенте для таблиц исключений у карточек “Календарь” и “Тип календаря: Рабочая неделя” добавлено автоматическое заполнение даты окончания действия исключения датой начала действия исключения, если дата окончания действия исключения не заполнена. Аналогично для обратной ситуации.
  81. В web-клиенте для таблиц исключений у карточек “Календарь” и “Тип календаря: Рабочая неделя” добавлен запрет возможности выбрать дату окончания действия исключения меньше даты начала действия исключения. И наоборот - выбрать дату начала действия исключения больше даты окончания действия исключения.
  82. Из метаинформации по колонкам представления удалено неиспользуемое свойство HasTag. Контент ячейки может быть расширен, независимо от этого свойства. Слово tag здесь использовалось в широком смысле, отношения к функциональности тэгов/меток оно не имеет.
  83. В web-клиенте добавлены иконки для режимов курсора мыши в предпросмотре PDF.
  84. В desktop-клиенте в контрол “Представление” добавлена настройка “Расположение тегов”.
  85. При редактировании типов (карточек, файлов, диалогов, заданий) все цвета в настройках контролов по умолчанию теперь не заданы (пустые поля), в этом случае фактический цвет по умолчанию определяет тема. Это относится к цвету заголовка для всех контролов, а также к цвету текста, цвету фона и цвету границы для тех контролов, где есть эти настройки.
  86. Для сервисов chronos, jinni, monitor, web, webbi добавлена возможность рандомизировать уникальный идентификатор компонента, хранимый в файле с CID. Это гарантирует, что несколько параллельно запущенных процессов, использующих единственный файл с CID, не получат одинаковый уникальный идентификатор. Для этого укажите аргумент командной строки -randomize-cid или переменную окружения TESSA_RANDOMIZE_CID (любое непустое значение переменной).
  87. В файле app.json для аутентификации LDAP добавлена настройка DefaultUserDomain, позволяющая указать домен пользователя по умолчанию при входе в систему. Подробнее см. в разделе Параметры подключения к LDAP.
  88. В web-клиенте добавлена возможность изменения ширины колонок в представлениях и таблицах.
  89. В web-клиенте в обсуждениях добавлено контекстное меню с возможностью копировать или цитировать часть сообщения.
  90. В web-клиенте добавлена возможность вставить блок-цитату в текстовое поле с форматированием.
  91. В конфигурационный файл app.json для директивы .include добавлена поддержка двойного символа **, который является меткой для рекурсивного поиска по всем подпапкам. Подробнее см. в разделе Директива .include.
  92. В web-клиенте добавлено предупреждение об истечении сессии.
  93. В статических ролях, подразделениях и сотрудниках добавлена возможность наследовать календарь от родителя. Подробнее см. Наследование календарей.
  94. В конфигурационных файлах app.json добавлен автоматически объявляемый символ di. Когда он объявлен, то построение конфигурации выполняется с использованием Dependency Injection контейнера, т.е. это не построение конфигурации по умолчанию. Значение unity возвращается для контейнера IUnityContainer, а значение services - для контейнера Microsoft (IServiceCollection/IServiceProvider). Определённые по умолчанию символы описаны в разделе документации Директива .define.
  95. Удалён плейсхолдер {instanceName}. Использование нескольких экземпляров для одного сервиса более не поддерживается.
  96. В файле app.json добавлена настройка TokenCookiesName, позволяющая указать имя cookies для хранения токена сессии TESSA. Подробное описание см. в документации по настройке production сервера.
  97. Для параметров представления добавлен новый тип фильтрации - “Не содержит”.
  98. Для диалогов реализована поддержка расширений типа. Теперь к типу диалога можно подключить следующие расширения: “Очистка связанных полей”, “Переместить колонку с тегами влево”, “Скрыть вкладку”, “Список файлов в представлении”, “Таблица в представлении”, “Сортировка строк”, “Шаблон файла в контроле html”.
  99. Удалены ссылки на desktop-клиент из уведомлений и поддержка ссылок на desktop-клиент из плейсхолдеров. Из карточки “Настройки сервера” удалён флажок “Отключить ссылки на desktop-клиент для уведомлений и виртуальных файлов”. Удалены плейсхолдеры {link:Action}, {appLink}, {cardLink} и форматтер #cardLink, формировавшие ссылки на desktop-клиент (используйте плейсхолдеры {webAppLink}, {webCardLink} и форматтер #webCardLink для ссылок на web-клиент).
  100. Приложение TessaClient теперь публикуется с доступом только для сотрудников с правами администраторов. С этого релиза рекомендуется использовать web-клиент для работы обычных пользователей.
  101. Из карточки “Настройки сервера” удалена настройка “Период обновления индикатора сообщений”, т.к. индикатор сообщений в desktop-клиенте был удалён.
  102. Из карточки “Настройки сервера” удалена настройка “Роли, которым доступен web-клиент”. Теперь web-клиент доступен всем сотрудникам.
  103. В web-клиенте была добавлена возможность установить маску для текстового поля. Подробнее см. в руководстве разработчика в разделе Примеры расширений.
  104. В файлах app.json для всех сервисов и приложений, а также в файлах проектов тестов .csproj теперь указано включение содержимого файлов applocal-*.json, причём их содержимое переопределит строки в app.json и app-*.json, расположенные по тем же ключам. Это позволяет удобно переопределять любые настройки при разработке. Ранее такие файлы именовались app-local-*.json, что не позволяло переопределить настройки в файлах, имена которых сортируются позже, например, app-web.json.
  105. Удалена настройка “Размер плитки” в карточке “Вторичный процесс” и в настройках кнопок бизнес-процесса в карточке “Шаблон бизнес-процесса”. В web-клиенте настройка игнорируется, а в desktop-клиенте плитка теперь всегда будет иметь полный размер. Приложения desktop-клиента с этого релиза поддерживаются только для использования администраторами и разработчиками.
  106. В настройки электронной подписи добавлена возможность задания параметров прокси-сервера. Подробнее см. в руководстве администратора в разделе Настройки электронной подписи.
  107. Добавлен форматтер #split_par. Он позволяет при замене плейсхолдера не добавлять переносы строк как переносы на новую строку внутри параграфа, а разделяет параграф на несколько параграфов по этим переносам строк. Форматтер применим только для документов Word.
  108. У типа задания “Постановка задачи” убраны варианты завершения “Создать подзадачу”, “Завершить” и “Изменить параметры как автор”, а также теперь запрещено откладывание заданий данного типа.
  109. В web-клиенте реализованы всплывающие уведомления, оповещающие пользователя о результате его действий.
  110. В web-клиент была добавлена возможность установить настройки автоподстановки даты и времени в контрол “Дата и время”. Ранее автоматически подставлялись только минимальные значения даты и времени (01/01/1970 01:00:00) при пропущенных значениях дня, месяца, года, часов, минут и секунд. Теперь с помощью UI расширений можно указать настройку такой автоподстановки. Если настройки не указаны, то при смене фокуса с этого контрола и невалидном значении даты и времени, автоматическая подстановка не выполнится.
  111. Параметры фильтрации с отрицательной коннотацией, такие как “Не равен” и “Не содержит”, в запросах к представлениям теперь объединяются логическим оператором “И”.
  112. Добавлено форматирование строкового названия ссылки представления для случая, когда в настройке DisplayValueColumn ссылки указан алиас не строковой колонки представления.
  113. В web-клиенте реализован вызов контекстного меню контрола при правом клике на тулбар контрола “Представление” с расширением “Список файлов в представлении”.
  114. В настройках параметров представлений добавлен флаг Mandatory, указывающий на обязательность параметра.
  115. В web-клиенте добавлена возможность разворачивания на весь экран многострочного контрола “Строка”.
  116. В метаданные параметров представлений в раздел AutoCompleteInfo добавлена настройка “Режим поиска”. Подробнее см. в документации разработчика в разделе Редактор параметров представления.
  117. В представления конфигурации платформы добавлены ограничения доступных операторов у параметров, для которых выборка фильтруется по значению объекта, когда таких объектов может быть больше одного.
  118. В форумах (обсуждениях) больше нельзя удалить карточку сотрудника через представление, которое отображает участников обсуждения. Хоткей Ctrl+D теперь удаляет участников обсуждения.
  119. В карточку “Сотрудник” на вкладке “Мои замещения” добавлен элемент управления “Кого я замещаю по типу документа”, отображающий список сотрудников, которых текущий сотрудник замещает по типу документа.
  120. Удалено расширение на представления и узлы рабочих мест RecordViewExtension, которое использовалось в целях тестирования desktop-клиента.
  121. Для сертификатов OCSP поддержано расширение id-pkix-ocsp-nocheck.
  122. В web-клиенте добавлена возможность загружать файлы в карточках при клике на область файлового контрола “Загрузить файлы”.
  123. В маршрутах для карточки “Вторичный процесс” в режиме “Кнопка” удалена настройка “Проверить наличие новых заданий после выполнения”, которая была актуальна только для desktop-клиента.
  124. Для desktop-клиента из диалога “Мои настройки” удалена настройка “Отключить затемнение неактивного окна”. Окно затемняется всегда, кроме работы по сессии RDP, или если в файле app.json приложения TessaClient указана настройка "FadeAllowed": true.
  125. Для desktop-клиента из диалога “Мои настройки” удалена вкладка “Боковые панели” с настройками для боковых панелей приложения TessaClient. Теперь боковые панели всегда открываются по клику.
  126. Для desktop-клиента удалена периодическая проверка на наличие новых заданий со всплывающими уведомлениями по ним, а также настройка “Отключить всплывающие уведомления по заданиям” из диалога “Мои настройки”.
  127. Для desktop-клиента из диалога “Мои настройки” удалена настройка “Отключить все всплывающие уведомления”. Любые уведомления отображаются как всплывающие сообщения в правом нижнем углу экрана.
  128. В настройки кнопок шаблонов бизнес-процессов добавлена настройка “Обработчик кнопки”, которая позволяет дополнить и переопределить логику обработки нажатия кнопки. Подробнее про создание своих обработчиков кнопок бизнес-процессов в руководстве разработчика бизнес-процессов.
  129. В типы карточек “Статическая роль”, “Подразделение”, “Метароль”, “Временная роль”, “Умная роль”, “Динамическая роль” добавлено представление “Заместители по типу документа”.
  130. При обработке шаблонов файлов в формате .docx упрощена логика определения области таблицы. Теперь для указания строки таблицы документа как области таблицы достаточно в качестве области указать одну или несколько ячеек строки. При этом все последующие строки таблицы автоматически определяются в указанную область. Подробнее смотрите в разделе шаблоны и плейсхолдеры.
  131. В web-клиенте добавлена возможность разворачивания на весь экран редактора кода.
  132. Из настроек узлов рабочих мест удалено свойство “Где отображать узел”. Теперь все узлы отображаются и в web-клиенте, и в desktop-клиенте. Desktop-клиент этой версии платформы не должен использоваться для работы обычных пользователей (не администраторов и не инженеров). Например, следует учитывать, что в desktop-клиенте теперь отображается папка “Диаграммы”, но вместо диаграмм выводятся таблицы.
  133. Удалено поле “Архитектура приложений” в карточке сотрудника. Приложения desktop-клиента всегда запускаются в соответствии с разрядностью ОС пользователя, т.е. как если бы в этой настройке указано значение “Автоматически”.
  134. Удалены расширения на представления, которые использовались для тестирования и не имели реализации для web-клиента: CustomButtonWorkplaceComponentExtension, CustomNavigationViewExtension, PreviewExtension.
  135. Добавлена возможность использовать JWT токены при работе с Р7-Офис / OnlyOffice.
  136. В тип карточек “Сотрудник” добавлено представление “Заместители по типу документа”.
  137. В файл app-plugins.json сервиса Chronos в настройки плагинов WorkflowSchedulerPlugin и RolesSchedulerPlugin добавлен триггер запуска плагина раз в 10 минут. Он перезапустит плагины в случае, если их работа была непредвиденно остановлена без остановки Chronos.
  138. Для истории действий добавлены новые действия, записываемые при удалении или добавлении значений для групп ссылок или для типов групп ссылок.
  139. Тип входа в карточке сотрудника “Пользователь LDAP” теперь совместим с аутентификацией SAML и OAuth. Ранее было разрешено использовать только вход для сотрудника, в карточке которого указан тип входа “Пользователь Windows”.
  140. Удалена кнопка “Выполнить компиляцию” с основной вкладки карточек типа “Шаблон файла”.
  141. В настройки кнопок вторичных процессов добавлена настройка “Обработчик кнопки”, которая позволяет дополнить и переопределить логику обработки нажатия кнопки. Подробнее про создание своих обработчиков кнопок вторичных процессов в руководстве разработчика.
  142. В заданиях в таблицах с информацией о дополнительном согласовании доработан вывод состояния. Теперь в поле состояния выводится “Согласовано”/”Не согласовано” сотрудником, в зависимости от варианта завершения задания дополнительного согласования.
  143. В web-клиенте в тулбаре представления добавлена группировка элементов.
  144. Для типов карточек “Группа ссылок” по умолчанию включено фиксирование действий в историю.
  145. Расширен вывод информации об ошибках, возникающих при выполнении операций с карточкой, тип которой содержит ошибки.
  146. Обновлён раздел документации по работе с оптическим распознаванием символов (OCR) в файле Распознавание текста в файле.
  147. В руководство разработчика добавлен раздел Примеры расширений для работы с оптическим распознаванием символов (OCR).
  148. В карточку операции OCR добавлен обозреватель свойств. Все верифицируемые поля реализованы в виде свойств обозревателя.
  149. Добавлен новый способ отображения распознанных в OCR элементов “Поля”. В данном режиме выполняется отображение содержимого распознанного файла без текстового слоя, но с возможностью вывода распознанных элементов, связанных с верифицируемыми полями. При выборе необходимого поля в области верификации будет подсвечен распознанный элемент, связанный с полем, в области предпросмотра.
  150. Для распознанных в OCR элементов добавлена генерация уникального идентификатора элемента, что позволяет его связать с верифицируемым полем.
  151. Реализованы упрощённый (используется по умолчанию) и экспертный режимы работы с карточкой операции OCR. Подробнее см. в руководстве пользователя.
  152. Реализована возможность создания карточки операции OCR вне контекста исходной карточки документа, а также без связи с исходной карточкой документа. Подробнее см. в руководстве разработчика.
  153. При обработке плейсхолдеров, когда известно, что данные карточки загружены полностью, а также в плейсхолдере отсутствуют соединения с другими таблицами, такие данные будут получены напрямую из объекта карточки, не делая запрос к БД. Это позволяет использовать в плейсхолдерах, например, значения из виртуальных коллекционных таблиц, которые отсутствуют в БД, что ранее было невозможно.
  154. В web-клиенте для тем добавлена возможность добавлять изображения через секцию resources/images/.
  155. В TessaAdmin в диалогах импорта рабочих мест и представлений для флага “Заменить разрешения в базе данных” добавлена всплывающая подсказка с пояснением.
  156. Для Deski удалена переменная окружения DESKI_DB_LOADING_MODE_FILEIO. Для файла vlog на ОС Windows отображается размер больше актуального, но не более чем на 100 Мб, а общий размер зарезервированного места в папке %LocalAppData%/tessa/deski/.deski_data/db не превышает 300 Мб (это место по-прежнему освобождается после закрытия Deski, т.к. является зарезервированным, а не записанным на диск). Для ОС Linux/macOS визуальных изменений нет.
  157. Для применения настроек замещения после их изменения в карточке “Настройки сервера” больше нет необходимости перезапускать сервер. Достаточно перезапустить клиент.
  158. Расширение типа карточки “Сортировка строк” теперь применяется и при экспорте карточки.
  159. При экспорте карточек в JSON строки коллекционных секций теперь по умолчанию сортируются по RowID.
  160. В web-клиенте на основную панель приложения добавлена кнопка, при помощи которой можно открыть рабочее место.
  161. В скрипты Export.bat и export.sh добавлен экспорт карточек календарей, настроек форматирования и групп ссылок.
  162. В web-клиенте изменен дизайн кнопки выбора цвета блока в панели инструментов у текстового поля с форматированием.
  163. В desktop-клиенте на стандартной вкладке карточек “История заданий” удалена ссылка “открыть в отдельной вкладке” для открытия вкладки с представлением TaskHistory (в web-клиенте версии 4.0 она уже не отображалась). Для вывода истории заданий в представлениях (в т.ч. для web-клиента) используйте контрол “Представление”, а стандартную вкладку скройте через расширение типа карточки. Пример такой настройки в тестовом типе карточки Car (“Автомобиль”).
  164. Удалено расширение для узла рабочего места CardEditorExtension, которое использовалось в desktop-клиенте для вывода вкладки карточки по идентификатору из представления. Расширение не использовалось в web-клиенте.
  165. В web-клиенте обновлен дизайн файловых контролов.
  166. Добавлена документация по API web-клиента с описанием модулей (пространств имён), типов, свойств, функций, и с примерами использования. В документации по системе ссылка доступна из раздела “Документация по Web API” на вкладке “Разработчику”. В архиве со сборкой актуальная документация расположена в папке WebApiDocs, из неё откройте файл index.html в браузере (утилита DocServe для этого не требуется, в отличие от папки Docs).
  167. Сотрудник, берущий задание в работу, теперь записывается в список связанных с заданием ролей как дочерний к первой записи из тех, к которым оно относится по каждой из имеющихся у него функциональных ролей, если в списке связанных с заданием ролей он не представлен своей персональной ролью.
  168. В webbi добавлена возможность считывать содержимое конфигурационного файла из стандартного потока ввода (stdin) при помощи задания ключа -cstdin. Пример использования tadmin PrintJson ../webbi/app.json -q|./webbi -cstdin.
  169. На странице /check для сервиса web добавлен вывод кода сервера Server code, указанного в конфигурационных файлах app*.json по ключу "ServerCode".
  170. Добавлены трансформер IConfigurationStorageTransformer и загрузчик IConfigurationItemSourceLoader для конфигурационных файлов app*.json, значения для которых получают из Redis. Подробнее см. в разделе документации Использование Redis.
  171. Добавлен трансформер IConfigurationStorageTransformer для строки подключения в конфигурационном файле app*.json, чтобы получить данные для подключения к базе данных из секрета Hashicorp Vault. Подробнее см. в разделе документации Использование Hashicorp Vault для формирования строки подключения к базе данных.
  172. Добавлен раздел документации Использование Hashicorp Vault для хранения логинов и паролей в строках подключения, описывающий настройку хранилища секретов Hashicorp Vault для указания логина и пароля к базе данных PostgreSQL в конфигурационных файлах app.json.
  173. В web-клиенте обновлён дизайн диалогов.
  174. В web-клиенте для аннотаций pdf добавлен тип аннотации “Окружность”.
  175. В web-клиенте для аннотаций pdf добавлена возможность группового выделения.
  176. В web-клиенте для аннотаций pdf добавлена возможность изменения размера превью страниц.
  177. Для трассировки серверов приложений добавлены специальные группы * и ALL, включающие в себя все доступные источники трассировки.
  178. Для трассировки серверов приложений добавлены фильтрации по названию типа карточки и по идентификатору универсального запроса.
  179. Для серверов приложений добавлена возможность трассировать операции с файлами в карточках с фильтрацией по идентификатору файла FileID и по типу файла FileTypeID, FileTypeName.
  180. В web-клиенте общие теги больше не обозначаются иконкой. Теперь используется цветовая индикация в виде боковой полосы, которая в два раза шире обычной.
  181. Добавлен загрузчик IConfigurationItemSourceLoader для конфигурационных файлов app*.json, который позволяет включать через директиву include содержимое файлов, зашифрованных по алгоритму AES256 с использованием файлов сертификатов. Подробнее см. в разделе документации Использование зашифрованных файлов конфигурации.
  182. В консольную утилиту tadmin добавлены команды для шифрования и расшифрования файлов по алгоритму AES256. Подробнее см. в разделе документации Команды для шифрования и расшифрования файлов.
  183. В сообщение об ошибке “Невозможно изменить карточку. Требуется версия N, но в действительности версия M.” добавлен идентификатор карточки, к которому оно относится.
  184. В web-клиенте при добавлении файла в файловый контрол, поддерживающий категории, добавлена возможность выбора категорий из представления.
  185. Для конфигурационных файлов app.json в директиве .include файлы, содержимое которых уже было обработано, не включаются повторно. Так, если файл с именем app.json содержит директиву app*.json, то текущий файл app.json не будет включён (что могло привести к зацикливанию). Чтобы при включении файлов не использовать такое поведение, укажите в директиве вместо строки "app*.json" объект {".files": "app*.json", "always": true}. В файле applocal-server.json, используемом для разработки расширений (в папке Source из архива сборки), выполняется включение файла app-webdev.json с такой опцией. Подробнее см. в разделе Директива .include.
  186. В представлении с удалёнными файлами добавлена красная подсветка для записей, относящихся к файлам, по которым произошла ошибка в ходе загрузки контента.
  187. В маршрутах в этапе “Согласование” изменено поведение при работе в маршруте при определении возможности выполнения перехода на доработку или продолжения выполнения маршрута. Теперь помимо этапов “Согласование” учитываются и этапы “Процесс согласования”.
  188. В маршрутах в шаблоне этапов “Возврат на доработку” теперь также учитывается состояние этапов “Процесс согласования”.
  189. В маршрутах и конструкторе бизнес-процессов в настройки этапа и действия “Доработка” добавлен параметр “Доступ на редактирование схемы согласования”.
  190. Добавлено разрешение “Редактирование схемы согласования” в правило доступа, которое позволяет сотруднику редактировать и создавать экземпляры схемы согласования в карточке.
  191. В web-клиенте в истории заданий переработаны подсказки, теперь подсказки открываются по нажатию кнопки.
  192. В web-клиенте доработана логика платформенных генераторов действий (определяющих доступные пункты меню) для контекстных меню представлений и контролов “Представление”. Теперь в таблицах, если контекстное меню вызывается от невыделенной строки, то действия будут генерироваться в контексте этой строки, причём сама строка выбрана не будет. Если контекстное меню вызывается от выделенной строки, то действия будут генерироваться в контексте всех выделенных на момент генерации строк.
  193. В web-клиенте в компактном режиме реализован сворачивающийся быстрый поиск представления. По умолчанию свернут в кнопку, при раскрытии заменяет собой заголовок представления.
  194. Добавлены настройки “Системный” и “Порядок” для категорий файлов. Системные категории файлов нельзя выбрать в представлении FileCategoriesFiltered, а также такие категории нельзя назначить файлам с клиента. Настройка “Порядок” отвечает за порядковый номер категории при отображении их на клиенте. Теперь категории сортируются по полю “Порядок”, а для категорий с одинаковым порядком - по алфавиту.
  195. В web-клиенте для аннотаций pdf добавлена поддержка работы со страницами, перевернутыми на углы 90, 180, 270.
  196. Везде, где доступны настройки маппинга представления, добавлена возможность указывать “Формат текста”, если тип поля у привязки – “Поле карточки”. В случае указания в поле карточки идентификатора из комплексной колонки можно использовать стандартные правила форматирования строк с применением специальных указателей для размещения колонок комплексной колонки.
  197. Везде, где доступны настройки маппинга представления, добавлена возможность указывать “Оператор сравнения” для всех вариантов маппинга, где могут быть доступны какие-либо операторы сравнения, кроме EqualsTo.
  198. В настройках маппинга представления для типа поля у привязки “Поле карточки” добавлена возможность привязки к коллекционным секциям. При обработке такого поля система передаёт в параметры представления список значений по всем записям коллекционной секции. При обработке внутри формы редактирования строки передаётся значения только текущей строки. Если же внутри формы редактирования строки используется маппинг на дочернюю коллекционную секцию (секцию в которой есть ссылка на родителя), то передаются только значения строк, у которых родителем является текущая строка.
  199. При ошибке во время получения содержимого файла карточки теперь создаётся карточка “Ошибка” с исходным исключением, которое не передаётся пользователю, когда включена настройка "SecureServerStackTrace": true в конфигурационных файлах app.json.
  200. При выполнении компиляции скриптов конструктора бизнес-процессов и кнопок бизнес-процессов через команду tadmin Compile в сообщения компилятора добавлен вывод имени шаблона бизнес-процесса.
  201. Добавлены новые виды плейсхолдеров {e:...} и {te:...}, позволяющие вывести результат выполнения выражения, указанного в плейсхолдере, в качестве значения плейсхолдера. Подробнее смотрите в руководстве администратора.
  202. В задание “Доработка” KrEditInterject добавлено поле “Комментарий”, а в одноимённом задании KrEdit поле “Комментарий” переименовано в “Комментарий к циклу маршрута”.
  203. В web-клиенте удален глобальный тип guid. Вместо него теперь используется тип string.
  204. В карточках типа “Правило доступа” для расширенных настроек прав доступа к файлам добавлены параметры “Допустимое количество файлов” и “Обязательный файл”. Подробнее см. в руководстве администратора.
  205. В маршрутах для вторичных процессов, работающих в режиме “Кнопка” или “Действие”, добавлена возможность указания названия и идентификатора вторичного процесса в сообщении о недоступности для выполнения.
  206. При обработке директивы .include в конфигурационных файлах app.json включение файлов в очередь обработки теперь осуществляется “вглубь”. Например, пусть файл app.json включает файлы app1.json и app2.json, а файл app1.json включает other1.json и other2.json. Тогда обработка включаемых файлов будет выполнена в порядке: app.json, app1.json, other1.json, other2.json, app2.json. Подробнее см. в разделе Директива .include.
  207. В сообщение об ошибке “Тип карточки использует типы документов, но в карточке не указан тип документа.” добавлена информация о типе карточки и её идентификаторе.
  208. Добавлена поддержка редактирования параметров задания (дайджест и плановая дата) в любом типе задания. В типах задания появился флаг “Разрешить редактирование параметров задания”. При наличии этого флага и разрешения на изменение дайджеста и плановой даты задания в любой из функциональных ролей, пользователю будет доступен вариант завершения “Изменить параметры задания”.
  209. Добавлена обработка события Workflow Engine “Изменить параметры задания” и соответствующий сигнал ModifyTaskParameters.
  210. Добавлен плейсхолдер {today}. В отличие от плейсхолдера {date}, плейсхолдер {today} всегда возвращает текущую дату/время, тогда как в плейсхолдере {date} возвращаемая дата/время могут зависеть от контекста и возвращать, например, дату документа как в именах последовательностей для выделения номеров.
  211. Для кнопок вторичных процессов добавлены настройки “Алиас”, “Отображать на тулбаре” и “Скрывать из интерфейса”, подробнее см. раздел документации Карточка “Вторичный процесс”: режим “Кнопка”.
  212. У веб-сервиса webbi удалён роут /switch перевода системы в режим технического обслуживания.
  213. У веб-сервиса webbi удалён не используемый более ключ -unrestricted.
  214. В web-клиенте добавлена возможность в предварительном просмотре отправлять файлы PDF на печать.
  215. Во всех записях истории действий добавлен вывод информации об устройстве, с которого выполнено обращение к компонентам платформы. Если обращение выполнено не в рамках HTTP-запроса, или HTTP-запрос инициировал фоновую задачу и был завершён, то устройством считается то, на котором выполняется дальнейшая обработка.
  216. В представление “История действий” добавлены параметры “IP-адрес” и “Компьютер”, позволяющие фильтровать все записи истории по соответствующей информации.
  217. Добавлена настройка MaxParallelBackgroundTasks веб-сервиса для указания ограничения на количество параллельно выполняемых фоновых заданий, для которых указано, что они могут выполняться параллельно.
  218. В web-клиенте добавлена возможность затемнять фон приложения в диалоговом окне настроек “Фон и тема”.
  219. В web-клиенте добавлена возможность позиционировать фон приложения в диалоговом окне настроек “Фон и тема”.
  220. В web-клиенте переработаны компонент и модель представления для контрола “Дата и время”.
  221. В маршрутах и конструкторе бизнес-процессов в этапы и действия “Согласование” и “Подписание” добавлен параметр “Не создавать запись “Возврат на доработку” в истории заданий”. Параметр позволяет отключить создание указанной записи в истории заданий при возврате на доработку.
  222. В web-клиенте увеличен размер аватара пользователя на главной панели приложения.
  223. В web-клиенте добавлена возможность в предварительном просмотре отправлять текстовые файлы, картинки и html на печать.
  224. Теперь в контроле “Список файлов” категории файлов по умолчанию будут отсортированы в соответствии с заданным порядковым номером, а в пределах одного номера - по алфавиту.
  225. В web-клиенте добавлена возможность подписания больших файлов.
  226. В web-клиенте на мобильных устройствах пункты меню файлового контрола для работы с “OnlyOffice” скрыты.
  227. В метаинформацию сабсета представления добавлено свойство SortingColumns, позволяющее указать колонки для программной сортировки по результатам, полученным из СУБД. Если поле не заполнено, то значения сабсета выводятся в соответствии с порядком строк, возвращённым из SQL.
  228. В метаинформацию сабсета представления добавлено свойство NullRefCaption, которое позволяет указать строку локализации для отображения пустого значения сабсета, в колонке RefColumn которого возвращено NULL. Если не указано, то по умолчанию будет использовано значение, возвращённое в колонке CaptionColumn соответствующей строки, или локализованная строка “(пусто)”, если это значение является пустой строкой или если указан NormalizationSource.
  229. В метаинформацию колонки представления добавлено свойство NullValue, значение которого будет подставлено вместо NULL в строки с результатами выполнения представления на место этой колонки (на сервере). Если не задано, то исходное значение NULL сохраняется. Тип значения приводится к типу колонки в инвариантной культуре. Для бинарных колонок выполняется парсинг из формата строки base64. Подстановка выполняется после нормализации, если она задана для этой колонки.
  230. Если в контекстных ролях не указана колонка с именем сотрудника, то это имя будет получено из справочника нормализации (по умолчанию справочник Users, его можно переопределить в серверном API через объект IRoleNormalizationInfo). Ранее в таком случае имя оставалось незаполненным.
  231. В представлении “История действий” удалён параметр фильтрации “Имя сотрудника”. Используйте параметр с автодополнением “Сотрудник”, в котором поиск по неточному имени возможен в справочнике сотрудников, доступном через троеточие.
  232. При изменении пароля через карточку сотрудника пароль отправляется в формате base64. Поле PasswordRepeat при отправке имеет значение null.
  233. В web-клиенте переработаны компонент и модель представления для контрола “Метка”.
  234. В web-клиенте в предварительный просмотр добавлена поддержка файлов tsx, ts, js, jsx и подсветка синтаксиса.
  235. В диалоге “Структура карточки” при нажатии на кнопку “Сохранить в файл” структура карточки теперь сохраняется в формате json.
  236. В web-клиенте для удобного предпросмотра файлов добавлены кнопки переключения между файлами.
  237. В конструктор бизнес-процессов в логику асинхронной обработки добавлена поддержка механизма повторного запуска асинхронной обработки сигнала. Подробнее см. в разделе Асинхронная обработка сигнала.
  238. В конструктор бизнес-процессов в настройки связи добавлен флаг “Повторить асинхронную обработку сигнала после ошибки”, позволяющий включить повторный запуск асинхронной обработки сигнала после возникновении ошибки его обработки.
  239. В конструктор бизнес-процессов в действие “Таймер” добавлен флаг “Повторить асинхронную обработку сигнала после ошибки”, позволяющий включить повторный запуск асинхронной обработки сигнала после возникновении ошибки его обработки.
  240. Выпадающий список типов колонок в TessaAdmin и SchemeEditor теперь выводится отсортированным по имени типа.
  241. В конструктор бизнес-процессов в логику асинхронной обработки добавлена поддержка механизма синхронизации обработки. При включении настройки две асинхронные обработки, выполняемые с синхронизацией по одному и тому же объекту синхронизации, никогда не выполняются одновременно и всегда будут выполнены последовательно вне зависимости от того, выполняется ли обработка сигнала для одного и того же процесса или для разных.
  242. В конструктор бизнес-процессов в настройки связи добавлены настройки “Синхронизировать обработку сигнала при асинхронной обработке” и “Объект синхронизации”, позволяющие настроить механизм синхронизации асинхронной обработки.
  243. В конструктор бизнес-процессов в действие “Таймер” добавлены настройки “Синхронизировать обработку сигнала при асинхронной обработке” и “Объект синхронизации”, позволяющие настроить механизм синхронизации асинхронной обработки.
  244. В настройку типа карточки был добавлен флаг “Разрешить теги”, управляющий возможностью использования тегов в карточках данного типа.
  245. Добавлена очистка поля “Комментарий к циклу согласования” при создании копии карточки.
  246. В карточку Автомобиль добавлено поле Телефон покупателя, для которого установлена маска для номера телефона.

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

  1. Добавлена команда UpgradeWorkflowProcesses для обновления версий действий в экземплярах и шаблонах бизнес-процессов.
  2. Для команды ManageRoles добавлены субкоманды RecalcSmartRoleGenerators и RecalcAllSmartRoleGenerators для перерасчёта генераторов умных ролей. Подробнее см. Управление ролями в части замещений и пересчёта ролей.
  3. В команду PrintComponents добавлены параметры: -r для опционального указания строки подключения к Redis, -sc для опционального указания кода сервера, используемого при подключении к Redis (если не указаны, будут использованы настройки из конфигурационного файла app.json). Также добавлен стандартный параметр -q. Подробнее см. в разделе Команда просмотра состояния компонентов.
  4. В команду GenerateCommandKey добавлены параметры: -r для опционального указания строки подключения к Redis, -sc для опционального указания кода сервера, используемого при подключении к Redis (если не указаны, будут использованы настройки из конфигурационного файла app.json). Подробнее см. в разделе Команда генерации ключей.
  5. Для команды DeleteCards добавлен параметр -b, при указании которого карточки удаляются с возможностью восстановления администратором.
  6. Добавлена клиентская команда PrintLocksClient, с помощью которой можно вывести список идентификаторов заблокированных объектов из Redis для указанных групп. Подробнее см. в разделе Консольная административная утилита tadmin.
  7. Добавлена команда PrintLocks, с помощью которой можно вывести список идентификаторов заблокированных объектов из Redis для указанных групп. Подробнее см. в разделе Команды для прочих административных функций.
  8. Добавлена команда DeleteLocks, с помощью которой можно удалить блокировки заблокированных объектов из Redis. Подробнее см. в разделе Команды для прочих административных функций.
  9. Добавлена клиентская команда DeleteLocksClient, с помощью которой можно удалить блокировки из Redis для указанных групп. Подробнее см. в разделе Консольная административная утилита tadmin.
  10. Добавлена клиентская команда PrintComponentsClient, с помощью которой можно получить актуальную информацию по всем известным компонентам системы из внешнего контура. Подробнее см. в разделе Команда просмотра состояния компонентов.
  11. Переименованы команды: GenerateCommandKey -> GenerateDiscoveryKey, PrintComponents -> PrintDiscoveryInfo, ViewKey -> ViewDiscoveryKey.
  12. В команде PackageApp изменена обработка необязательного параметра -ico. Теперь в данном параметре указывается путь к файлу .png с иконкой приложения, а по умолчанию выполняется поиск файла с именем запускаемого приложения, например, TessaClient.png. Если файл не найден или некорректный, то публикация выполняется без иконки.
  13. В файле app.json консольной утилиты теперь указан Management endpoint, который равен по умолчанию значению "maintenance", что соответствует значению по умолчанию в app.json сервиса webbi. Это позволяет не указывать параметр -wm:management для команд, использующих механизмы управления компонентами, таких как команды DeleteLocksClient, PrintLocksClient и др.
  14. Переименован скрипт TypeFontsFix на TypeSettingsFix. Также теперь он выполняет исправление других настроек блоков и контролов.
  15. Для команды tadmin ConvertCards удалён параметр -mode. Преобразование карточек и библиотек карточек в форматы, совместимые с предыдущими версиями платформы, более не поддерживается.
  16. Для команды tadmin ConvertConfiguration удалён режим -mode:Downgrade. Преобразование файлов конфигурации в форматы, совместимые с предыдущими версиями платформы, более не поддерживается.
  17. Для всех команд и скриптов удалён параметр -i:instanceName, определяющий имя экземпляра сервера. Использование нескольких экземпляров для одного сервиса более не поддерживается.
  18. Справка по командам на Windows теперь выводит ключи символом - вместо /. При этом по-прежнему возможно использовать оба символа.
  19. Для команд SendCommand и SendCommandClient с параметром EnableTracing добавлены аргументы -pp:tn=cardTypeName и -pp:r=requestType, позволяющие фильтровать трассировку по названию типа карточки и по идентификатору универсального запроса.
  20. В команды tadmin DeleteLocksClient и PrintLocksClient добавлен параметр -sc, позволяющий задавать код сервера. Если параметр не задан, то будет использовано значение ServerCode из конфигурационного файла утилиты tadmin.
  21. Удалена команда Maintenance. Для перевода системы в режим технического обслуживания используйте команду tadmin SendCommand.
  22. Для команды tadmin ConvertConfiguration добавлена поддержка конвертации формата для файлов поисковых запросов .jquery.
  23. Для команды Script добавлен скрипт UpgradeSearchQueriesSql, который обновляет версию формата метаданных поисковых запросов в базе данных.
  24. Добавлена команда для исправления типов карточек, файлов, диалогов и заданий tadmin RepairTypes.

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

  1. .NET 8.0.15
  2. BarcodeLib 3.1.5
  3. BitMiracle.LibTiff.NET 2.4.660
  4. CAdESLib 1.6.5
  5. CsvHelper 33.0.1
  6. DocumentFormat.OpenXml 3.3.0
  7. Hardcodet.NotifyIcon.Wpf 2.0.1
  8. HtmlAgilityPack 1.12.0
  9. HtmlSanitizer 9.0.876
  10. iTextSharp.LGPLv2.Core 3.7.1
  11. ITfoxtec.Identity.Saml2.MvcCore 4.15.3
  12. Kerberos.NET 4.6.77
  13. linq2db 5.4.1
  14. LiteDB 5.0.21
  15. MailKit 4.11.0
  16. Microsoft.CodeAnalysis.CSharp.Workspaces 4.13.0
  17. Microsoft.Data.SqlClient 6.0.1
  18. Microsoft.IdentityModel.Protocols.OpenIdConnect 8.8.0
  19. Microsoft.NET.Test.Sdk 17.13.0
  20. NetOfficeFw.Word 1.9.7
  21. NLog 5.4.0
  22. NLog.Web.AspNetCore 5.4.0
  23. Npgsql 8.0.7
  24. NTwain 3.7.4
  25. NUnit 4.3.2
  26. NUnit3TestAdapter 5.0.0
  27. OpenCvSharp4 4.10.0.20241108
  28. OpenTelemetry 1.11.2
  29. OpenTelemetry.Exporter.OpenTelemetryProtocol 1.11.2
  30. OpenTelemetry.Extensions.Hosting 1.11.2
  31. Otp.NET 1.4.0
  32. PDFsharp-wpf 6.1.1
  33. Quartz 3.14.0
  34. SixLabors.ImageSharp.Drawing 2.1.5
  35. SkiaSharp 3.116.1
  36. SkiaSharp.QrCode 0.7.0
  37. StackExchange.Redis 2.8.31
  38. Swashbuckle.AspNetCore 8.1.1
  39. Swashbuckle.AspNetCore.Newtonsoft 8.1.1
  40. TesseractOCR 5.4.2
  41. ZXing.Net 0.16.10

Изменения API

  1. В web-клиенте обновлена версия языка TypeScript 5.7. Используйте новые возможности, появившиеся в языке, при разработке расширений web-клиента.
  2. При запросе контента с клиента через стандартные контроллеры предпочитаемое имя файла, возвращаемое методом CardGetFileContentResponse.TryGetSuggestedFileName(), теперь всегда по умолчанию определяется для физических файлов в соответствии с актуальным именем файла в базе данных, т.к. указывается свойство CardGetFileContentRequest.SuggestFileName = true. Например, это позволяет скачать файл по ссылке, в которой не указано имя файла, а указан только его идентификатор.
  3. В интерфейс ITwoFactorAuthHandler добавлено свойство AttemptTimeout. Используйте его, чтобы задать время жизни для попытки входа пользователя в систему при использовании определённого типа 2FA. Актуально для типов 2FA, которые используют уведомления для отправки кода подтверждения.
  4. В контекст TwoFactorAuthContext добавлено опциональное свойство ExistentAttemptID, которое хранит текущий идентификатор попытки входа пользователя в систему. Используйте его, если необходимо выполнить проверку, что двухфакторная аутентификация для пользователя уже была инициирована.
  5. В интерфейс ITwoFactorAuthRepository добавлены методы для работы с информацией о попытке входа пользователя в систему для определённого типа 2FA.
  6. Добавлен объект ITwoFactorAuthPermissionsManager, отвечающий за проверку доступа к настройкам двухфакторной аутентификации пользователя.
  7. Добавлен интерфейс обработчика обновлений действий на новую версию IWorkflowEngineActionUpgradeHandler. Подробнее см. обновление версий действий.
  8. Добавлен интерфейс IWorkFlowEngineTileContext, представляющий контекст компиляции для условий кнопок бизнес-процесса, подробнее см. раздел документации API скриптов в условиях для кнопок бизнес-процессов.
  9. Изменён интерфейс IWorkflowEngineTileCompiled. В метод SetDependencies добавлены параметры: processTemplateID - идентификатор процесса, и context - объект контекста компиляции для скриптов условий кнопок бизнес-процесса. Добавлены методы TryGetProcessInstanceAsync и GetAllProcessInstancesAsync для получения экземпляров бизнес-процесса внутри скриптов условий кнопок бизнес-процесса. Подробнее см. раздел документации API скриптов в условиях для кнопок бизнес-процессов.
  10. В руководство разработчика добавлен пример реализации контроллера с REST-методами для работы с типом контента multipart/form-data. Подробнее см. REST-методы для работы с multipart.
  11. Изменён интерфейс IWorkflowTileCommand. Из метода OnClickAsync удалён неиспользуемый параметр tile.
  12. Изменён интерфейс ITreeNode, удалён неиспользуемый метод Clone.
  13. Для объекта IFileConverterRequest добавлены методы-расширения SetPdfFilter и TryGetPdfFilter. Они позволяют установить и получить дополнительные параметры командной строки, которые используются при конвертации документа в pdf посредством unoconv.
  14. Добавлены опциональные параметры selectPdfVersion и useTaggedPDF в методе контроллера api/v1/converter/operations/{id} для веб-сервиса Jinni.
  15. В объект с параметрами для генерации контекста проверки прав доступа KrPermissionsCreateContextParams добавлен параметр ServiceType, определяющий тип сервиса, от которого был получен текущий объект запроса, для которого выполняется проверка прав доступа.
  16. В токен прав доступа KrToken добавлено свойство ServerOnly, при установке которого токен прав доступа учитывается только при проверке прав доступа для серверных запросов.
  17. Добавлена клиентская регистрация для объекта IOcrAsyncService. Используйте её, если необходимо работать с операциями OCR из клиентского приложения.
  18. Добавлен класс Tessa.Platform.ConfigurationHelper, предоставляющий возможности получить и изменить расположение конфигурационных файлов. Используйте его метод InvalidateAll() для сброса кэша значений для всех конфигурационных файлов, используемых в платформе (например, при изменении настроек для определения путей или при изменении соответствующих переменных окружения).
  19. Тип свойства ITessaViewRequest.Parameters (переименовано из Values) изменён на IList<RequestParameter>.
  20. Изменена сигнатура статического метода CardComponentHelper.GetContentContextsAsync. Теперь, если параметр fileIDs не был передан, то метод будет выполнять получение контекстов для всех файлов карточки.
  21. Добавлена стратегия ICardFileDeleteExecutionStrategy для выполнения запросов на удаление и восстановление восстановления карточки файла.
  22. В стратегию ICardFileVersionStrategy добавлен новый метод GetFilesAsync для получения списка идентификаторов файлов, относящихся к карточке.
  23. В класс CardFile добавлено свойство DeletionMode типа перечисления CardFileDeletionMode. Свойство содержит способ удаления файла. Используйте его, если необходимо удалить файл с возможностью восстановления или восстановить удалённый файл. Пример использования см. в руководстве разработчика.
  24. В метод расширения FileExtensions.RemoveWithNotificationAsync добавлен опциональный параметр withBackup (по умолчанию false). Он показывает, что файлы удаляются с возможностью восстановления.
  25. Добавлено новое значение RemovedWithBackup в перечислении FileNotificationType. Оно показывает, что файл был удалён с возможностью восстановления.
  26. Изменена сигнатура метода-расширения CardExtensions.HasContent. Теперь метод принимает объект типа CardFile вместо CardFileState.
  27. После выполнения действия бизнес-процесса “Добавить файл по шаблону” в объекте контекста будет храниться дополнительная информация о создаваемом файле и шаблоне. Подробнее см. в разделе документации Описание действий бизнес-процессов. Добавить файл по шаблону..
  28. Добавлен объект IRedisConnectionStringCleaner для очистки переданной строки подключения к Redis от пароля и другой чувствительной информации. Используйте на сервере перед логированием строки подключения или её выводом на консоль.
  29. Добавлен объект IDbConnectionStringCleaner для очистки переданной строки подключения к базе данных от пароля и другой чувствительной информации. Используйте на сервере перед логированием строки подключения или её выводом на консоль.
  30. После выполнения обработчика этапа “Создать файл по шаблону” в объекте контекста будет храниться дополнительная информация о создаваемом файле и шаблоне. Подробнее см. в разделе документации Примечание для обработчика этапа “Создать файл по шаблону”.
  31. Добавлен интерфейс ITopicParticipantsProvider для получения всех участников топика и признака их подписки на топик.
  32. Добавлен интерфейс IStorageContentConverter, позволяющий реализовать конвертер для выгружаемого содержимого карточек. Подробнее см. в разделе документации Конвертеры содержимого полей карточек.
  33. В web-клиенте добавлен новый тип диалога controls с фоном, соответствующим фону карточки, но без рамки, используемой в типе card.
  34. В web-клиенте изменён способ создания модели представления для компонента окна логина. Теперь модель представления регистрируется в DI-контейнере и возвращается как зависимость.
  35. Добавлены новые типы расширений для подсистемы выражений: IExpressionInterpreterExtension и IExpresionExtension. Подробнее про данные типы расширений см. раздел Расширения подсистемы выражений.
  36. Добавлена реализация интерфейса IRedisInitializer - класс RedisInitializerChecker, позволяющий проверить инициализированность данных системы в Redis вместо выполнения их полноценной инициализации.
  37. В web-клиенте добавлена поддержка пользовательских элементов меню для useDropdown и useCurtainDropdown.
  38. В контекст проверки прав доступа IKrPermissionsManager добавлено свойство PreviousTokenValidationResult, которое возвращает результат валидации токена PreviousToken. Свойство PreviousToken теперь передаётся всегда, когда оно было передано в контекст проверки прав доступа, а не только при его успешной валидации.
  39. В web-клиенте добавлена возможность определять кастомные роуты (route), отличные от стандартных роутов для карточек /card и рабочих мест /view. Подробнее в разделе документации Роутинг.
  40. В интерфейс IRedisConnectionProvider добавлена перегрузка метода GetOpenedConnectionAsync с параметром requireInitialization, регламентирующим, необходимо ли проверять инициализированость данных системы в Redis. Существующий метод GetOpenedConnectionAsync использует введённую перегрузку со значением requireInitialization = true. Значение false рекомендуется использовать в тех местах системы, где не требуется гарантии полной инициализации данных, например, в сервисах проверки наличия соединения с Redis или работы с каналами. В остальных случаях используйте значение requireInitialization = true или метод без этого параметра.
  41. В стратегию загрузки состава ролей IRoleGetStrategy в метод GetUsersAsync добавлен необязательный параметр ignoreDeputies, позволяющий загружать состав ролей без учёта заместителей.
  42. В менеджер управления умными ролями ISmartRoleManager добавлен метод RecalcSmartRolesAsync, позволяющий запустить перерасчёт сразу нескольких умных ролей.
  43. Добавлен класс ConcurrentObjectPool<T>, предоставляющий пул объектов по аналогии с ObjectPool<T>, но являющийся потокобезопасным.
  44. Изменено API по созданию и использованию объектов IWebProxy. Добавлена возможность определения обработчиков IWebProxyXyzHandler, влияющих на подготовку запроса к отправке и обработку ответа на запрос. Пространства имён для соответствующих типов изменены с Tessa.Platform.Runtime на Tessa.Platform.Web. Изменены флаги WebRequestFlags и сигнатура метода WebProxy.SendAsync<T>. Обратитесь к разделу руководства Запросы к веб-сервисам посредством прокси-объектов WebProxy.
  45. Доработан процесс обновления информации об авторе в задании и соответствующей ему записи в истории заданий. Теперь если автор задания не был указан вручную, в таблице Tasks помимо информации об авторе, выбранном из списка связанных с заданием ролей, будет записан идентификатор строки из TaskAssignedRoles, по которой был выбран автор. При удалении из TaskAssignedRoles записи с указанным идентификатором - будет автоматически перерассчитан новый автор и записан в задание и связанную с ним запись в истории заданий.
  46. В CardTask.Flags теперь можно указать флаг CardTaskFlags.RecalculateAuthor, который принудительно запустит процесс пересчёта автора, указываемого в задании и соответствующей ему записи в истории заданий, на основе информации из TaskAssignedRoles.
  47. Добавлен интерфейс IUserNamingStrategy, с помощью которого можно получить значения вычисляемых полей с именами пользователей.
  48. В карточку автомобиля была добавлена кнопка “Получить таблицу”. Реализованная логика при нажатии на кнопку является примером того, как можно получить данные, сгенерированные на сервере случайным образом, с помощью запроса CardRequest или метода контроллера, и вывести их в типе “Диалог” в виртуальной таблице. Реализация примера в серверной части доступна в расширении AbTestCarTableRequestExtension.cs и в контроллере AbTestController.cs. Реализация в коде web-клиента есть в UI-расширении abCarUIExtension.ts (в методе initialized в месте добавления кнопки тулбара CarTableRequest и в методе executeCarTableRequest) и в клиентском сервисе abTestServiceClient.ts.
  49. В web-клиенте свойства border, bottom, column, gap, height (включая min, max), left, padding, right, row, size, top, width (включая min, max) вместо конкретных единиц измерений (px, em, `rem) теперь используют юниты и проценты.
  50. Добавлен пример создания нового типа запроса к API нумерации со стороны web-клиента и его обработки со стороны сервера. Обратитесь к разделу руководства Запросы к API нумерации с клиента.
  51. В web-клиенте в типе CardEditorModel сеттер свойства cardModel заменён на асинхронный метод setCardModel.
  52. Для таблицы TableGridViewModel в desktop-клиенте и TableGridViewModelBase в web-клиенте добавлен метод SetGrouping, позволяющий задать группировку по колонке с возможностью дополнительно указать, из какой колонки будет браться имя группы.
  53. Для объекта TopicNotificationService добавлено два виртуальных метода GetRecipientsAsync и SendNotificationCoreAsync, позволяющие переопределять логику работы в наследниках.
  54. В web-клиенте все объектные модели, связанные с предпросмотром документа, теперь доступны по пути tessa/ui/preview.
  55. В web-клиенте добавлен новый тип расширения FilePreviewExtension, с помощью которого можно переопределить поведение предпросмотра по умолчанию.
  56. В web-клиенте у типа PreviewManager метод previewToolFactory заменён на событие onPreviewerResolve.
  57. Для методов RemoveRolesAsync и RemoveParticipantsAsync интерфейса IForumProvider добавлен параметр serviceMessageMode = ForumServiceMessageMode.Enabled, позволяющий управлять поведением сервисного сообщения об удалении участников из топика.
  58. В web-клиенте модели, относящиеся к workflow и krProcess, перенесены из неймспейса tessa/workflow в @tessa/platform/workflow.
  59. В web-клиенте тип KrTypesCache отмечен как deprecated. Рекомендуется запрашивать тип IKrTypesCache из DI.
  60. В web-клиенте тип KrStageTypeUIHandler перенесён из неймспейса tessa/workflow/krProcess в tessa/ui/workflow/krProcess.
  61. В web-клиенте удалён компонент LoadingOverlayWithPortal. Вместо него можно использовать компонент LoadingOverlay, который теперь отображается с порталом по умолчанию. Для отображения без портала необходимо передать значение свойства noPortal, равное true.
  62. В web-клиенте тип BusinessCalendarService перенесен в @tessa/platform и доступен по запросу IBusinessCalendarService$ из DI.
  63. Улучшено получение зависимостей через конструктор контроллера, используя .NET DI (IServiceProvider) для режима активации ControllerActivationMode.Unity (класс контроллера без атрибута [TessaController] или с атрибутом, не изменяющим режим активации на другой). Если параметр является опциональным (IService? service = null), то регистрация зависимости может отсутствовать, в этом случае будет подставлено значение параметра null. Также допустимо использовать атрибут [FromKeyedServices(key)], чтобы определить ключ, по которому зависимость должна быть зарегистрирована (как AddKeyedScoped или AddKeyedSingleton), но в пределах класса допустимо использовать лишь один ключ (или его отсутствие) для каждого типа параметра, получаемого из .NET DI. Для более сложных сценариев можно получить в конструкторе IServiceProvider и запросить из него сервисы вручную, или же надо отказаться от режима активации ControllerActivationMode.Unity, указав атрибут [TessaController(ActivationMode = ControllerActivationMode.AspNetCore)].
  64. Для контроллеров добавлены методы-расширения ControllerExtensions.Forbidden и ControllerExtensions.ForbiddenException, с помощью которых можно сформировать исчерпывающую информацию об ошибке с HTTP-кодом 403 Forbidden. Подробнее можно прочитать в разделе Создание контроллера веб-сервиса на основе API TESSA.
  65. Добавлен раздел документации Создание проектного менеджера прав на создание токена доступа к файлам по внешней ссылке, рассматривающий реализацию поддержки создания внешних временных ссылок.
  66. Добавлен интерфейс ITempFileLinkProvider для создания токенов доступа и временных ссылок на файлы и получения их содержимого.
  67. Добавлен интерфейс IFileContentPermissionManager, позволяющий установить права доступа на создание временной ссылки для карточек, чьи типы не входят в типовое решение.
  68. Для UI-расширений форм диалога IFormUIExtension добавлена поддержка методов Finalizing и Finalized, выполняющихся при закрытии формы.
  69. В web-клиенте добавлена возможность создавать правила для нормализации настроек контролов. Задать правила можно с помощью методов Normalization.instance.remove, Normalization.instance.replace, Normalization.instance.ignore, Normalization.instance.custom.
  70. Свойство CardTaskAssignedRole.ShowInTaskDetails теперь Nullable<bool>. Если ShowInTaskDetails is null, то значение для записи, добавляемой в список связанных с заданием ролей, будет определено из значения CardMetadataFunctionRole.ShowInTaskDetails соответствующей функциональной роли.
  71. Добавлен интерфейс IViewRequestValidator, позволяющий валидировать запросы к представлениям.
  72. В API тестов в объект ScopeContext добавлен метод GetNamedLock, позволяющий получить объект AsyncLock, с помощью которого можно синхронизировать выполнение логики при обработке параллельно выполняющихся тестов внутри одной области выполнения.
  73. Регистрация консольных команд в методе CommandContext.AddCommand() теперь выполняется без перечисления типов аргументов.
  74. Добавлены интерфейс IDocLoadBarcodeManager и класс DocLoadBarcodeManager для объекта, выполняющего поиск штрих-кодов в модуле потокового сканирования. Вы можете переопределить регистрацию в Unity, чтобы повлиять на алгоритм распознавания.
  75. Для расширений типов CardTypeExtensionType теперь можно передать в конструкторе опциональную функцию enumerateVisitorObjectsFuncAsync, которая возвращает дополнительные объекты для их обхода посредством ICardTypeVisitor (см. метод CardType.VisitAsync). Так, для расширения типа “Таблица в представлении” функция возвращает контрол CardTypeTableControl, содержащий пользовательский интерфейс, настраиваемый по кнопке “Колонки и форма”.
  76. Изменён интерфейс IObjectTransactionLockingStrategy. Добавлен метод ReleaseObjectAsync, который освобождает блокировку объекта. В метод ObtainReaderLockAsync добавлен параметр releaseOnlyIfEscalated, определяющий, что блокировку необходимо освободить только если тип блокировки является эскалированной блокировкой или блокировкой на запись.
  77. Изменён интерфейс ITransactionScopeContext. Добавлено свойство IsValuable, определяющее, является ли контекст области выполнения транзакции значимым.
  78. Изменён интерфейс IObjectTransactionLockingStrategy. Из метода ExecuteInWriterLockAsync удалён неиспользуемый параметр releaseLock.
  79. В классе CardGetFileContentRequest булевое свойство SuggestFileName заменено на свойство-перечисление SuggestFileNameMode. Используйте метод ShouldSuggestFileName для установки актуального значения свойства SuggestFileNameMode.
  80. В класс CardGetFileContentRequest добавлено булевое свойство SuggestFileNameForVersion. Укажите его в запросе на получение контента файла, чтобы дать рекомендацию серверу по формированию предпочитаемого имени файла.
  81. В ссылках на файлы /links/file и /links/html добавлен булевый параметр suggestFileNameForVersion со значением по умолчанию, равным false. Данный параметр используется, чтобы рекомендовать серверу формировать предпочитаемое имя запрашиваемого файла, как имя версии этого файла.
  82. В атрибут [Plugin] добавлены свойства JsonName и ConfigResolver, позволяющие загрузить настройки плагинов через конфигурационный файл app.json и через указание кастомного объекта-резолвера настроек. Подробнее см. раздел Расписание запуска плагина.
  83. В объект IOperationRepository добавлен вариант метода StartFirst, принимающий в качестве параметра список типов операций. Метод позволяет запустить одну операцию любого из переданных типов.
  84. В методе контроллера api/v1/operations/start-first?type=uuid добавлена поддержка передачи нескольких параметров type. При передаче нескольких параметров система запустит операцию любого из переданных типов.
  85. В пространтсво имён Tessa.Platform.Plugins добавлен интерфейс IPluginHandler для создания обработчиков плагинов, которые могут функционировать внутри процесса веб-сервиса. Подробнее см. в разделе Разработка плагинов, обрабатываемых веб-сервисом.
  86. В пространство имён Tessa.Platform.Operations добавлен интерфейс IOperationHandler для создания обработчиков операций, применимых в плагинах, запускаемых в Chronos или внутри процесса веб-сервиса.
  87. В пространство имён Tessa.Platform.Schedulers добавлен интерфейс ISchedulerProcessor для создания планировщиков задач, применимых в плагинах, запускаемых в Chronos или внутри процесса веб-сервиса.
  88. Для скрипта unoconv добавлен опциональный параметр -u (--update-indexes), с помощью которого выполняется обновление ссылок в оглавлении перед конвертацией файла в pdf. По умолчанию значение такое обновление не производится.
  89. Добавлен метод контроллера api/v1/cards/get-file-template-multipart для генерации файлов по шаблону, который возвращает тип данных multipart/form-data, содержащий объект ответа на запрос CardGetFileContentResponse и содержимое сгенерированного файла.
  90. В файлах app.json добавлена возможность указывать загрузчик .loader внутри директивы .include, когда вместо имени файла указывается хеш-таблица вида { ".loader": "key" }, где key - строка, по которой объект IConfigurationItemSourceLoader зарегистрирован в DI-контейнерах IServiceCollection (для веб-сервисов) и Unity (для прочих приложений, загружающих конфигурацию). Также возможно указать { ".loader.type": "AssemblyQualifiedTypeName" }, чтобы инстанцировать конструктором по умолчанию класс с квалифицированным именем типа AssemblyQualifiedTypeName, реализующий интерфейс IConfigurationItemSourceLoader или имеющий метод с именем Invoke, независимо от регистраций в DI. Про директиву .include читайте в разделе Конфигурационные файлы и переменные окружения, а про разработку программных расширений - в разделе Расширения для обработки конфигурационных файлов.
  91. Доработано API инициализации и загрузки конфигурации посредством ConfigurationManager: класс теперь содержит статические члены, а пространство имён Tessa.Platform.Configuration - все прочие типы. Добавлены средства для переопределения и расширения директив и других механизмов загрузки, парсинга и иной обработки файлов конфигурации. При регистрации в контейнере Unity используйте метод RegisterConfigurationManager (также вызывается в RegisterPlatformSharedDependencies), для асинхронной инициализации - метод InitializeConfigurationManagerAsync, модификация API выполняется в классах Registrator. При регистрации в контейнере IServiceCollection (актуально для веб-сервисов, в т.ч. для сервиса web) используйте метод AddConfigurationManager, одноимённый метод асинхронной инициализации для IServiceProvider, модификация API выполняется в классах WebRegistrator. Менеджер конфигурации по умолчанию теперь заменяется вызовом ConfigurationManager.SetDefault, его инвалидация для последующего пересоздания - вызовом ConfigurationManager.InvalidateDefault, повторная загрузка конфигурации может быть инициирована экземплярным методом IConfigurationManager.ReloadAsync. Подробнее про разработку программных расширений читайте в разделе Расширения для обработки конфигурационных файлов.
  92. Добавлены статические методы ThrowIfDisposed, подключаемые как global using вместе с прочими методами ThrowIfXyz. Их использование аналогично ObjectDisposedException.ThrowIf.
  93. Добавлен класс UnityContainerCompanion, который упрощает освобождение зависимостей из DI-контейнера, регистрируемых в IUnityDisposableContainer, а также упрощает инициализацию конфигурации IConfigurationManager при указании свойства UseConfiguration = true. Рекомендуется все контейнеры IUnityContainer создавать и освобождать посредством этого класса. Примеры использования доступны в коде типового решения (см. Tessa.Extensions.Default.Console) и в документации, например, в разделе Разработка плагинов, обрабатываемых веб-сервисом.
  94. Изменён интерфейс ICardFileVersionInfo, добавлены свойства State, хранящее состояние версии файла, и ErrorInfo, хранящее информацию об ошибке.
  95. Изменён интерфейс ICardFileVersionStrategy, в метод GetVersionAsync добавлен необязательный параметр withStateAndError, позволяющий дополнительно получить информацию о состоянии и ошибке версии.
  96. Свойство ITessaViewRequest.SortingColumns теперь объявлено как List<SortingColumn> вместо ICollection<ISortingColumn>. Также свойства SortingColumns и Parameters (переименовано из Values) всегда не равны null.
  97. В web-клиенте при регистрации бандла с расширениями добавлена возможность указать порядок, в котором бандл будет подключаться. Свойство order в параметрах метода Application.instance.registerBundle.
  98. В web-клиенте изменён объект GridViewModel. Метод setSortingColumn, который переключает режим сортировки в UI, переименован в toggleSortingColumn. Добавлен метод setSortingColumn, который устанавливает направление сортировки для указанного столбца.
  99. Удалён метод Tessa.Extensions.Default.Shared.Notices.NotificationHelper.ModifyEmailForMobileApprovers. Теперь обратные ссылки в письмах мобильного согласования формируются в расширениях на отправку уведомлений. Базовый класс расширения для процесса отправки уведомления мобильного согласования: MobileApprovalNotificationSendExtensionBase.
  100. Изменён интерфейс INotificationSendExtensionContext. Ограничен доступ к setter-ам свойств, изменение которых не подразумевается и/или является некорректным.
  101. В объекте ITessaViewRequest добавлено свойство Info, в котором можно передавать дополнительную информацию для расширений.
  102. Метод-расширение для подключения Swagger c.IncludeXmlComments(Assembly, bool) переименован в IncludeXmlCommentsUsingActualLocation. Метод IncludeXmlComments с идентичной сигнатурой уже предоставляется в новой версии библиотеки Swashbuckle.AspNetCore.
  103. В объектах-наследниках StorageSerializable в перегрузке SerializeCore используйте метод WithOptions(list, x => x.SettingNameHere = true), посредством которого можно указать настройки по сериализации списка IList<T> в Typed Json, чтобы, например, не указывать типы элементов именно этого списка или оптимизировать сериализацию списка строк, одинаковых по длине и типам элементов.
  104. Для маршрутов удалена клиентская команда IClientCommandHandler, зарегистрированная по константе DefaultCommandTypes.RefreshAndNotify, которая обновляла список заданий для desktop-клиента.
  105. Добавлена возможность определить кастомные обработчики кнопок шаблонов бизнес-процессов с помощью создания классов, реализующих интерфейсы IWorkflowEngineTileHandler и IWorkflowEngineTileUIHandler, для добавления серверного и клиентского обработчика кнопок соответственно.
  106. Добавлена возможность определить кастомные обработчики кнопок вторичных процессов с помощью создания классов, реализующих интерфейсы IKrSecondaryProcessTileHandler и IKrSecondaryProcessTileUIHandler, для добавления серверного и клиентского обработчика кнопок соответственно.
  107. Удалён метод IForumPermissionsProvider.GetEditPermissionsInfoAsync. Вместо него используйте IForumPermissionsProvider.GetEditPermissionsInfoAsync с параметром isMyMessage: true.
  108. В web-клиенте удалено свойство UIButton.buttonKey.
  109. Добавлен объект IKrTaskManager<T>, позволяющий реализовывать обработчики заданий, независимые от используемой для выполнения подсистемы.
  110. Изменён интерфейс IRefGroupTypeValuesRepository. Удалён неиспользуемый метод UpdateAsync.
  111. Изменён интерфейс IRefGroupValuesRepository. Удалён неиспользуемый метод UpdateAsync.
  112. Для конвертации значения-перечисления из storage используйте метод-расширение storage.ConvertEnum<TEnum>("key"); вторым опциональным параметром можно передать значение, возвращаемое при невозможности выполнить конвертацию (по умолчанию это будет первым значением перечисления default(TEnum)). Чтобы получить null при невозможности выполнить конвертацию, вызовите метод-расширение storage.TryConvertEnum<TEnum>("key").
  113. В web-клиенте для объектов TaskActionViewModel добавлена возможность указывать настройки внешнего вида кнопок задания через свойство button.
  114. В web-клиенте для расширений CardUIExtension добавлен новый метод createCardModel, который вызывается в момент создания объекта cardModel и позволяет полностью подменить созданный объект. Используйте свойство modelToCreate в контексте расширения для переопределения создаваемой модели.
  115. В web-клиенте в объект IWorkplaceViewComponent добавлено свойство groupContainer, позволяющее управлять группами в тулбаре представления. Пример использования см. в руководстве разработчика web-расширений.
  116. В web-клиенте изменён интерфейс для аргументов события по модификации хэш-таблицы DictionaryChangedEventArgs: вместо типа события add или remove в аргументах передаются добавленное и удаленное значение одновременно.
  117. В web-клиенте был добавлен новый тип расширения ShowValidationResultExtension, который вызывается при открытии диалога showNotEmpty и позволяет модифицировать диалог и список ValidationResult, который будет отображен пользователю.
  118. Добавлен вспомогательный класс OcrExtensionHelper, используемый в расширениях по работе с операциями OCR.
  119. В подсистеме обработки плейсхолдеров добавлена возможность установки флага по ключу PlaceholderHelper.CardIsPartialKey в Info контекста замены плейсхолдеров IPlaceholderReplacementContext. Данный флаг определяет признак того, что карточка загружена не полностью. Важно устанавливать этот флаг, если необходимо посчитать плейсхолдеры в процессе сохранения существующей карточки с передачей объекта этой карточки в Info контекста замены плейсхолдеров.
  120. Добавлен объект IViewParameterFormatter, посредством которого выполняется форматирование текстового представления критерия CriteriaValue для параметра представления RequestParameter с учётом его метаинформации IViewParameterMetadata.
  121. Для параметров представлений RequestParameter в значениях критериев CriteriaValue свойство Text теперь заполняется только для ссылочных параметров (где в свойстве Value расположен идентификатор значения). Для определения текста всех параметров, не являющихся ссылочными, используйте объект IViewParameterFormatter. Параметр является ссылочным, если метод-расширение parameterMetadata.IsReference() возвращает true (в текущей версии это происходит, когда заполнено его коллекция RefSection).
  122. В web-клиенте в функции showViewModelDialog добавлен опциональный параметр popverProps, который позволяет управлять настройками отображения диалога в выпадающем элементе.
  123. Изменён интерфейс INumberLocationManager. Добавлен метод TrySelectFullNumberAsync, который может получать строку с данными номера из базы данных.
  124. Статические методы ArgumentException и ArgumentOutOfRangeException добавлены в качестве подключаемых как global usings. Это методы для проверки аргументов ThrowIfXyz, такие как ThrowIfNegative, ThrowIfEqual и др. Методы ThrowIfNullOrEmpty и ThrowIfNullOrWhiteSpace используют реализацию класса ArgumentException вместо Tessa.Platform.GuardStatics, поэтому изменён текст сообщения об ошибке в соответствии с используемым в .NET.
  125. В web-клиенте добавлена возможность управлять отображением горизонтальной прокрутки форм в случаях, когда содержимое обрезается. Для этого в FormViewModel добавлены свойства desktopScrollOverflow и mobileScrollOverflow.
  126. Добавлена возможность прикладывать к почтовому уведомлению файлы из разных карточек. Для этого необходимо задать свойства MailFile.CardID, MailFile.CardTypeID и MailFile.CardTypeName в соответствии со свойствами карточки, содержащей файл.
  127. Улучшена поддержка nullability и других возможностей современной версии языка C# для различных библиотек платформы.
  128. В класс CertificateData добавлено свойство Thumbprint для использования отпечатка сертификата.
  129. Добавлено отображение в отладке основных свойств классов, реализующий интерфейс IValidationResultBuilder.
  130. В web-клиенте добавлена возможность переопределить элементы загрузочного оверлея через объект LoaderUIContainer. Подробный пример описан в examples/38_loadingUIOverride.tsx.
  131. В web-клиенте для расширений типа ApplicationExtension был добавлен метод unknownRouteResolve, который вызывается, если не удалось определить обработчик маршрута приложения, и позволяет установить обработчик по умолчанию.
  132. В маршрутах добавлена возможность задания идентификатора запускаемого процесса при отправке сигналов типов KrConstants.KrStartProcessSignal и KrConstants.KrStartProcessUnlessStartedGlobalSignal. Идентификатор процесса можно задать путём его указания по ключу KrConstants.KrProcessID в параметрах сигнала.
  133. В маршрутах этап “Управление процессом” теперь сохраняет идентификатор запускаемого по сигналам KrConstants.KrStartProcessSignal и KrConstants.KrStartProcessUnlessStartedGlobalSignal процесса в info текущего процесса по ключу KrConstants.KrProcessID.
  134. В web-клиенте в объектную модель ячейки грида, было добавлено свойство tooltipSetting позволяющее управлять типом отображаемых подсказок.
  135. Классы регистраторов теперь могут переопределять методы FinalizeRegistrationAsync вместо FinalizeRegistration для асинхронной финализации. Реализация FinalizeRegistrationAsync по умолчанию вызывает синхронный метод FinalizeRegistration.
  136. Соединение с Redis на сервере теперь устанавливается при инициализации контейнера Unity (в цепочке регистраторов в методах финализации IRegistrator.FinalizeRegistrationAsync, если зарегистрирована зависимость IRedisConnectionProvider). Если Redis недоступен, то соответствующие плагины Chronos не запускаются, а веб-сервис запускается, возвращая ошибку Redis при выполнении любых запросов для контроллеров, использующих контейнер Unity, или статус Unhealthy для маршрута /hcheck. Для отключения этого поведения зарегистрируйте объект IRedisInitializationOptions со свойством InitializeOnStartup, возвращающим false. Поведение отключено в API тестов и в серверных контейнерах для консольных команд tadmin для исключения слишком раннего подключения к Redis.
  137. В API представлений добавлена возможность наследовать объект TessaViewModelAdapter, посредством которого возможно переопределить функцию создания метаинформации CreateMetadataAsync и получения данных GetDataAsync, не прибегая к созданию класса декоратора.
  138. В API представлений добавлена сортировка объектов IExtraViewListProvider в соответствии с атрибутом [Order(number)], который указывается на классе, реализующем интерфейс.
  139. В класс FileHelper добавлены поля с невалидными символами в именах файлов (InvalidFileNameChars, InvalidFileNameCharsSet) и путей (InvalidPathChars, InvalidPathCharsSet), которые актуальны для любой поддерживаемой ОС (Windows, Linux). Используйте их вместо методов Path.GetInvalidFileNameChars() и Path.GetInvalidPathChars().
  140. При создании экземпляров класса ContentTokenBase у дат создания и истечения токена время усекается до секунд. Это сделано для учёта особенностей сохранения токенов в СУБД MS SQL Server и PostgreSQL, которые могут округлять миллисекунды, что ранее приводило к недействительности защищённых токенов доступа к содержимому.
  141. Исправлена реализация методов getRoleCalendarInfo, getDefaultCalendarInfo, getCalendarInfo и getAllCalendarInfos в API календарей для web-клиента.
  142. В реализации ObjectLockingStrategy устранена возможность передавать собственный скрипт работы с блокировками и добавлена возможность опционального использования множественных блокировок на запись.
  143. Добавлен интерфейс IViewErrorLogger, позволяющий логировать ошибки, произошедшие при выполнении представления.
  144. В интерфейс IWebContext добавлены методы для установки и получения токена доступа к API в качестве текущего токена.
  145. Атрибут SessionMethodAttribute был расширен для проверки доступа к API-ресурсам посредством токена доступа к контенту, если он был передан в запросе вместо сессионного токена. При этом атрибут SessionTokenAttribute используется только для параметра метода, содержащего сессионный токен, и не может быть использован с токеном доступа к API.
  146. Добавлены атрибуты ApiAccessTokenMethodAttribute и ApiAccessTokenAttribute для методов контроллера и их параметров. Эти атрибуты позволяют использовать логику проверки доступа к API с помощью токена доступа к контенту. В примере контроллера ServiceController, включённом в проект Tessa.Extensions.Server.Web, был добавлен метод GetDataWithApiToken, демонстрирующий использование этих атрибутов.
  147. Добавлен универсальный контроллер для работы с токенами TokensController, который доступен по пути /api/v1/tokens. В данный контроллер были перенесены все методы из ContentController, за исключением метода получения контента по токену доступа.
  148. Добавлено пространство имён Tessa.Tokens, которое содержит объекты, используемые для предоставления доступа посредством токенов. Для всех токенов реализованы подсчёт и проверка подписи при создании и получении объекта токена. Объекты TokenInfoBuilder и TokenInfoBuilderFactory упрощают создание объекта токена. Объекты IApiAccessTokenService, IApiAccessTokenProvider, IApiAccessTokenPermissionsManager и ApiAccessTokenHandler определяют доступ к API-ресурсам. Объекты ITokenActionHistoryStrategy, IFileContentActionHistoryStrategy и IApiAccessTokenActionHistoryStrategy записывают в историю действий события, связанные с токенами доступа.
  149. Реализован единый подход для работы с токенами в виде объектов-репозиториев ITokenRepository и ITokenRepositoryCached. Используйте их для взаимодействия как с платформенными токенами, так и с токенами, разрабатываемыми в проектных решениях.
  150. В объект сессионного токена ISessionToken добавлено несериализуемое свойство Kind, которое разделяет стандартные токены и API токены. Оно используется при создании записи в истории действий.
  151. В руководство разработчика добавлен пример Временные ссылки на контент системы, показывающий реализацию для взаимодействия с токенами, уникальными в рамках скоупа для пользователя (UserExclusive).
  152. Модифицирован интерфейс IBackgroundServiceQueue. В метод EnqueueAsync добавлен параметр parallel регулирующий в какую очередь последовательного или параллельного исполнения будет добавлена задача. Количество одновременно запущенных задач (размер очереди) регулируется параметром MaxParallelBackgroundTasks настроек веб-сервиса.
  153. Изменён интерфейс IFileViewModel: добавлено свойство GroupStrictOrder, которое содержит информацию о заданном порядковом номере категории файла.
  154. Добавлен интерфейс ICardContentTokenProvider, который позволяет создавать, подписывать и проверять токены на получение контента файлов по отдельному GET-запросу.
  155. Добавлен интерфейс ICardContentInfo. Этот интерфейс предоставляет информацию, описывающую контент файла.
  156. Добавлен REST-метод для получения контента файла карточки по токену: GET api/v1/cards/file-content?token={token}&session={session}. Здесь token (обязательный параметр) - токен контента файла, session (опциональный параметр) - токен сессии, который может быть опущен, например, когда токен сессии уже передан через куки.
  157. Добавлено API нормализации, позволяющее на сервере посредством объектов INormalizationBatchProcessor и INormalizationService запрашивать строковые значения из справочников по ключам-идентификаторам. Объекты ICardNormalizationService и IViewNormalizationService позволяют выполнять задачи по нормализации, специфичные для карточек и представлений. Примеры регистрации справочников нормализации в расширениях типового решения Tessa.Extensions.Default.Server/Normalization/Registrator.cs, причём записи по добавляемым справочникам также указаны в таблице-перечислении NormalizationSources в библиотеке схемы Standard solution.
  158. В серверное API представлений добавлен интерфейс IViewSortingService, позволяющий программно отсортировать строки в результатах выполнения представления в объекте результата ITessaViewResult (в т.ч. при выполнении в режиме сабсета).
  159. В серверное API представлений добавлен интерфейс IViewResultProcessor, обрабатывающий результат выполнения представления перед выполнением перехватчиков и возвратом потребителю API. Реализация по умолчанию выполняет нормализацию, замену пустых значений при выполнении без сабсета, а также сортировку и замену пустых значений в сабсетах.
  160. Добавлены методы-расширения для IReadOnlyDictionary<string, object?>, работающие по аналогии с методами-расширениями для Dictionary<string, object?>, но имеющие на конце суффикс R и расположенные в пространстве имён Tessa.Platform.Storage.ReadOnly. Например: storage.TryGetR<int>("Number"), storage.TryConvertEnumR<CardStoreMode>("mode").
  161. Удалена трассировка расширений посредством настройки ExtensionTracingMode в конфигурационных файлах app.json. Для серверных расширений используйте трассировку посредством сервиса monitor, описанную в разделе Трассировка серверов приложений. Трассировка расширений desktop-клиента невозможна с этого релиза, параметр /ExtensionTrace для приложения TessaClient также удалён.
  162. Изменены интерфейсы контекстов расширений, связанные с трассировкой: свойство ITraceableExtensionContext.ValidationResult перенесено в новый интерфейс IValidatableExtensionContext; интерфейс ITraceableInfoExtensionContext удалён (свойство Info самостоятельно определяется в каждом интерфейсе контекстов расширений).
  163. Объект DefaultExtensionTraceListener, использовавшийся для трассировки расширений посредством настройки ExtensionTracingMode в файлах app.json, и связанные с ним API были удалены.
  164. Модифицирована структура свойства ITransactionScopeContext.Locks для добавления информации не только об идентификаторе объекта, но и о его префиксе.
  165. В скрипты конструктора бизнес-процессов добавлено новое свойства RetryInfo. Данное свойство содержит информацию о настройках механизма перезапуска асинхронной обработки, позволяет включить или отменить перезапуск обработки в случае ошибки, а также содержит информацию о предыдущей ошибке, вызвавшей перезапуск. Данное свойство доступно только при асинхронной обработке сигнала.
  166. Для перехватчиков представлений, наследуемых от ViewInterceptorBase, добавлен вспомогательный метод для получения представления, выполняемого без текущего перехватчика: this.GetInterceptedView(request.ViewAlias). Перехватчики, зарегистрированные по порядку в свойстве Order перед текущим перехватчиком, будут в таком случае выполнены - это аналогично получению значения из хэш-таблицы InterceptedViews с выбрасыванием исключения, если представление недоступно.
  167. Механизм исправления типов карточек перенесён в серверную часть (Tessa.dll). Для этого реализован интерфейс ICardTypeRepairManager. Интерфейс доступен на клиентской (для сессии администратора) и серверной стороне.
  168. В скрипты конструктора бизнес-процессов добавлены новые методы AddValidationError(string) и AddValidationError(string, object[]). Данные методы позволяют добавить в результат валидации сообщение об ошибке без создания карточки ошибки для бизнес-процесса. Подробнее см. раздел API скриптов.
  169. Добавлен новый тип расширений IForumUserMentionExtension, который позволяет реализовать логику упоминания пользователей в обсуждениях. Для фильтрации выполнения этих расширений был добавлен реестр пакетов ICardBundleRegistry и методы фильтрации WhenBundles и WhenAnyBundle.

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

  1. В обсуждениях (форумах) исправлен алгоритм проверки прав доступа при добавлении и подписке участников.
  2. В карточках оптимизирован список изменённых полей секций при сериализации в Typed Json (массив строк по ключу ".changed").
  3. В web-клиенте исправлена ошибка, из-за которой некорректно применялась настройка Appearance из метаинформации представлений.
  4. В web-клиенте исправлена ошибка, в результате которой отсутствовала возможность подсветить сообщения в обсуждениях из расширений посредством ForumViewModel.topicEditor.highlightMessage.
  5. В web-клиенте исправлена ошибка в мобильной версии приложения, приводящая к отсутствию прокрутки в контролах таблиц, расположенных в колоночных блоках карточек.
  6. Оптимизирована загрузка списка функциональных ролей задания, к которым относится текущий сотрудник, если загрузка данного списка вызывается несколько раз при сохранении карточки.
  7. В web-клиенте исправлена ошибка, приводящая к отсутствию диалогового окна с предложением сохранить несохранённые данные карточки при её закрытии через нажатие на среднюю кнопку мыши.
  8. Исправлена некорректная работа приложения-помощника Deski с буфером обмена в Windows.
  9. В web-клиенте исправлена ошибка, из-за которой некоторые иконки не были жирными.
  10. Исправлена локализация заголовка для страницы с ошибкой, которая отображается при открытии ссылок на файлы /links и контент /content в отдельной вкладке браузера, если в cookies уже содержится актуальная сессия.
  11. В web-версии исправлено отображение подсказки горячих клавиш у кнопок вторичных процессов и шаблонов бизнес-процессов с установленным флагом “группировать в “Действия”“.
  12. В методе генерации файла по шаблону CardExtensions.GenerateFileFromTemplateAsync исправлена ошибка, из-за которой в запросе на получение контента файла не передавалась дополнительная информация из параметра requestInfo.
  13. Исправлен сброс настроек двухфакторной аутентификации при импорте карточки настроек сервера.
  14. В web-клиенте исправлены мелкие ошибки, приводившие к игнорированию некоторых параметров темы в диалоге фильтрации, обсуждениях, заданиях, контролах “Список файлов”, “Ссылка” и “Список”, а также в некоторых диалогах.
  15. Исправлено дублирование записей в истории автоматического согласования, если сотрудник относится более чем к одной роли из списка связанных с заданием ролей.
  16. Исправлено отсутствие переноса строки перед пометкой о скором автоматическом согласовании задания в строке таблицы из рассылки уведомления о заданиях.
  17. В web-клиенте исправлена поддержка тем для контрола “Строка” в режиме “Avalon”.
  18. В web-клиенте исправлена поддержка тем для диалога “Структура карточки”.
  19. В web-клиенте исправлена поддержка тем для всплывающей подсказки.
  20. В web-клиенте удалены лишние условия фильтрации данных представлений у параметров с автодополнением и целочисленным типом данных.
  21. В web-клиенте исправлена проблема длительного расчёта высоты контрола “Строка” при отрисовке большого количества строк.
  22. В web-клиенте для контрола “Список файлов” рамка вокруг области “Загрузить файлы” теперь увеличивается в толщине, если над ней с помощью мыши drag&drop расположить файл.
  23. В web-клиенте исправлено отображение сообщений об ошибках аутентификации Windows.
  24. В файле типа диалога TwoFactorAuthTotpSettings.jcard исправлено название параметров с Bakground на Background и BorderThiknes на BorderThickness.
  25. Исправлена проверка прав доступа для работы с настройками двухфакторной аутентификации пользователя.
  26. Исправлена ошибка, из-за которой после изменения или переименования файла в карточке “Шаблон файла” не инвалидировался кэш шаблонов файлов. В результате, при создании файла по шаблону, имя создаваемого файла оставалось прежним до перезапуска сервера.
  27. Исправлена ошибка, из-за которой плейсхолдеры в именах шаблонов файлов заменялись только один раз, а не динамически при каждом запросе информации о шаблоне.
  28. В карточке операции OCR исправлено отображение распознанного файла, если в качестве инструмента предпросмотра файла используется Р7-Офис / OnlyOffice.
  29. В web-клиенте исправлена ошибка, из-за которой отсутствовал фон в заголовке диалога.
  30. В web-клиенте исправлено отображение заголовка окна диалога создания нового запроса на распознавание текста. Ранее в нём не отображались кнопки закрытия и разворачивания/сворачивания окна.
  31. Исправлена ошибка, из-за которой при импорте карточек их слияние с существующими карточками выполнялось неоптимально, что приводило к созданию лишних объектов в памяти.
  32. Исправлено изменение функций и процедур в схеме данных для PostgreSQL, если ссылки на них присутствуют в других объектах схемы (индексах, функциях, процедурах). При обновлении схемы, если происходит обновление уже существовавшей функции и её набор параметров не менялся, то вместо двух операций DROP + CREATE, вызывается одна CREATE OR REPLACE.
  33. В web-клиенте исправлено выделение строк для изменённых файлов в контроле “Представление” с расширением “Список файлов в представлении”.
  34. В web-клиенте исправлено отображение заголовка при открытии диалога добавления/редактирования строки.
  35. В web-клиенте исправлена ошибка, из-за которой колонки в представлении растягивались на всю ширину с тегами в позиции Top или Bottom.
  36. В web-клиенте в мобильной версии исправлена прокрутка обсуждения вниз при отправке сообщения, а также при заходе на страницу.
  37. В web-клиенте исправлена ошибка, в результате которой настройка “Автофокус” из TessaAdmin не применялась в контролах обсуждений.
  38. В web-клиенте исправлена ошибка контрола обсуждений с активной настройкой “Единственное обсуждение”: ранее в мобильной версии при открытии вкладки карточки, содержащей данный контрол, автоматически открывалось диалоговое окно с содержимым топика.
  39. В web-клиенте исправлена ошибка, приводящая к невозможности закрыть диалоговое окно с открытым обсуждением в мобильной версии приложения, если у пользователя нет прав на добавление новых обсуждений.
  40. В web-клиенте исправлено ошибка, приводящая к некорректному отображению кнопки “Редактировать” в обсуждениях для мобильной версии приложения.
  41. В web-клиенте исправлено ошибка, приводящая к возможности отображения всех доступных топиков с активной настройкой “Единственное обсуждение” для пользователей с правом добавления новых обсуждений в компактном режиме.
  42. В web-клиенте исправлено ошибка, приводящщая к некорректному отображению контрола обсуждений с активной настройкой “Единственное обсуждение” в мобильной версии приложения: ранее контрол отображал все существующие топики.
  43. В web-клиенте исправлена ошибка форматирования дат с миллисекундами.
  44. В web-клиенте исправлено отображение рамки валидации контрола в задании при сохранении карточки или завершении задания.
  45. В web-клиенте исправлена ошибка, из-за которой кнопка переключения режима отображения карточки дублировалась в ситуации, когда предпросмотр был скрыт.
  46. В web-клиенте исправлена ошибка, из-за которой при первом открытии карточки в диалоге контрол предпросмотра файлов мог отображаться всегда, даже когда размер рабочей области приложения это запрещал.
  47. В web-клиенте убрана кнопка переключения режима отображения карточки при отображении её в диалоге.
  48. В скриптах Setup.bat/setup.sh исправлен импорт схемы в случае, если при установке была отключена поддержка полнотекстового поиска.
  49. В web-клиенте группировка по колонке, содержащей дату и время, теперь выполняется по дате без учёта времени.
  50. В web-клиенте исправлен сброс предпросмотра файла при клике по пустой области в контроле “Список файлов”, если в нём включена группировка.
  51. В web-клиенте исправлена ошибка, из-за которой в контроле “Строка” мог появляться второй скролл при изменении размеров страницы.
  52. В web-клиенте исправлено расположение колонок в карточке в блоке с флагом “Заголовки слева”.
  53. В web-клиенте для некоторых диалогов исправлено отображение заголовка и кнопки разворота на весь экран.
  54. В web-клиенте для диалога работы с нумератором карточки исправлены отступы между контролами и их заголовками.
  55. В web-клиенте исправлен размер фильтра представления для строкового параметра. Ранее введённый в фильтре текст мог обрезаться при наличии достаточного места для его отображения.
  56. В web-клиенте исправлена ошибка для мобильной версии приложения на iOS, приводящая к исчезновению поля ввода при активной клавиатуре в контроле обсуждений.
  57. Исправлена ошибка, которая возникала при сохранении карточек типа “Генератор умных ролей” на этапе проверки условий, что версия генератора умных ролей может быть обновлена.
  58. В web-клиенте исправлена ошибка в контролах “Строка”, “Нумератор”, и в поле “Номер” в диалоге контрола “Нумератор”, из-за которой последние символы контрола, значение которого достигло максимальной длины, удалялись при попытке редактирования значения.
  59. Для команд tadmin OcrSync и OcrAsync исправлено взаимодействие с клиентским и серверным API системы. Теперь команда OcrSync использует только те зависимости, которые зарегистрированы в серверной части, а команда OcrAsync использует зависимости, зарегистрированные в клиентской части. Как следствие, для команды OcrSync больше не требуется открытие сессии.
  60. В web-клиенте для диалога аннотаций PDF проведены косметические изменения.
  61. В web-клиенте исправлена ошибка контрола “Текст с форматированием”: ранее при добавлении внешней ссылки пропадала возможность печати вне добавленной ссылки.
  62. В web-клиенте исправлена ошибка, из-за которой не отображались признаки сортировки в представлениях, если сортировка для этих представлений была настроена.
  63. Исправлено удаление дубликатов типов уведомлений в настройках сотрудника на вкладке “Уведомления” при сохранении карточки.
  64. В web-клиенте исправлено расположение контролов в карточке при включённом флаге “С новой строки” у первого контрола.
  65. В web-клиенте исправлено расположение контролов в карточке в блоке с явно заданной высотой в диалоге “Расположение блоков”.
  66. В web-клиенте изменено отображение даты сообщений в обсуждениях.
  67. Исправлена ошибка, из-за которой при импорте карточки в ответе содержалось некорректное значение версии карточки после сохранения.
  68. Контроллер /check, проверяющий состояние сервиса web, теперь выполняет системное представление Views вместо MyTasks (которое может быть существенно изменено или недоступно в проектном решении).
  69. Перед выполнением представлений из запроса ITessaViewRequest явно удаляются параметры RequestParameter, имеющие повторяющиеся имена (без учёта регистра) или пустые имена.
  70. В web-клиенте в обсуждениях удалена кнопка “Войти в режим повышенных привилегий” из меню топика.
  71. Исправлено создание операций в рамках транзакции, например, в сценариях маршрутов или бизнес-процессов. Теперь операция добавляется в очередь операций только при завершении внешней транзакции.
  72. В web-клиенте в объектной модели объекта для предпросмотра html добавлена возможность указывать параметр sandbox.
  73. Для представления “Активные сессии” исправлен вывод при указанном параметре “Используется”.
  74. В web-клиенте исправлено скачивание приложения Deski для пользователей, не являющихся администраторами.
  75. Исправлено повторное распознавание файла, а также отображение иконки OCR на файле, для которого могла отсутствовать карточка операции OCR в системе. Такое было возможно, например, при восстановлении карточки из корзины, если при её удалении в карточке присутствовал распознаваемый файл.
  76. В desktop-клиенте исправлено отображение диалога подтверждения при удалении распознаваемого файла.
  77. В web-клиенте исправлена ошибка для мобильной версии приложения, приводящая к некорректному отображению поля ввода текста с форматированием в обсуждениях.
  78. В web-клиенте исправлена ошибка, приводящая к некорректному отображению содержимого контрола предпросмотра посредством Р7-Офис / OnlyOffice: ранее контрол отображался по минимально возможной высоте.
  79. В web-клиенте исправлена ошибка, приводившая к некорректному расположению выпадающего списка относительно контрола “Ссылка”.
  80. В web-клиенте исправлена ошибка, приводящая к некорректной работе поисковых запросов, созданных посредством клика правой кнопкой мыши на узел дерева представлений: ранее скрытые параметры и параметры, доступные только для чтения, не сохранялись в поисковом запросе.
  81. В конструкторе процессов исправлена ошибка, возникающая при очистке поля “Иконка” в настройках узла и при попытке импортировать шаблон процесса, в котором в одном из узлов не была задана иконка.
  82. Исправлен некорректный подсчёт количества заданий в подразделении для отчёта “Текущие задания” в тех случаях, когда задание назначалось на роль из нескольких сотрудников.
  83. Исправлено закрытие подключения к Redis в RedisConnectionProvider, если база данных Redis не была инициализирована, и при её инициализации возникли ошибки.
  84. В web-клиенте исправлена ошибка экспорта данных представления в ситуации, когда использовался параметр с настройкой DateTimeType.
  85. Исправлено представление “Доступные заместители” (AvailableDeputyUsers) при выполнении на СУБД PostgreSQL.
  86. Исправлена ошибка, из-за которой при нажатии кнопки “Сохранить” в диалоге “Добавить обсуждение” могло создаться несколько одинаковых обсуждений.
  87. В web-клиенте исправлена ошибка в мобильной версии приложения на Android, приводящая к прокрутке окна приложения при открытом в обсуждениях редакторе текста.
  88. В web-клиенте исправлена ошибка в мобильной версии приложения, приводящая к возможности выполнять прокрутку панели приложения при открытом дереве представлений.
  89. Для карточки “Сотрудник” исправлено наполнение виртуальных секций “Подразделения” (PersonalRoleDepartmentsVirtual), “Статические роли” (PersonalRoleStaticRolesVirtual), “Все роли” (PersonalRoleRolesVirtual), если из схемы у типа карточки PersonalRole выключены некоторые из этих секций.
  90. В web-клиенте исправлена ошибка, связанная с пропадающим списком топиков в обсуждениях при обновлении карточки.
  91. В web-клиенте исправлена ошибка в мобильной версии приложения на iOS, приводящая к появлению глобальной полосы прокрутки в рабочих местах и карточках.
  92. В web-клиенте исправлена обработка события нажатия клавиши Enter при входе в систему.
  93. В web-клиенте исправлена ошибка, где при нажатии на кнопку обновления в карточках не учитывалась информация о тегах.
  94. В конструкторе бизнес-процессов в действии “Группа заданий” исправлен текст ошибки, возникающей, если тип задания не указан в настройках действия.
  95. В web-клиенте исправлена ошибка в мобильной версии приложения, связанная с тем, что открытый диалог обсуждения перекрывал меню системы и диалог с заданиями.
  96. При подписании в случае ошибки проверки подписи, подпись не сохраняется в карточку, кроме определённых случаев, описанных в документации.
  97. В web-клиенте исправлено сохранение режима отображения/скрытия области предпросмотра.
  98. Для команд tadmin ImportScheme и ImportSchemeSql исправлена ошибка импорта схемы данных, возникающая при наличии в импортируемой схеме таблиц с новыми записями, относящимися к библиотеке, отличной от библиотеки самой таблицы.
  99. В web-клиенте исправлена ошибка в контроле “Текст с форматированием”, приводившая к вставке внешней ссылки или файла в сообщение не в позиции курсора.
  100. Оптимизировано добавление участников и ролей к обсуждению.
  101. Для исполнителей заданий “На доработку” скорректирован список выдаваемых по умолчанию прав доступа. Актуальный список прав доступа, выдаваемых заданиями типового решения, можно посмотреть в руководстве администратора в разделе Права, определяемые задачей или этапом маршрута/процесса.
  102. В конструкторе бизнес-процессов в действии “Таймер” исправлена обработка флага “Блокировать процесс при асинхронном вызове”.
  103. В web-клиенте исправлена ошибка, приводившая к некорректному вертикальному выравниванию текста в кнопках с типом small.
  104. В web-клиенте у контролов “Ссылка” и “Список” определение доступных представлений по настройкам RefSection и ColPrefix теперь выполняется без учёта регистра.
  105. Для серверных команд утилиты tadmin исправлено поведение, при котором выполнялась попытка инициализировать данные системы в Redis вместо того, чтобы проверять состояние инициализированности данных.
  106. Исправлено поведение, при котором проверка сервиса web по адресу /hcheck пыталась инициализировать данные системы в Redis вместо того, чтобы проверять только наличие подключения к Redis.
  107. В TessaAdmin исправлена ошибка, возникающая при полном удалении JSON-текста представления в редакторе.
  108. В web-клиенте исправлено обновление списка обсуждений при архивации обсуждения.
  109. В web-клиенте исправлено закрытие обсуждения при выходе из него.
  110. В web-клиенте исправлена локализация элементов выпадающего списка ссылочных контролов в диалоге выбора категории файла.
  111. В web-клиенте для аннотаций pdf исправлено добавление и отображение многострочного текста, также внесены изменения во внешний вид.
  112. Исправлено заполнение поля “Назначено на роль” в истории заданий в тех случаях, когда длина строки с именами записываемых ролей превышала максимально допустимую.
  113. Исправлено обновление элементов истории заданий в тех случаях, когда происходило их одновременное обновление из-за изменения в задании или на основании изменений в объекте Card.TaskHistory.
  114. Исправлена ошибка проверки расширенных настроек доступа на запрет полей или секций карточки при её создании в ситуации, когда токен прав доступа карточки требуется перерассчитать, например, из-за изменения настроек правил доступа.
  115. При сохранении карточки тега в полях “Общий с”, “Редакторы” и “Читатели” теперь удаляются дублирующие роли.
  116. В web-клиенте исправлены отступы внутри тулбара в области предпросмотра файлов.
  117. В TessaAdmin при экспорте локализации в Excel исправлено создание строк, в которых отсутствует перевод для одного из используемых языков.
  118. В web-клиенте исправлена ошибка, приводившая к тому, что при изменении текущей версии файла в диалоге “Версии файла” имя файла оставалось прежним.
  119. В web-клиенте исправлено раскрытие первого узла в дереве рабочего места, когда для него свойство “Отображение узла” установленно “Свернутым” в TessaAdmin.
  120. Исправлено наименование плагина RemoveCompiledViews на RemoveCompiledViewsPlugin.
  121. В web-клиенте в контроле “Список файлов” исправлена ошибка группировки по категории файла в ситуации, когда категория из списка и вручную добавленная категория файла определялись в разные группы.
  122. При выборе категории файла в списке доступных категорий теперь не отображаются вручную добавленные категории, если они совпадают с категориями из списка.
  123. В web-клиенте для текстовых полей с форматированием отключена настройка “Автофокус” в мобильной версии приложения.
  124. Исправлена ошибка, которая приводила к тому, что контрол “Текст с форматированием” не мог отобразить текст после его редактирования, если до этого текст редактировался в web-клиенте.
  125. Исправлена ошибка, из-за которой не заменялись плейсхолдеры в именах шаблонов файлов при запросе от клиента, даже когда имя файла в таком запросе не задавалось, а использовалось имя из базы данных.
  126. В web-клиенте исправлена ошибка, в результате которой кнопки в окне настроек могли заезжать друг на друга при уменьшении ширины экрана.
  127. В TessaAdmin исправлена ошибка работы с формами и блоками в типах диалогов, которая возникала при наличии циклических зависимостей между таблицами карточек в схеме данных.
  128. В web-клиенте исправлена ошибка, приводившая к загрузке файла с некорректным именем при создании файла по шаблону.
  129. Исправлено отображение версии приложения Deski, который подключён к web-клиенту.
  130. В web-клиенте исправлена ошибка, приводящая к некорректному отображению высоты диалогового окна: ранее содержимое диалогового окна могло обрезаться по высоте.
  131. Исправлен вывод команды tadmin Check с параметром -h при получении состояния Unhealthy.
  132. Исправлены конструкторы классов исключений ConfigurationSealedException и ConfigurationStrictSecurityException, принимающие вложенное исключение.
  133. В web-клиенте исправлена ошибка, приводившая к тому, что диалоговое окно об отсутствии лицензии отображалось без стилей.
  134. Исправлен сценарий генерации ссылки в контроллере для мобильного приложения TESSA Assistant. В приоритете получение ссылки из поля WebAddress карточки настроек сервера, или, если оно не заполнено, то ссылка формируется с помощью LinkGenerator.
  135. В web-версии исправлен расчёт отображения кнопок вторичных процессов.
  136. В форумах и в контроле “Текст с форматированием” исправлено открытие вложенного изображения по клику.
  137. В web-клиенте исправлено отображение неактуального фонового изображения при повторном открытии закрытой вкладки и дублировании вкладки.
  138. В web-клиенте в мобильной версии исправлена ошибка, в результате которой на вкладке обсуждений кнопки уходили за границу экрана.
  139. Исправлена ошибка компиляции скриптов в карточке “Шаблон файла”, возникающая при использовании API для работы с объектами документа Word или Excel.
  140. Исправлена локализация подсказок для полей Время жизни JWT токена TESSA Assistant и Использовать мобильный ассистент TESSA Assistant в карточке “Настройки сервера”.
  141. Исправлена работа веб-сервиса web в случае отсутствия прав на создание папки authorized_keys.
  142. В web-клиенте исправлено поведение обнаружения открытой вкладки браузера с приложением: при перезагрузке страницы обнаружениие не производится.
  143. Исправлена ошибка, из-за которой не обновлялся флаг IsActive для заместителей контекстных ролей при использовании старой системы замещений.
  144. Исправлена инициализация зависимостей по умолчанию TessaPlatform.Dependencies и TessaPlatform.ServerDependencies при невозможности выполнить парсинг файла app.json. Для приложений chronos, web, tadmin инициализируются зависимости из Tessa.Linux для ОС Linux. Для приложений chronos, web инициализируются зависимости из Tessa.Server. Это позволяет для некорректно сформированного файла app.json (например, при опечатке в нём) открыть страницу /check веб-сервиса, и увидеть причину ошибки вместо падения при инициализации контейнера Unity.
  145. В web-клиенте исправлена локализация заголовка у диалогов, открываемых до получения настроек локализации с сервера.
  146. В web-клиенте исправлена ошибка, приводившая к дублированию описания в диалоге ошибок.
  147. В web-клиенте исправлен стиль области между полосами вертикальной и горизонтальной прокрутки.
  148. В контроле “Представление” с включённым расширением “Список файлов в представлении” исправлено отображение колонки “Категория” в ситуации, когда группировка менялась с “По категории” на любую другую.
  149. В контроле “Список файлов” и в контроле “Представление” с включённым расширением “Список файлов в представлении” исправлена группировка “По копии” в ситуации, когда у двух основных файлов с копиями было одинаковое имя.
  150. В web-клиенте в контроле “Представление” с включённым расширением “Список файлов в представлении” отключён автоматический выбор первой строки, который приводил к предпросмотру первого файла при применении любой группировки или фильтрации.
  151. Исправлена ошибка, из-за которой в иерархических представлениях при установленном флаге AutoSelectFirstRow не всегда выбиралась корректная строка.
  152. В web-клиенте исправлена ошибка, приводящая к возможности просмотра структуры карточек при активированной конфигурации безопасности Configuration.StrictSecurity.
  153. Исправлена загрузка аннотаций pdf из файла.
  154. В web-клиенте исправлена прокрутка колесом мыши внутри элементов, открываемых из панели многостраничного тулбара.
  155. Исправлена ошибка, из-за которой могла некорректно отображаться отметка в маршруте о наличии дополнительных согласующих.
  156. В web-клиенте исправлена ошибка возникавшая при сохранении карточки, если до этого был открыт активный этап маршрута для просмотра.
  157. В web-клиенте исправлен drag-and-drop из контрола “Представление” с расширением “Список файлов в представлении” в файловую папку.
  158. Исправлена ошибка, из-за которой при запросе участников топика через метод ITopicParticipantsProvider.GetTopicParticipantsAsync, мог возвращаться некорректный признак подписанности или отписанности участника топика.
  159. В web-клиенте исправлена ошибка отображения ссылочных контролов, содержащих лоадер: ранее при появлении лоадера в ссылочном контроле периодически появлялись вертикальные и горизонтальные полосы прокрутки.
  160. В web-клиенте исправлена ошибка, приводящая к выполнению запроса на получение обсуждений при обновлении карточек типового решения, в которых обсуждения отсутствуют.
  161. В web-клиенте исправлена ошибка, приводящая к некорректному отображению значения ссылочного контрола с активной настройкой ручного ввода.
  162. Исправлено возможное зависание блокировки на глобальные кэши в Redis при сохранении схемы через TessaAdmin.
  163. В web-клиенте исправлен импорт файлов с аннотациями pdf: можно загружать файл с аннотациями других пользователей, которые были сделаны в редакторе аннотаций TESSA, а аннотации, добавленные во внешних редакторах, импортируются от имени текущего пользователя.
  164. В форумах исправлена локализация ролей при их добавлении в топик.
  165. В шаблонах файлов Word исправлена ошибка, возникавшая при наличии плейсхолдеров в колонтитуле документа.
  166. В web-клиенте исправлена ошибка, приводящая к некорректному отображению высоты многострочных контролов.
  167. В web-клиенте в форумах и контроле “Текст с форматирование” исправлено добавление множества картинок одновременно.
  168. Исправлена ошибка, из-за которой не учитывалась сортировка таблицы с данными представления при обработке плейсхолдеров для имён файлов шаблонов.
  169. Доработана обработка ошибок в веб-сервисах, использующих ErrorHandlingMiddleware (web, jinni, monitor). При штатной отмене соединения с клиентом (например, пользователь закрыл браузер в процессе обработки) исключения OperationCanceledException или IOException более не выводятся в консоль сервиса (которая видна по systemctl status, journalctl или при запуске сервиса из терминала). Также при возврате ошибки устанавливаются HTTP-заголовки ответа на запрос, запрещающие его кэширование.
  170. В web-клиенте исправлена ошибка отображения тега в столбце представления, возникавшая при недостатке места в ячейке для тегов, имя которых состоит из нескольких слов.
  171. В форумах исправлена ошибка, из-за которой отсутствовало сервисное сообщение об удалении ролей из топика.
  172. В web-клиенте исправлена ошибка, связанная с появлением лишней горизонтальной полосы прокрутки в табличных контролах при уменьшении ширины экрана.
  173. В web-клиенте исправлена ошибка, связанная с появлением лишней полосы прокрутки в обсуждениях при изменении размера редактора сообщений.
  174. В web-клиенте исправлена ошибка, из-за которой при открытии диалога выбора из представления мог ломаться рендер карточек.
  175. В мобильном web-клиенте исправлена ошибка, приводящая к появлению горизонтальной полосы прокрутки в представлениях, содержащих большое количество тегов.
  176. В web-клиенте исправлена ошибка при использовании SAML-авторизации, возникавшая в том случае, когда система при просроченных cookies SAML-авторизации отправляла запрос на логаут без всех необходимых данных к провайдеру аутентификации.
  177. В web-клиенте исправлена ошибка отображения параметров фильтрации, содержащих контрол “Дата и время” с выбранным условием “между”: ранее между вышеупомянутыми контролами параметра фильтрации отсутствовал отступ.
  178. В web-клиенте исправлена ошибка отображения тегов в карточках: ранее при использовании большого количества тегов, они сжимались до нечитаемого состояния.
  179. В плагине генерации умных ролей исправлена ошибка, из-за которой система производила лишние расчёты генераторов умных ролей.
  180. В web-клиенте исправлена ошибка отображения компонента слайдера для вывода точности распознавания текста: добавлены скругления для слайдера и его ползунка.
  181. В web-клиенте исправлена ошибка, возникавшая при открытии приложения, когда в файле настроек сервера app.json в секции SAML параметр LogoutBinding не был указан или имел некорректное значение.
  182. В web-клиенте исправлена ошибка представлений с отключённой горизонтальной прокруткой: ранее при изменении ширины представления периодически появлялась полоса горизонтальной прокрутки.
  183. В web-клиенте исправлена ошибка, из-за которой колонки представления с типом Decimal не всегда форматировались.
  184. Исправлена ошибка, возникавшая при выборе более одного документа в узле “Мои документы” рабочего места “Пользователь”.
  185. В web-клиенте исправлена ошибка, из-за которой свойство corners не обрабатывалось при конвертации темы в переменные.
  186. Исправлена ошибка, из-за которой после делегирования задания на согласование, задания на дополнительное согласование отзывались.
  187. Исправлено повторное подключение сервиса web к сервису monitor в случае, если monitor был перезапущен без перезапуска web.
  188. В web-клиенте исправлена ошибка отображения тегов в скрытом списке: ранее между тегами отсутствовали отступы, а сами теги отображались без скруглений.
  189. В web-клиенте исправлено использование строк локализации названий рабочих мест для информации о текущем пользователе.
  190. Исправлена ошибка при сбросе кэша прав доступа, которая позволяла другому процессу загрузить устаревший номер версии кэша.
  191. В web-клиенте исправлена ошибка в табличных контролах, приводившая к некорректному измерению ширины оверлея.
  192. В web-клиенте исправлена ошибка в табличных контролах, приводившая к изменению фактического размера колонки при переходе в скрытое состояние.
  193. В web-клиенте исправлена ошибка в табличных контролах, приводившая к тому, что в IGridMetrics ширина скрытых колонок всегда была равна нулю.
  194. В web-клиенте исправлен ряд ошибок в табличных контролах, приводивших к некорректному поведению колонок, перекрытых оверлеем.
  195. В web-клиенте исправлена ошибка, появляющаяся при применении к представлению параметра фильтрации типа Decimal с пустым значением.
  196. В web-клиенте исправлена ошибка в диалоге выбора значений строки, отображаемого в диалоге выбора из представления, которая приводила к закрытию всех диалогов сразу.
  197. В web-клиенте исправлено некорректное отображение размера текста в pdf аннотациях.
  198. В конструкторе процессов исправлена ошибка, из-за которой действие “Типовая задача” не завершалось при завершении его заданий, если для типа карточки, для которой запускался процесс, не были включены маршруты.
  199. В web-клиенте исправлена ошибка, из-за которой при добавлении файла в карточку, для которого доступна только одна категория и размер которого был больше, чем разрешено расширенными настройками правил доступа, система выводила множество сообщений об ошибках вместо одного.
  200. Исправлено удаление связанных карточек в тестах вызовом методов ITestCardManager.DeleteCardAfterTest() при освобождении скоупа. Теперь удаление выполняется в порядке, обратном порядку создания карточек.
  201. В API тестов в классе CardLifecycleCompanion исправлена ошибка метода CreateOrLoadSingleton, из-за которой метод мог вернуть некорректную версию карточки-синглтона. Теперь, если карточка уже существует, метод всегда загружает актуальную карточку из БД, а не возвращает закэшированную версию карточки.
  202. Исправлена ошибка, из-за которой при экспорте карточки с перезаписью поверх уже существующей могли быть удалены файлы-исключения из подпапки, относящейся к данной карточке.
  203. В команде tadmin ExportCards исправлена ошибка, из-за которой игнорировался ключ -localize.
  204. В команде tadmin ExportCards исправлена ошибка, из-за которой при экспорте карточек в библиотеку записи о карточках могли дублироваться.
  205. Исправлен msi-инсталлятор Deski на ОС Windows, если на момент установки или удаления предыдущая версия приложения была запущена. Теперь приложение автоматически завершается в процессе установки.
  206. В конструкторе бизнес-процессов в действии “Типовая задача” исправлена обработка сигнала завершения заданий.
  207. В web-клиенте в диалоге аннотаций pdf исправлена локализация заголовков фильтров по автору и по типу аннотации.
  208. В маршрутах в этапе “Типовая задача” исправлена ошибка, из-за которой этап завершался при отзыве подзадачи при активной родительской задаче.
  209. В конструкторе бизнес-процессов в действии “Типовая задача” исправлена ошибка, из-за которой этап завершался при отзыве подзадачи при активной родительской задаче.
  210. В web-клиенте исправлена ошибка, из-за которой сохранение порядка колонок в диалоге настроек представления происходило неверно.
  211. Исправлен стиль компонента ViewInformationLabel, влиявший на некорректное отображение текста сообщений об ошибках в контролах карточки.
  212. Исправлена проверка значений начала и окончания действия исключения, а также начала и окончания действия именованного диапазона, при сохранении экземпляров карточек типа “Календарь” и “Тип календаря: Рабочая неделя”. Теперь не допускается возможность одинаковых значений для начала и окончания указанного диапазона.
  213. Исправлена работа расширения типа “Переместить колонку с тегами влево”.
  214. Исправлено заполнение поля CompletedByRole в TaskHistory. Поле заполняется именем сотрудника из поля CompletedByName, если не удалось определить CompletedByRole на основании связанных с заданием ролей.
  215. В web-клиенте исправлена ошибка отображения границ ссылочных контролов диалогового окна “Настройки уведомлений по карточке”: ранее цвет фона диалогового окна совпадал с фоном содержащихся в нем контролов.
  216. Исправлена скрипт tadmin Script TypeSettingsFix (ранее TypeFontsFix), который не учитывал некоторые настройки контролов, из-за чего для них мог оставаться указан шрифт Segoe UI вместо шрифта Default (null в сериализованном типе .jtype).
  217. Исправлено использование объектов ICardTypeVisitor для обхода вложенных объектов в форме у расширения типа “Таблица в представлении”.
  218. Исправлено формирование архива с дампом схемы при возникновении ошибки сохранения схемы.
  219. В контроле “Представление” более нельзя скрыть колонку с тегами через пункт контекстного меню “Скрыть столбец”, сделать это можно только через настройку “Расположение тегов”.
  220. В web-клиенте исправлена ошибка контрола “Представление”, приводящая к отображению кнопки “Сохранить” в контекстном меню настроек видимости и порядка колонок в случае, если настройка “Разрешить сохранение настроек” неактивна.
  221. В web-клиенте исправлена ошибка, из-за которой не сохранялось расположение тегов в контроле “Представление” в карточке при его изменении через диалог настроек.
  222. В web-клиенте исправлено получение индекса колонки при двойном клике на ячейку контролов “Таблица” и “Представление”.
  223. Исправлена ошибка, из-за которой блокировки на чтение карточек освобождались не после завершения действия этих блокировок, а только после завершения всей транзакции.
  224. Исправлено формирование имени при получении контента файла или его версии.
  225. Исправлен вывод заголовков контролов карточки в тёмной теме, а также для других тем, переопределяющих цвет заголовка относительно стандартного в холодной теме.
  226. В web-клиенте в аннотациях pdf исправлены ошибки с перетаскиванием аннотаций и картинок.
  227. В web-клиенте в аннотациях pdf исправлено позиционирование аннотации текста при вставке.
  228. В web-клиенте исправлено сохранение позиции курсора в текстовом контроле при вставке.
  229. В web-клиенте исправлена индикация выпадающего списка у кнопок тулбара карточки.
  230. В web-клиенте для аннотаций pdf исправлено поведение выделения аннотаций при маштабировании и перемещении.
  231. В web-клиенте исправлена ошибка для контрола “Метка”, приводившая к тому, что при наличии прокрутки фон не растягивался вслед за содержимым.
  232. В web-клиенте исправлена некорректная обработка пустых параметров фильтрации представления целочисленного и вещественного типов.
  233. Исправлена ситуация, когда для сервисов monitor и web указание переменной окружения TESSA_CID игнорировалось.
  234. Исправлено имя переменной окружения TESSA_CID для сервиса webbi (ранее использовалась переменная с именем CID_FILE_NAME).
  235. В web-клиенте исправлена ошибка, позволявшая вставку текста в контрол в режиме “Только дня чтения”.
  236. Исправлена ошибка, приводившая к некорректному результату при получении значений плейсхолдеров через метод контекста расширений на замену плейсхолдеров PlaceholderReplaceExtensionContext.GetValueFromPlaceholderAsync.
  237. В TessaAdmin в разделе “Рабочие места” из настроек расширения WebChartWorkplaceExtension убрана лишняя кнопка в настройке “Цвет выделенного элемента”, при нажатии на которую возникала ошибка.
  238. В web-клиенте исправлена ошибка, из-за которой метод CardService.getFileContent не передавал данные info с сервера в ответе.
  239. В web-клиенте в маршрутах в этапе “Создание карточки”, работающего в режиме “Открыть новую карточку”, исправлена ошибка, из-за которой не работала инициализация созданной карточки.
  240. В web-клиенте исправлена ошибка преобразования десятичного числа в цвет в формате RGBA, из-за чего в ситуации, когда в шестнадцатеричном виде числа количество разрядов было отлично от 6 и 8, переданное число не распознавалось системой как корректный цвет. Проблема затрагивала подсветку ячеек представления “Мои задания”, из-за чего при просрочке задания меньше чем на сути ячейка не выделялась оттенком красного цвета.
  241. В web-клиенте исправлена ошибка, приводившая к некорректному вертикальному выравниванию текста в поисковых запросах.
  242. Исправлена ошибка, из-за которой уведомления об истекающем сроке пароля продолжали отправляться даже после его истечения.
  243. В web-клиенте исправлено отображение предпросмотра файла при нажатии на любой элемент контекстного меню файла в файловом контроле.
  244. При ошибке операции синхронизации AD/LDAP в сформированную карточку ошибки теперь добавляется корректная ссылка на карточку.
  245. Из типа карточки “Операция” удалена неработающая ссылка на тип.
  246. В web-клиенте исправлена ошибка, возникающая при копировании цитат из обсуждений: ранее при вставке цитат в контролы “Текст с форматированием” или в другие обсуждения возможно было перейти к обсуждению, откуда была скопирована цитата.
  247. В web-клиенте исправлена ошибка, из-за которой параметр маппинга представления мог быть сгенерирован без критериев.
  248. Исправлена ошибка, которая могла возникать при передаче параметра маппинга, равного null, в случае, когда флаг “Не добавлять параметр для Null” снят.
  249. Исправлено сообщение о скором истечении срока действия пароля пользователя.
  250. Исправлена ошибка, из-за которой при экспорте карточек с прикреплёнными файлами значение свойства CardFile.Hash для таких файлов было отличное от null.
  251. Исправлено освобождение потока с контентом файла при использовании REST-метода api/v1/cards/get-file-content-multipart. Предыдущее поведение могло приводить к тому, что файл или карточку с файлом нельзя было удалить, когда этот файл недавно загружался указанным методом.
  252. В конструкторе бизнес-процессов в действии “Создание карточки” исправлена ошибка, из-за которой нельзя было выбрать тип документа для создания карточки.
  253. В web-клиенте и в desktop-клиенте исправлена ошибка, из-за которой карточки с типом “Диалог” не открывались, если в них использовался файловый контейнер cardModel.FileContainer.
  254. В конструкторе бизнес-процессов в действии “Условие” исправлена ошибка, из-за которой в настройках условий могли зависнуть удалённые списки условий, из-за чего при проверке условий система выполняла уже удалённые проверки.
  255. В web-клиенте исправлена ошибка, приводящая к отсутствию всплывающей подсказки при наведении на кнопку, созданной через CardToolbarAction: ранее настройка toolTip не учитывалась.
  256. В web-клиенте исправлена ошибка, из-за которой в карточке “Запись в истории” в меню системы не отображались глобальные пункты меню.
  257. В форумах и в контроле “Текст с форматированием” исправлено отображение изображений в режиме “Показывать уменьшенную версию”.
  258. В web-клиенте для поисковых запросов добавлено изменение фонового цвета при наведении на них курсора мыши.
  259. В web-клиенте исправлена ошибка, из-за которой неправильно определялся оператор при задании параметра представления типа Boolean при выборе группировки.
  260. Исправлена ошибка, из-за которой при использовании старой системы замещения при отправке задания на контекстную роль заместители по типу документа добавлялись в список функциональных ролей задания не сразу, а только после перерасчёта заместителей.
  261. Исправлена запись в лог сервиса web ошибки Failed to authenticate using Kerberos, если одновременно с Kerberos может использоваться Basic-аутентификация, обеспечиваемая средствами front-сервера (IIS, Nginx, Apache).
  262. Исправлена ошибка расчёта заместителей по типу документа при использовании старой системы замещения, возникающая после отключения и включения заместителей в настройках роли.
  263. Исправлена редко встречающаяся ошибка при выполнении запроса к представлению на СУБД PostgreSQL без установленного флага TreatAsSingleQuery в метаданных. Ошибка связана с тем, что сгенерированная хранимая процедура отсутствовала в кэше СУБД.
  264. В окне “Роли задания” исправлено отображение подразделений сотрудников из состава контекстной роли при включённой новой системе замещений.
  265. В web-клиенте в контроле “Метка” исправлена ошибка отображения многострочного текста.
  266. Исправлена ошибка при восстановлении удалённой карточки с тегами, которая возникала в том случае, когда пользователь, производящий операцию восстановления, не имел прав на использование одного или нескольких прикреплённых к карточке тегов.
  267. В desktop-клиенте исправлен некорректный выбор элемента в контроле “Ссылка” при подтверждении элемента, выбранного из выпадающего списка, потерей фокуса на контроле.
  268. В web-клиенте исправлена индикация состояния “Только для чтения” для контрола “Флажок”.
  269. В web-клиенте исправлена фокусировка для контрола “Флажок”.
  270. В web-клиенте исправлено отображение заголовка для контрола “Флажок” в режиме переключателя.
  271. В маршрутах в этапе “Создание карточки” поле “Тип карточки” переименовано в “Тип”.
  272. В web-клиенте исправлен текст ошибки при отсутствии доступа на отправку ознакомления.
  273. Исправлена конвертация файлов из офисных форматов в pdf посредством unoconv при наличии в файле оглавления.
  274. В тексте уведомления “Завершение подзадачи” исправлена ошибка, из-за которой исполнитель задания выводился некорректно.
  275. В desktop-клиенте исправлена ошибка, из-за которой в параметрах представлений не работала вставка значений с дробной частью.
  276. При генерации шаблонов файлов исправлена ошибка, из-за которой добавленные при генерации файла предупреждения и информационные сообщения не отображались пользователю.
  277. Исправлена ошибка, из-за которой в контроле “Таблица”, размещённом внутри формы строки другой таблицы, некорректно работала логика изменения порядка строк.
  278. В web-клиенте исправлена ошибка, приводящая к некорректному расположению иконки статуса в контролах диалогового окна распознавания текста.
  279. В web-клиенте исправлена ошибка, из-за которой при открытии диалога добавления тега не устанавливался фокус на контрол быстрого поиска представления.
  280. В web-клиенте при открытии сессии теперь корректно устанавливается локальный часовой пояс пользователя.
  281. В web-клиенте в маршрутах в этапе “Согласование” исправлена ошибка, из-за которой могла некорректно отображаться отметка о наличии дополнительных согласующих.
  282. Исправлена ошибка, из-за которой в представлениях “Мои обсуждения” и “Последние обсуждения” у параметра “Показать архивные обсуждения” отображались лишние критерии для фильтров.
  283. Исправлена ошибка, из-за которой при удалении записи в представлении “История ознакомления” выполнялось удаление сотрудника, которому было отправлено ознакомление.
  284. В web-клиенте исправлена ошибка резолва DI зависимостей при создании вторичного процесса в режиме без задания.
  285. Оптимизирована регистрация кэшей компиляции в ICompilationCacheContainer.
  286. В типе карточки “Шаблон” исправлена ошибка, из-за которой на верхней панели не отображались стандартные кнопки управления карточкой, такие как “Сохранить”, “Обновить” и “Удалить”.
  287. В web-клиенте исправлена ошибка, возникающая при переводе шаблона в режим редактирования.
  288. Исправлена ошибка, из-за которой после генерации файлов по шаблону с форматом xlsx сводные таблицы этих файлов не отображались в редакторе Р7-Офис.
  289. Исправлена ситуация, когда делегат, передаваемый в метод IBackgroundServiceQueue.EnqueueAsync, выбрасывал исключение OperationCanceledException, которое не было связано с переданным через параметр токеном CancellationToken, что приводило к остановке фоновой очереди операций для веб-сервиса.
  290. Исправлена ошибка, из-за которой сервер мог попытаться получить файл из файлового источника, даже если было известно, что данный файл имеет ошибку.
  291. В web-клиенте исправлены ошибки в логике некоторых действий контекстного меню файлов, из-за которых клиент мог попытаться запросить файл у сервера, даже если было известно, что данный файл имеет ошибку.
  292. В desktop-клиенте исправлена ошибка, из-за которой в контекстном меню файлов отображались строки с действиями, которые не должны отображаться для файлов, имеющих ошибку.
  293. Оптимизирована обработка запросов на стороне web-сервера при добавлении участников в обсуждения.
  294. В web-клиенте исправлена ширина анимации загрузки.
  295. Исправлено отображение информации о том, что система находится в режиме технического обслуживания, в окне сообщения об ошибках. Ранее наблюдалось некорректное наложение стилей.
  296. Исправлена ошибка, из-за которой не освобождался номер из последовательности после безвозвратного удаления карточки. Ошибка воспроизводилась, если использовался только регистрационный номер и для проектного номера не стоял флаг “Освобождать номер при удалении”.
  297. Исправлена обработка создания задания, отправленного на контекстную роль, в старой системе замещений. Теперь, если при создании задания, основным исполнителем которого назначена контекстная роль, указать временную зону и календарь, система не будет пытаться вычислить их на основании состава контекстной роли, а возьмёт те, что указаны в задании. Кроме того, для расчёта плановой даты задания в описанном выше случае также будут использованы данные о временной зоне и календаре, указанные в самом задании.
  298. В web-клиенте в контроле “Таблица” исправлен поиск по контенту числовых колонок.
  299. В web-клиенте исправлена ошибка, приводившая к тому, что кнопка с многоточием тулбара в режиме “spread-end” растягивалась по ширине.
  300. В web-клиенте исправлена ошибка отображения кнопок завершения заданий с активной настройкой “Дополнительный вариант”.
  301. В web-клиенте исправлена ошибка, приводящая к закрытию диалогового окна аннотаций при отсутствии подтверждения удаления аннотаций из файла.
  302. При генерации хранимых процедур для выполнения представления в СУБД PostgreSQL имя процедуры теперь не зависит от регистра переданных в запросе имён для алиаса представления, сабсетов и параметров фильтрации. Это оптимизирует количество хранимых процедур, если имена передаются в различных регистрах.
  303. В маршрутах оптимизирована компиляция сценариев.
  304. В desktop-клиенте для открытия файлов TIFF через пункт меню “Редактирование изображений” (для последующего преобразования в PDF) исправлено создание лишней пустой временной папки.
  305. В web-клиенте исправлено отображение поля информации о задании, которое содержит информацию о текущем сотруднике, взявшем задание в работу.
  306. В web-клиенте исправлена ошибка отображения данных типа DateTimeOffset в контролах таблиц.
  307. В web-клиенте исправлена ошибка, из-за которой бандлы с расширениями могли подключаться в неверном порядке.
  308. Исправлено форматирование дат в сообщениях об ошибках, связанных с открытием сессии. Теперь даты форматируются в соответствии с предпочтениями пользователя. Ранее даты в таких сообщениях всегда форматировались в виде dd/MM/yyyy.
  309. Исправлены ошибки, из-за которых могли не освобождаться в Redis блокировки при: блокировке операций с помощью IOperationLockingStrategy, расчётах ACL, создании и обновлении вложенных и умных ролей.
  310. Исправлена установка запрета на изменение секции BusinessProcessVersions при открытии карточки шаблона бизнес-процесса для тех случаев, когда секция была исключена из карточки.
  311. В web-клиенте исправлена ошибка в файловом контроле, из-за которой в режиме множественного выбора при нажатии на файл происходил предпросмотр файла.
  312. В web-клиенте исправлена ошибка, приводящая к появлению лишней полосы прокрутки в диалоговых окнах ошибок в мобильной версии приложения.
  313. В web-клиенте исправлена ошибка, приводящая к появлению лишней полосы прокрутки в диалоговых окнах поисковых запросов в мобильной версии приложения.
  314. В web-клиенте исправлено выделение диапазона строк в контроле представления с зажатым Shift.
  315. В web-клиенте в диалоге добавления тега к карточке скрыта кнопка “Фильтрация данных”.
  316. Исправлена ошибка обработки шаблонов бизнес-процессов, из-за которой флаг “Блокировать процесс при асинхронном вызове” в настройках связи выполнял блокировку процесса при отсутствии флага, а не его наличии.
  317. В web-клиенте исправлена ошибка в контроле представления при установке колонки для группировки.
  318. Исправлена ошибка NRE, которая могла возникать при проверке сертификата посредством OSCP.
  319. Исправлена ошибка, из-за которой для карточки типа “Диалог” выполнялось вычисление дайджеста.
  320. В web-клиенте оптимизирована проверка прав на доступ к представлению “История заданий”, отображаемому в контроле “Представление”.
  321. В web-клиенте исправлено отображение текста для дополнительного описания файла.
  322. В маршрутах исправлена ошибка, из-за которой неправильно задавался идентификатор родительской строки этапа. Ошибка, например, приводила к неправильному формированию отображаемого списка “Участники” в таблице “Этапы маршрута” в карточке документа, если участников было больше двух.
  323. В web-клиенте исправлена ошибка, приводящая к отображению пункта “На весь экран” для выпадающего списка пользовательских настроек в мобильной версии приложения.
  324. Исправлена ошибка, из-за которой не отображался пункт системного меню “Редактировать” в карточке “Сотрудник”. Ошибка возникала, если тип карточки “Сотрудник” был добавлен в типовое решение, и состояние карточки отлично от “Проект”.
  325. В web-клиенте исправлена ошибка переключения режима сортировки таблицы при обновлении карточки, если режим сортировки столбца указан в расширениях.
  326. Исправлена ошибка, которая могла возникать при параллельном создании текстового слоя в процессе распознавания многостраничного файла.
  327. Исправлена проблема, из-за которой при возникновении ошибок во время загрузки файла карточки для него устанавливался некорректный статус.
  328. В карточке “Правило расчёта ACL” в контроле “Расширения” поиск расширения по имени через автокомплит или параметр представления теперь выполняется без учёта регистра.
  329. Исправлена ошибка в API конвертации файлов, где поток на временный файл с результатами конвертации мог быть не закрыт, если в процессе сохранения карточки кэша файлов возникло необработанное исключение (такое, как по токену отмены операции). В результате временный файл не удалялся.
  330. В desktop-клиенте исправлена ошибка, возникавшая при открытии представления, у которого в настройке строкового названия DisplayValueColumn для какой-либо из ссылок был указан алиас не строковой колонки.
  331. В web-клиенте исправлена обработка drag-and-drop файла в контрол “Текст с форматированием”.
  332. В web-клиенте исправлена проблема, из-за которой не локализовывался текст при возникновении ошибки во время загрузки файлов карточек.
  333. Исправлены возможные ошибки в кэшах настроек календарей, типов календарей и кэше бизнес-процессов.
  334. В web-клиенте исправлена ошибка, приводящая к отсутствию возможности загружать файлы в приложение при использовании мобильных устройств на iOS.
  335. Исправлено формирование обратных ссылок в письмах мобильного согласования.
  336. Исправлена ошибка, из-за которой не учитывались изменения в контексте расширений на отправку уведомлений.
  337. В представлении TaskHistory исправлена ошибка, из-за которой не отображалось состояние “назначено на” для незавершённых заданий.
  338. В web-клиенте исправлена ошибка, приводившая к появлению неиспользуемого пространства в выпадающем меню тегов карточки.
  339. В web-клиенте исправлена ошибка, из-за которой при выгрузке данных из представлений имя файла имело неправильное значение.
  340. Исправлен возврат IConditionSource по коллекционным секциям из типов карточек настроек, вызываемый во время исправления типов условий.
  341. В приложении-ассистенте Deski исправлены ошибки в логике определения блокировки на файле.
  342. В web-клиенте теперь карточка не будет сохранена при наличии проблем с файлами в Deski. В этом случае сохранение будет отменено, и пользователю будет выведено сообщение об ошибке.
  343. Исправлен сброс кэша настроек истории действий при запросе новой карточки настроек сервера.
  344. В web-клиенте исправлена ошибка, возникавшая при закрытии редактора настроек дня недели в карточке “Тип календаря: Рабочая неделя”.
  345. Исправлены опечатки в названиях методов: WorkflowHelper.InializeTaskCompletionOptionsAsync -> WorkflowHelper.InitializeTaskCompletionOptionsAsync, WorkflowHelper.InializeActionCompletionOptions -> WorkflowHelper.InitializeActionCompletionOptions.
  346. Исправлена работа параметра “Заместитель” при использовании в представлениях по замещениям при включённой новой системе замещений.
  347. В методе GuardStatics.ThrowIfNullValue исправлена обработка значения параметра paramName.
  348. В web-клиенте исправлена ошибка отображения некоторых значений в ячейках представлений: ранее значения false и 0 не отображались.
  349. В web-клиенте исправлен баг, когда шапка таблицы и контент таблицы разъезжаются после переключения вкладок.
  350. В web-клиенте исправлена ошибка, приводящая к некорректному отображению параметров фильтрации с выбранным критерием “между”: ранее отсутствовал визуальный разделитель между полями.
  351. В web-клиенте исправлено отображение пункта “Открыть карточку” контекстного меню, добавляемого в представление расширением ViewsContextMenuExtension.
  352. В web-клиенте исправлена ошибка, приводящая к тому, что в мобильной версии приложения диалоговые окна валидации всегда отображались на весь экран.
  353. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой не создавалась запись в истории заданий “Вернуть документ на доработку” при завершении действия с отрицательным вариантом завершения.
  354. В web-клиенте исправлена ошибка, приводящая к появлению ошибок и предупреждений в консоли браузера при работе с панелью приложения.
  355. Исправлена работа трассировки представлений.
  356. Оптимизирована работа представлений на СУБД PostgreSQL посредством использования флага TreatAsSingleQuery.
  357. Оптимизирована работа всех стандартных SQL-функций на СУБД PostgreSQL посредством указания дополнительных атрибутов, что приводит к оптимизации плана запроса, в котором используются эти функции.
  358. Для SQL-функций GetString и Localize при выполнении на СУБД PostgreSQL исправлено поведение, чтобы при указании параметра culture, равного NULL, функция возвращала бы значение NULL. Ранее возвращалась исходная строка, что не соответствовало атрибуту STRICT, указанному для функции. Для СУБД MS SQL Server поведение этих функций уже было ожидаемым, т.е. теперь функции на двух СУБД возвращают идентичные результаты, когда один или несколько параметров переданы как NULL.
  359. В desktop-клиенте исправлена ошибка в окне параметров фильтрации представлений. Для воспроизведения нужно добавить параметр с любым критерием, подвердить фильтр “ОК”, после этого открыть диалог фильтрации ещё раз, удалить все критерии этого параметра крестиком, тут же ещё раз добавить этот же параметр, после чего подтвердить фильтр “ОК”. В результате представление выполнялось одновременно и с предыдущими значениями критериев, и с новыми, а если в метаинформации параметра запрещено более одного значения Multiple: false, то выполнение представления завершалось ошибкой.
  360. В web-клиенте исправлена ошибка, приводящая к некорректному расположению зоны “Загрузить файлы” в карточках на устройствах под управлением iOS.
  361. В web-клиенте исправлена ошибка, приводящая к некорректному отображению контролов карточек на устройствах под управлением iOS.
  362. В web-клиенте в мобильной версии приложения добавлены недостающие кнопки в заголовок обсуждений: кнопка обновления текущего обсуждения и кнопка поиска по нему.
  363. Оптимизирован JSON, генерируемый при сериализации ответа на запрос по выполнению представления TessaViewResult. Это сокращает сетевой трафик и оптимизирует затраты сервера и клиента по сериализации результата с большим количеством колонок и строк.
  364. В web-клиенте фон компонента предпросмотра HTML файла в тёмной теме теперь аналогичен фону холодной темы.
  365. В web-клиенте при вставке из буфера обмена в однострочные поля ввода вставляется только первая строка, если был скопирован многострочный текст.
  366. В web-клиенте при закрытии всех вкладок и рабочих мест будет открыто первое в списке рабочее место.
  367. В web-клиенте исправлено отображение кнопки задания “В работу”, когда у пользователя нет функциональной роли с возможностью брать задание в работу.
  368. В web-клиенте исправлена группировка файлов в расширении “Список файлов в представлении” при открытии карточки.
  369. В web-клиенте исправлено форматирование отображаемого значения с типом, отличным от строкового, в контроле “Представление”, для которого используется расширение “Таблица в представлении”.
  370. В web-клиенте исправлен сброс счётчиков для общего числа строк и общего числа страниц в detail-представлении при изменении данных в master-представлении.
  371. В web-клиенте при выборе значения сабсета, ссылочная колонка которого равна null, теперь применяется критерий “пусто” вместо критерия “равно” со значением null. Это соответствует поведению desktop-клиента, а также алгоритму маппинга в полях с автодополнением.
  372. Добавлена возможность “Перевести на себя” задание, взятое в работу другим сотрудником и находящееся в состоянии “Отложено”.
  373. Исправлена десериализация нетипизированного массива из Typed Json, где первый элемент был равен null.
  374. Оптимизирована сериализация массивов в Typed Json, где могут быть вперемешку только вложенные массивы, объекты (хэш-таблицы) и null. Теперь для них не перечисляются типы по дескриптору ::types для всех элементов. Это не влияет на корректность десериализации.
  375. В TessaAdmin и для консольной команды tadmin ImportScheme исправлено сохранение записей в таблицах типа Enumeration для дробных значений колонок вещественных типов Double, Decimal и др. Ошибка воспроизводилась, если у пользователя, сохраняющего схему, настройки форматирования были указаны для русского языка.
  376. В web-клиенте исправлена ошибка, приводящая к сохранению стилей темы при копировании сообщений из обсуждений.
  377. Исправлена ошибка в обработке OCSP-ответа, если в нём указан хеш публичного ключа, а не имя издателя.
  378. Исправлена ошибка, возникающая при импорте карточек, когда у перезаписываемой карточки отсутствует строковая секция в БД при использовании СУБД Postgres.
  379. В web-клиенте исправлена ошибка отображения дерева представлений в браузере Safari на iOS и macOS: ранее при прокрутке приложения дерево представлений не изменяло своего положения.
  380. В web-клиенте исправлена ошибка, приводящая к некорректному отображению фонового цвета скрытых строк контролов таблиц и представлений.
  381. В правилах доступа исправлена ошибка, из-за которой правила доступа с настроенными правилами расчёта ACL и без настроенных ролей не всегда учитывались при проверке расширенных настроек прав доступа.
  382. В правилах доступа исправлена ошибка, из-за которой для правил доступа с настроенными правилами расчёта ACL и без настроенных ролей не учитывался флаг “Всегда проверять правило доступа”.
  383. Исправлена проблема в работе с кэшом файлов для Р7/OnlyOffice, из-за которой могли возникать ошибки при одновренном обращении к файлам.
  384. Исправлена проблема, из-за которой не показывался текст ошибки подписи.
  385. В маршрутах исправлена ошибка, из-за которой запускался этап, который был пропущен пользователем и удалён из шаблона этапов.
  386. В web-клиенте исправлена функциональность кнопки “Сбросить настройки” текущего представления. Теперь при сбросе настроек текущее рабочее место будет закрыто и открыто заново с настройками по умолчанию.
  387. В web-клиенте исправлен внешний вид текстового поля в диалоге добавления новой папки.
  388. В web-клиенте в тёмной теме исправлен цвет текста выбранного месяца в элементе управления “Календарь”.
  389. В web-клиенте в тёмной теме исправлен цвет подсказки узла “Теги” в рабочем месте пользователя.
  390. Исправлено определение неактивных компонентов, если текущее время на сервере Redis и в приложении (веб-сервисе), которое проверяет дату последней активности компонентов, отличается.
  391. В web-клиенте исправлен баг, когда при возникновении ошибки при загрузке файлов, пользователю не показывалось сообщение об ошибке и больше нельзя было прикреплять файлы.
  392. Исправлен запуск Deski на компьютерах пользователей с установленными дистрибутивами ОС Linux, в которых используется старая версия библиотеки glibc.
  393. При обработке шаблонов файлов в формате .docx исправлена ошибка обработки табличных плейсхолдеров внутри строк таблиц, возникающая при выделении области таблицы с помощью примечания.
  394. При обработке шаблонов файлов в формате .docx исправлена ошибка замены плейсхолдеров в параграфах после сохранения файла с помощью LibreOffice.
  395. В web-клиенте исправлено сообщение в консоли браузера от библиотеки react-dropzone, предупреждающая о том, что свойство disableClick является устаревшим.
  396. Для сервиса webbi исправлена совместимость с некоторыми дистрибутивами ОС Linux, использующих старую версию библиотеки glibc.
  397. В web-клиенте исправлена ошибка, приводящая к отсутствию отображения контекстных меню при длительном нажатии в браузере Safari на iOS.
  398. Исправлено заполнение поля AssignedOnRole в истории заданий, когда в списке связанных с заданием ролей нет ни одной записи с функциональной ролью, требующей взятие задания в работу.
  399. В типе задания “Настраиваемое задание” исправлена ошибка, из-за которой варианты завершения задания могли быть доступны автору задания при определённых настройках типа задания и функциональной роли.
  400. Исправлено выполнение метода-расширения PlatformExtensions.RunWithMaxDegreeOfParallelismAsync, когда в одном из запущенных тасков выброшено исключение. Теперь метод дожидается окончания всех уже запущенных им задач Task, прежде чем выбросить исключение наружу.
  401. В desktop-клиенте исправлена работа расширения типа карточки “Переместить колонку с тегами влево”.
  402. В web-клиенте исправлена ошибка отображения контрола “Строка” в режиме ввода кода: ранее при скрытии контрола и его повторном отображении ввод текста был невозможен.
  403. В web-клиенте добавлена возможность изменять кнопки диалога редактирования строки для компонента таблицы.
  404. В web-клиенте исправлена ошибка, из-за которой в представлении, для которого настроено расширение “Таблица в представлении” и указано поле для сортировки, не отображались кнопки перемещения строк.
  405. Изменена проверка варианта завершения при завершении универсального задания, отправленного из маршрутов. Теперь вариант завершения задания сравнивается с доступными вариантами из этапа маршрута в шаблоне этапа.
  406. В web-клиенте изменен механизм отрисовки кнопок в задании, теперь при изменении массива кнопок будет происходить перерисовка.
  407. В представлении “Шаблоны этапов” исправлена ошибка фильтрации “По типу” при выполнении на СУБД PostgreSQL.
  408. В web-клиенте исправлена ошибка, возникающая при сортировке десятичных колонок таблиц и представлений: ранее, если ячейки десятичных колонок имели значение null, то при сортировке появлялась ошибка отображения пользовательского интерфейса.
  409. Добавлено понятное сообщение об ошибке, когда у плейсхолдера {fv:...} указано некорректное имя колонки.
  410. В аннотациях pdf исправлено отображение контрола с вводом текста комментария при раскрытии/скрытии панели комментариев.
  411. При обработке шаблонов файлов в формате .docx при определении таблиц с плейсхолдерами в случае, когда внутри таблицы есть другая таблица. Теперь таблицей с плейсхолдерами определяется наружная таблица, а не внутренняя.
  412. В desktop-клиенте исправлена ошибка, из-за которой в контроле с файлами отображались дубли файлов, изменённых на предыдущих циклах согласования, даже когда не использовалась группировка “По циклу согласования”.
  413. В представлении “Мои задания” в версии для СУБД PostgreSQL исправлена ошибка расчёта срока завершения задания, которая могла возникнуть при наличии нескольких календарей в системе.
  414. Исправлено определение типа устройства на сервере при открытии сессии в web-клиенте. Вместо DeviceTypes.Desktop определялся тип DeviceTypes.Other.
  415. В web-клиенте исправлена ошибка, приводившая к тому, что в json-файлах темы значения свойства margin не конвертировались из юнитов в пиксели.
  416. В карточке сотрудника на вкладке “Мои замещения” в таблице “Кто меня замещает по документам” исправлено отображение срока действия замещения.
  417. В web-клиенте исправлена невозможность вставки текста из буфера обмена в многострочные поля ввода.
  418. В web-клиенте исправлено отображение параметров фильтрации в режиме “только для чтения” в темной теме: ранее содержание параметра фильтрации имело светло-серый фон.
  419. Исправлен порядок отправки исполнителям заданий, относящихся к действию редактора бизнес-процессов “Согласование” в соответствии с порядком указанных исполнителей в списке.
  420. В web-клиенте исправлена ошибка, возникавшая при поиске в представлении, для которого определено расширение типа карточки “Таблица в представлении”.
  421. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой в свойстве IWorkflowEngineContext.Tasks содержалось некорректное значение. Ошибка воспроизводилась, например, при завершении задания “Согласование”, имеющее дочернее задание “Запрос комментария”.
  422. В маршрутах в этапе “Регистрация” исправлена ошибка, из-за которой запись в истории заданий и в листе согласования имела неверный порядок. Ошибка возникала, если регистрация выполнялась без отправки задания, и после неё выполнялся этап “Типовая задача”.
  423. В web-клиенте исправлено отображение компактной версии контрола “Обсуждения” относительно его собственной ширины, а не ширины экрана.
  424. В маршрутах исправлена ошибка, из-за которой для заместителя по типу документов неверно определялись доступные для добавления вручную этапы.
  425. В TessaAdmin при сохранении и экспорте рабочего места исправлено указание локализованного на текущий язык значения для параметра фильтрации представления в узле рабочего места, если параметр выбирался по диалогу с троеточием, а не при вводе с автодополнением.
  426. В TessaAdmin исправлена ошибка, когда при перемещении узлов в рабочих местах (drag&drop или copy/paste) из базы данных могли быть удалены права доступа (очищен список ролей) для некоторых рабочих мест, включая те, что не были изменены. Список ролей не должен быть изменён при такой операции.
  427. При изменении ролей заданий в карточках теперь не загружаются кнопки вторичных процессов и бизнес-процессов.
  428. В таблице ServerInstances колонка UseNewDeputies теперь указывается со значением по умолчанию true. Это влияет на инициализацию новой базы данных без импорта карточки “Настройки сервера”, что может быть в тестах.
  429. Из архива со сборкой удалён неактуальный скрипт Fixes/DeleteWfResolutions.ms.sql.
  430. Исправлена возможность получения клиентом некорректной метаинформации, если перезапустить его после изменения системы замещения в настройках сервера до того, как сервис web будет перезапущен.
  431. Исправлена ошибка, из-за которой при запросе файла для OCR в истории действий не записывалось имя этого файла.
  432. В web-клиенте исправлена возможная ошибка обращения к секции WfResolutions задания резолюции при открытии карточки.
  433. В web-клиенте исправлено отображение контрола “Кнопка” с включённой настройкой “Использовать всё пространство”.
  434. В web-клиенте для мобильных устройств исправлено отображение выпадающего списка со способами распознавания на панели инструментов в области предпросмотра карточки операции OCR.
  435. В мобильной версии web-клиента исправлена ошибка, приводившая к некорректному позиционированию изображений в диалоге предпросмотра.
  436. В web-клиенте исправлена ошибка, приводившая к закруглению углов области предпросмотра изображений в диалоге.
  437. При отмене операции конвертации файла посредством исключения OperationCanceledException будет выполнено удаление этой операции из базы данных.
  438. В web-клиенте исправлено отображение длинных заголовков диалогового окна в браузере Mozilla Firefox.
  439. В файлах Dockerfile и Docker/jinni/templates/*.template, связанных с разворачиванием системы в контейнерах Docker, исправлены предупреждения LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format и FromAsCasing: 'as' and 'FROM' keywords' casing do not match.
  440. В web-клиенте исправлена ошибка в контролах “Ссылка” и “Список”, из-за которой контролы не отображали результаты валидации.
  441. В web-клиенте исправлено множественное обновление представления после редактирования карточки, открытой из него.
  442. В web-клиенте исправлена ошибка некорректного отображения картинок формата webp в предварительном просмотре.
  443. Исправлена ошибка, возникавшая при экспорте карточек “Разделы справки”, если у экспортируемой карточки не было прикреплённых изображений или файлов.
  444. Исправлена ошибка, из-за которой при сохранении карточек “Правило доступа” в историю действий не записывался дайджест карточки.
  445. В web-клиенте исправлена ошибка, при которой текстовый редактор в обсуждениях уходил за границу контрола.
  446. В web-клиенте исправлено отображение кнопки разворачивания у текстового поля в режиме чтения.
  447. В web-клиенте исправлена ошибка, при которой кнопка разворачивания перекрывала остальные кнопки в правой части контрола.
  448. В web-клиенте для контрола “Выбор цвета” добавлена возможность указания прозрачности цвета вне зависимости от использования палитры.
  449. В web-клиенте исправлен выбор цвета заданий в диалоге “Мои настройки”.
  450. В web-клиенте исправлено применение цвета заданий по умолчанию.
  451. В web-клиенте в контроле “Выбор цвета” исправлен цвет, заданный в палитре по умолчанию.
  452. Исправлена ошибка механизма исключения секций из проверки валидаторами типов карточек в реализации ICardValidationLimitationManager. Из-за ошибки при маскировке всей секции целиком через расширенные настройки правила доступа валидация замаскированных полей всё равно выполнялась.
  453. В web-клиенте исправлено некорректное отображение вертикальной полосы прокрутки для таблиц при заданном расположении блоков в карточке.
  454. В конфигурационном файле app-db.json для консольной утилиты tadmin в строке подключения migration теперь указаны настройки MaxAutoPrepare=50; AutoPrepareMinUsages=20.
  455. В TessaAdmin исправлено сообщение об ошибке при попытке выполнить в отладке пустой SQL-запрос.
  456. В web-клиенте в представлениях для параметров с типом “Дата” теперь не показывается время в случае, если режим работы не указан.
  457. В web-клиенте исправлено автоматическое заполнение даты окончания действия исключения датой начала действия исключения, если дата окончания действия исключения не заполнена. Теперь дата окончания действия исключения указывается датой начала действия исключений, но со временем, установленным на конец дня. Также при выборе даты окончания исключения мышкой теперь заполняется конец дня, если дата окончания исключения до этого была не заполнена.
  458. Исправлено неверное отображение ошибки, когда даты начала и окончания действия исключений в календаре или типе календаря были указаны неверно.
  459. В web-клиенте исправлена ошибка отображения активных узлов дерева представлений на устройствах с сенсорным экраном: ранее активный узел был стилизован как узел, над которым наведен курсор.
  460. Исправлена возможная ошибка NullReferenceException в случае, если проверка прав доступа происходит для несуществующей карточки.
  461. Оптимизировано получение карточек контекстных ролей из кэша ICardContextRoleCache.
  462. В web-клиенте у контролов с возможностью указать количество строк исправлена вёрстка сообщения об ошибке.
  463. Исправлена ошибка, из-за которой не выполнялось освобождение блокировки на запись. Ошибка возникала, в случае, когда существующая блокировка на чтение была эскалирована до блокировки на запись.
  464. Добавлена валидация возвращаемого значения методов GetCardXXX в скриптах карточек маршрутов и типов условий.
  465. Исправлена возможность передать null для TabSelectedEventArgs.SelectedTab. Ранее невозможность передать null приводила к ошибке, если в контроле с вкладками скрыть все вкладки. Например, посредством расширенных правил доступа.
  466. Исправлено автоматическое освобождение блокировки на чтение при выходе из скоупа транзакции ITransactionScopeContext, когда не был явно вызван метод для её освобождения (например, это вызов ICardLockingStrategy.ReleaseReaderLockAsync для освобождения блокировки на карточку).
  467. Исправлено отображение превью страниц в аннотациях pdf.
  468. Исправлена ошибка при входе в систему с использованием двухфакторной аутентификации (2FA).
  469. В web-клиенте исправлен некорректный предпросмотр pdf документа, если документ имеет угол поворота.
  470. Исправлено отображение страниц и превью страниц в аннотациях pdf для файлов, содержащих разноформатные страницы.
  471. В серверных расширениях NumberDigestRequestExtension и CardDigestRequestExtension исправлена ошибка, из-за которой не формировался дайджест для карточки, содержащей неполные данные.
  472. В web-клиенте исправлена ошибка, из-за которой в диалоге фильтрации представлений не всегда корректно работало автодополнение для параметров с настроенным маппингом.
  473. Исправлена ошибка импорта схемы, созданной через команду tadmin SchemeCompact.
  474. В web-клиенте в карточке “Сотрудник” исправлен цвет и размер текста метки для типа входа в систему “Пользователь Windows”.
  475. В web-клиенте исправлен цвет текста контрола “Метка” с типом “Гиперссылка”.
  476. В web-клиенте исправлена ошибка, из-за которой в метке для отображения информации в представлении ViewInformationLabel не учитывались значения из свойства className.
  477. В конструкторе бизнес-процессов в действиях “Доработка” и “Задание регистрации” исправлен текст ошибки, возникающей при выполнении действия без указания исполнителя задания.
  478. Оптимизировано кэширование объектов StringBuilder посредством их получения методом StringBuilderHelper.Acquire с последующим освобождением методами-расширениями builder.Release() и builder.ToStringAndRelease().
  479. В маршрутах в этапе “Диалог” с временем жизни “Запрос” исправлена ошибка, из-за которой при завершении диалога сообщения валидации выводились два раза. Ошибка возникала, если диалог был запущен в синхронном локальном вторичном процессе.
  480. В web-клиенте для тем добавлена возможность создавать наборы иконок.
  481. В web-клиенте исправлена ошибка отображения кнопки календаря в параметрах фильтрации, которые содержат контрол времени: ранее эта кнопка была смещена к верхнему краю границы выбранного параметра фильтрации.
  482. В web-клиенте исправлена ошибка, из-за которой контролы с дефолтными настройками ширины в горизонтальном блоке не подстраивались под размер контента.
  483. В команде tadmin SchemeDiff исправлена ошибка, возникающая при сравнении схем, в которых есть различия в порядке ссылочных колонок комплексной колонки или в списке колонок индекса.
  484. В web-клиенте исправлена ошибка, приводящая к отображению групп в истории заданий, которые не содержат строк.
  485. В web-клиенте исправлена ошибка параметра фильтрации, который содержит контрол даты: ранее кнопка выбора даты в контроле с активным критерием “между” была неактивна.
  486. В web-клиенте исправлена ошибка предпросмотра PDF при включённом флаге “Постраничный предпросмотр PDF”.
  487. Исправлено заполнение дайджеста карточки в истории действий при изменении ролей заданий из desktop-клиента.
  488. В конструкторе бизнес-процессов исправлены ошибки обработки привязок, возникающие при попытке получить по привязке списки любых типов, отличных от List<object>.
  489. В глобальных диалогах, выводимых этапом или действием “Диалог”, исправлено создание тайлов.
  490. В отчётах по текущим и завершённым заданиям исправлена ошибка расчёта средней просрочки задания, которая могла возникнуть при наличии нескольких календарей в системе.
  491. В web-клиенте в аннотациях pdf исправлена точность вставки и перемещения аннотаций в зависимости от масштаба.
  492. В web-клиенте исправлена ошибка диалогового окна параметров фильтрации: ранее при изменении параметров фильтрации выбранного поискового запроса невозможно было сбросить изменения при повторном клике на выбранный поисковой запрос.
  493. В web-клиенте исправлена ошибка, из-за которой кнопка “Добавить обсуждение” отображалась, даже когда контрол работал в режиме только одного обсуждения.
  494. В desktop-клиенте исправлена ошибка, из-за которой кнопка “Добавить обсуждение” была неактивна до перехода в режим повышенных привилегий, если карточка была в состоянии, отличном от “Проект”.
  495. В web-клиенте оптимизировано сохранение карточки. Теперь при вызове сохранения карточки клиент не будет отправлять запрос на получение дайджеста с сервера.
  496. В desktop-клиенте оптимизировано сохранение новой карточки. Теперь при вызове первого сохранения карточки система не будет отправлять запрос на получение дайджеста сразу же после выполнения сохранения.
  497. В конструкторе бизнес-процессов и маршрутах оптимизировано получение дайджеста основной карточки при её сохранении после окончания обработки процесса.
  498. Исправлена работа фильтров по идентификатору сотрудника, идентификатору карточки и идентификатору типа карточки при трассировке серверов приложений.
  499. При сохранении карточек из них теперь удаляется информация о платформенных тайлах и тэгах.
  500. При сохранении карточек из них теперь удаляется информация о вторичных процессах, даже если для типа карточки не включены маршруты.
  501. В конструкторе бизнес-процессов в действии “Диалог” исправлена ошибка, из-за которой задание диалога было доступно автору.
  502. В web-клиенте исправлено некорректное позиционирование заголовка относительно крайней границы контрола.
  503. В web-клиенте исправлено позиционирование диалога заданий в компактной версии. Теперь он корректно перекрывает рабочую область.
  504. Исправлена ошибка импорта карточек вторичных процессов, из-за которой при импорте карточки затиралось описание условий в таблице условий.
  505. В web-клиенте для аннотаций pdf исправлено отображение контрола регулировки прозрачности.
  506. Исправлено возможное зависание сервера приложений в случае, если используются расширенные права доступа, запрещающие редактировать табличные секции.
  507. В web-клиенте исправлен баг, из-за которого кнопки на панели инструментов области предварительного просмотра PDF были расположены на разных уровнях.
  508. Исправлен импорт карточек, содержащих сателлит, для которого указаны файлы, ссылающиеся на несуществующее хранилище файлов.
  509. В web-клиенте исправлена ошибка, приводящая к появлению ошибки при изменении порядка столбцов в таблицах на устройствах под управлением iOS.
  510. В web-клиенте исправлен баг, из-за которого с включенной опцией “Постраничный предпросмотр PDF” не работала прокрутка.
  511. В web-клиенте исправлена ошибка параметров фильтрации, которые содержат контрол “дата и время”: ранее изменения в данных параметрах не применялись к представлению при нажатии на кнопку Enter.
  512. В представлении ProtocolCompletedTasks исправлена логика получения данных для колонки “Роль”, сама же колонка переименована в “Назначено”.
  513. В webbi исправлена проблема разбора строк подключения к Redis в формате StackExchange.Redis.
  514. Исправлена ошибка, которая возникала при импорте карточек-синглтонов, если ID импортируемой карточки отличался от ID карточки, существующей в системе.
  515. Исправлены ошибки валидации заполнения обязательных полей при сохранении кнопок в карточках “Шаблон бизнес-процесса”.
  516. Исправлены ошибки валидации заполнения обязательных полей при сохранении карточек “Виртуальный файл”.
  517. В web-клиенте исправлена ошибка, приводящая к некорректной работе анимации контекстного меню в диалоговых окнах в браузере Mozilla Firefox.
  518. В web-клиенте исправлена ошибка, возникавшая в элементе управления “Обсуждения”, из-за которой нельзя было начать обсуждение в режиме “Единственное обсуждение”.
  519. В desktop-клиенте исправлена ошибка, из-за которой могли некорректно открываться версии файлов карточек.
  520. Исправлено возможное исключение TaskCancelledException при остановке веб-сервиса (в т.ч. для гибридных тестов), в котором есть фоновые сервисы, выполняемые посредством объекта WebPeriodicService.
  521. В web-клиенте исправлена ошибка, из-за которой недоступные пользователю кнопки тулбара карточки оставались доступны через выпадающий список.
  522. Улучшена генерация RowID для строк таблицы ActionHistory. Теперь создаваемые значения учитывают свойство Modified, что положительно сказывается на вставке в таблицу и индексах, использующих колонку RowID.
  523. В методе SqlHelper.FormatParameterType при использовании СУБД MS SQL Server и maxSize = true для параметров с типом Binary и VarBinary теперь корректно указывается тип varbinary(max).
  524. Исправлен импорт карточек, содержащих сателлиты. Теперь при импорте таких карточек всегда производится импорт вложенных сателлитов, даже если в результате smart merge в основной карточке нет изменений.
  525. Исправлены регистрации зависимостей для класса ApplicationPackageBuilder и для реализаций интерфейса IApplicationPackageBinder, чтобы их использование в пределах одного DI-контейнера не могли пересекаться (актуально в т.ч. для тестов).
  526. Исправлена ошибка при исправлении условий “По типу заданий” для правил доступа при миграции с версий платформы 3.x, где колонка KrTaskTypeConditionSettings.IsAuthor из старой версии системы (флаг “Я автор”) была указана с опечаткой в расширении на исправление (и этот флаг не переносился при миграции).
  527. Исправлены возможные ошибки выполнения тестов в классе Tessa.Test.Default.Shared.GC.ExternalObjectManager из-за race conditions, возникающих в классе LiteDB.BsonMapper.
  528. В web-клиенте исправлена некорректная высота представлений на небольшой ширине экрана при скрытии дерева представлений на рабочем месте.
  529. В web-клиенте доработано применение цвета, выбранного через палитру, в контрол выбора цвета.
  530. В представлении “Мои документы” исправлена работа параметра “Тип” с условием “не равен”. Из доступных вариантов условий для параметра “Тип” исключены варианты условий “пусто” и “не пусто”.
  531. Исправлена ошибка, возникавшая при импорте библиотек локализации из файлов формата Excel, которая перезаписывала null-значения комментариев для строк локализации значениями пустой строки.
  532. Исправлено отображение обязательных к заполнению полей в типах “Тип условия” и “Раздел справки”.
  533. Исправлено отображения всплывающей подсказки для поля “Условие” в типе “Тип условия”.
  534. Добавлен отсутствовавший валидатор для обязательного к заполнению поля “Текст раздела” в типе “Раздел справки”.
  535. Исправлено состояние файла, удаляемого из корзины: вместо состояния CardFileState.None используется CardFileState.Deleted.
  536. В web-клиенте в обсуждениях (форумах) теперь корректно учитывается значение свойства Полнотекстовый поиск по сообщениям в обсуждениях из карточки Настройки сервера.
  537. В маршрутах исправлены ошибки при выполнении вторичного процесса в обработчике этапа. Подробнее см. в руководстве разработчика.
  538. В маршрутах исправлена ошибка, из-за которой сигналы KrConstants.KrCancelProcessGlobalSignal и KrConstants.KrSkipProcessGlobalSignal не обрабатывались текущим основным процессом, что приводило к выполнению этапов, следовавших за текущим. Ошибка воспроизводилась, если указанные сигналы были поставлены в очередь обработки сигналов для текущей основной карточки вторичным процессом, выполненным при обработке текущего этапа основного процесса.
  539. В маршрутах исправлена ошибка “Невозможно изменить карточку. Требуется версия N, но в действительности версия M.” при запуске вторичного процесса из обработчика этапа.
  540. В маршрутах исправлена ошибка при запуске процесса из обработчика этапа. Ошибка воспроизводилась, если текущий процесс был запущен по сигналу.
  541. В маршрутах исправлена ошибка InvalidCastException при получении значения свойства KrProcessInstance.ProcessInfo.
  542. Исправлено создание глубокой копии объекта с помощью метода StorageExtensions.DeepClone.
  543. В конструкторе бизнес-процессов исправлена ошибка, из-за которой при отправке сигнала внутри процесса (например действием “Отправить сигнал”) он мог обработаться узлом, который уже завершил своё выполнение в рамках текущей обработки процесса.
  544. В приложении-помощнике web-клиента Deski исправлена работа с буфером обмена в ОС macOS и в некоторых дистрибутивах ОС Linux.
  545. В web-клиенте исправлено скрытие окна с доступными вариантами для выбранного эмодзи при прокрутке общего списка с эмодзи.
  546. В web-клиенте исправлен результат выполнения метода ValidationResultItem.toString, если для объекта задан ключ в поле ValidationResultItem.key, отличный от ValidationKey.unknown.
  547. В web-клиенте исправлено сворачивание/разворачивание горизонтального блока при клике по заголовку.
  548. В web-клиенте исправлена ошибка отображения кнопки задач в карточках в тёмной теме для мобильной версии приложения: ранее цвет кнопки сливался с ее фоном.
  549. В web-клиенте в компактном режиме исправлено отображение элементов в тулбаре представления.
  550. По умолчанию имя файла на диске (без части с путём), создаваемого во временной папке при использовании API файлов и объектов IFileContainer/ICardFileContainer, установлена равной 100 символам, что исправило ошибки для файловых систем, имеющих ограничение на длину полного пути (например, некоторые конфигурации с ОС Linux и файловой системой Ext3). Ранее длина ограничивалась только при использовании в desktop-клиенте, теперь это также затрагивает серверные компоненты, тесты, консольные команды и др. Ограничения можно снять, указав значение свойства IFileContentOptions.MaxFileNameLength = 0.
  551. Исправлено именование файлов, предлагаемых по умолчанию в desktop-клиентах в их диалогах “Сохранить как”. Теперь имена не превышают 100 символов (в соответствии с настройкой MaxFileContentNameLength), что актуально для ОС Windows, в которых не включена поддержка длинных путей файлов.
  552. В web-клиенте исправлено отображение индикации фокуса в файловом контроле.
  553. В ОС Linux исправлена обработка запроса на распознавание текста в файле с опцией “Выполнять предобработку страницы изображения перед распознаванием”, когда для изображения требовалось масштабирование для улучшения качества распознавания.
  554. Исправлено усечение имени файла при сохранении в базу данных, если длина имени с расширением превышает длину строковой колонки в базе данных (256 символов). Теперь усекается часть имени файла перед расширением, а расширение остаётся неизменным.
  555. В desktop-клиенте при переименовании файла ограничена максимально вводимая длина имени в 250 символов.
  556. В web-клиенте в контроле “Календарь” исправлено отображение окна с выбором даты, которое появляется при нажатии на кнопку, если у этой кнопки была изменена видимость.
  557. В web-клиенте исправлено отображение кнопок для очистки значения параметра фильтрации при использовании критерия “Между”.
  558. В web-клиенте заменена подложка с фоновым цветом на прозрачный в диалогах “Режим отображения” и “Создание временной ссылки на скачивание файла/версии”.
  559. В веб-сервисе исправлен сброс кэша типов документов при изменении карточки настроек типового решения в случае, если используются несколько рабочих процессов.
  560. Оптимизированы проверки на вхождение карточек в типовое решение.
  561. В web-клиенте исправлен баг, из-за которого при переходе в карточку задачи в компактном режиме не скрывалась кнопка переключения между областью заданий и областью карточки.
  562. Исправлена ошибка, из-за которой доступные тайлы шаблонов бизнес-процессов не исчезали с боковой панели карточки после её обновления в ситуации, когда в расширениях на загрузку карточки был удалён ключ со списком тайлов для отображения.
  563. В web-клиенте для аннотаций pdf исправлена работа с изменением размера добавленных картинок.
  564. Исправлена ошибка отключения заместителей при окончании срока замещения.
  565. В web-клиенте исправлена ошибка, приводившая к сбоям при расчете высоты текстовых контролов, если для них был задан пользовательский размер шрифта.
  566. В web-клиенте для аннотаций pdf исправлено положение рамки выделения.
  567. В web-клиенте исправлена ошибка, приводившая к отображению некорректного фона для контрола “Текст с форматированием” в режиме “только для чтения”.
  568. Исправлена ошибка распределения файлов по циклам согласования, из-за которой файлы, добавленные при выполнении типовой задачи, не попадали в правильную группу.
  569. В web-клиенте исправлена ошибка отображения валидации контролов, содержащих текстовое поле ввода: теперь валидация осуществляется при каждой потере фокуса контрола.
  570. Исправлена ошибка работы с доверенными сертификатами при подписи для пользователей без прав администратора.
  571. Оптимизировано определение доступа пользователя к представлениям.
  572. В web-клиенте исправлена обработка кнопок в диалогах, созданных из действия “Диалог” конструктора бизнес-процессов, если была включена настройка “Без отправки задания”.
  573. Исправлено выравнивание контролов в типах карточек FileTemplate, KrStageTemplate, KrSecondaryProcess, KrStageGroup и KrTemplateCard.
  574. В web-клиенте исправлена ошибка отображения контейнера содержимого вкладки карточки: ранее, при определенных масштабах окна браузера, могла обрезаться часть содержимого контролов в нижней части контейнера.
  575. Исправлена ошибка проверки расширенных настроек доступа к файлу, которая возникала, если расширение файла содержало заглавные буквы.
  576. В web-клиенте исправлено отображение превью файла при нажатии на строку контрола представления в режиме списка файлов и при отмене выбора.
  577. В web-клиенте исправлен автоматический расчёт ширины диалога по добавлению этапа в маршрут.
  578. В конструкторе бизнес-процессов исправлена ошибка выгрузки скриптов в файловую систему.
  579. Для электронных подписей исправлен механизм получения цепочки сертификатов, который приводил к предупреждениям в серверном логе.
  580. В web-клиенте в маршрутах исправлено форматирование параметров этапов: “Ветвление”, “Диалог”, “Ознакомление”, “Регистрация”, “Создание карточки”, “Типовая задача”, “Управление ветвлением”, “Управление историей”, “Управление процессом”.
  581. Оптимизирована миграция базы данных при использовании команды tadmin MigrateDatabase.
  582. Исправлена ошибка неправильного вычисления группы истории заданий. Ошибка воспроизводилась, если история заданий содержала группу заданного типа, но её родительская группа отличалась от используемой для текущей группы.
  583. Исправлено определение невалидных символов в именах файлов и путей на ОС Linux, чтобы они соответствовали значениям на ОС Windows для их замены в формируемых платформой именах файлов и путей (в т.ч. для консистентности в ситуациях, когда сервер расположен на ОС Linux, а клиент - на ОС Windows). Это могло приводить к ошибкам при скачивании файлов вида: ArgumentException: The format of value 'File "name".txt' is invalid.
  584. В конструкторе бизнес-процессов исправлена ошибка, из-за которой процесс переходил в некорректное состояние, если в момент асинхронной обработки процесса останавливали плагин асинхронной обработки WorkflowEngineAsyncPlugin.
  585. В контроле “Представление” исправлено обновление данных в области, выводящей текущие установленные параметры фильтрации при нажатии на кнопку “Обновить”.
  586. В web-клиенте исправлена ошибка отображения изображения фона в диалоговом окне “Фон и тема”: ранее изображение не адаптировалось к разрешению экрана и могло обрезаться на маленьких разрешениях.
  587. В web-клиенте исправлен подсчёт символов во время редактирования сообщения в обсуждениях.
  588. В web-клиенте исправлен баг, когда при вставке через буфер обмена переименованного файла сохранялось предыдущее название.
  589. В команде tadmin Compile передаваемые категории теперь проверяются без учёта регистра.
  590. В web-клиенте исправлена ошибка получения контента файла из Deski, если до этого сохранение карточки было прервано и файл открывался для чтения или редактирования.
  591. В web-клиенте в маршрутах в параметрах этапа “Управление процессом” исправлена ошибка, из-за которой в режиме “Переход на этап” не отображалось поле “Строка с этапом”.
  592. В web-клиенте исправлена ошибка, из-за которой список обсуждений не обновлялся при создании нового обсуждения.
  593. В web-клиенте было улучшено определение жеста открытия контекстного меню файла в файловом контроле.
  594. В типовом процессе исполнения задач, маршрутах и конструкторе бизнес-процессов в этапах и действиях “Согласование”, “Подписание”, “Доработка”, “Ознакомление” и “Создать файл по шаблону” исправлены ошибки, из-за которых не выполнялась локализация параметров, заданных в виде алиаса строки локализации ($LocalizableName).
  595. В web-клиенте исправлено изменение высоты компонента файла, если он находится в процессе выполнения операции, например, при подписании файла.
  596. В web-клиенте исправлена ошибка отображения области предпросмотра: ранее в тёмной теме фон области предпросмотра сливался с фоном хром-панели этой области.
  597. В web-клиенте исправлено отображение фона строки таблицы при наведении.
  598. В маршрутах исправлена ошибка, из-за которой нельзя было создать несколько дескрипторов типов этапов, использующих одинаковый тип карточки настроек.
  599. В web-клиенте для внутренних переменных тем добавлена поддержка юнитов.
  600. В web-клиенте больше нельзя указывать прозрачность в цветах во внутренних переменных темах.
  601. В web-клиенте для объекта ThemeBuilder реализована возможность добавить произвольный фрагмент к уже собранной теме.
  602. Исправлена ошибка, из-за которой в списке участников обсуждения могли дублироваться пользователи.
  603. В web-клиенте исправлена ошибка, из-за которой в диалоге списка версий файлов могло отображаться два контекстных меню одновременно.
  604. В TessaAdmin для свойства Максимум строк контрола Строка исправлена локализация всплывающей подсказки валидации.
  605. Для веб-сервиса jinni при его развёртывании в среде Docker исправлена установка актуальной версии LibreOffice.
  606. Для веб-сервиса jinni при его развёртывании в среде Docker оптимизирован Dockerfile и шаблоны для его генерации.
  607. При установке Configuration.Sealed или Configuration.StrictSecurity равным true в конфигурационном файле app.json веб-сервиса web, поля, связанные со скриптами в маршрутах, теперь корректно помечаются как неизменяемые.
  608. В web-клиенте исправлена работа вертикальной прокрутки контрола “Контейнер” c включенной настройкой “Включить прокрутку”.
  609. В web-клиенте для контрола “Дата и время” исправлены стили выделения текущей даты в календаре в темной теме.
  610. Исправлена ошибка конвертации файлов в pdf с указанием jwt-токена при использовании OnlyOffice/Р7 для конвертации.
  611. В web-клиенте исправлена утечка памяти в контроле “Текст с форматированием”.
  612. В ежедневной рассылке уведомлений по заданиям исправлена ошибка, приводившая к тому, что в уведомлении учитывались задания, в состав исполнителей которых входит текущий сотрудник, но задания были взяты в работу другим сотрудником.
  613. В конструкторе бизнес-процессов в действии “Группа заданий” исправлено отображение заголовков связей в поле “Переходы” в настройках обработки вариантов завершения заданий.
  614. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой действия не отправляли сигналы завершения после удаления заданий по сигналу DeleteTask.
  615. В конструкторе бизнес-процессов в параметрах действия “Согласование” исправлена ошибка, из-за которой некорректно автоматически изменялось значение поля “Вид” после изменения состояния флага “Рекомендательное согласование”.
  616. Исправлено создание защищённых токенов доступа к содержимому системы IContentTokenRepository. В некоторых случаях при сохранении защищённых токенов СУБД округляла поля, содержащие дату и время, что приводило к недействительности выданного токена.
  617. В web-клиенте в диалоге фильтрации представлений убрано отображение кнопок контролов в режиме только для чтения.
  618. В web-клиенте поля minDate, maxDate, beginDate, highlightBeginDate в DateTimeViewModel теперь реактивные.
  619. В конструкторе бизнес-процессов исправлены ошибки обработки привязок с типами “Карточка” и “Задание”. Ошибки возникали при получении значения ссылочного поля строковой секции при обработке привязки для списка значений, например, параметр “Роли” в действии “Группа заданий”.
  620. В конструкторе бизнес-процессов исправлена ошибка, из-за которой при настройке привязки типа “Представление” нельзя было выбрать “Параметр для ID карточки” с типом Guid Null.
  621. Исправлена ошибка, из-за которой не работала сортировка кнопок бизнес-процессов на тулбаре карточек.
  622. В web-клиенте исправлено выделение текста при выборе диапазона строк при помощи Shift в контроле представления.
  623. В конструкторе бизнес-процессов исправлена ошибка “System.InvalidOperationException: GetCardAsync method called outside of scope.” при отправке почтовых уведомлений.
  624. В web-клиенте в примере расширения 21_forumUIExtension исправлено добавление кнопки и дублирование пунктов контекстного меню.
  625. Время жизни токена, выписываемого для отображаемых пользователю аватаров, увеличено с 1 дня до времени жизни сессии (по умолчанию 7 дней).
  626. В API тестов исправлена ошибка в методе KrTestHelper.GetWorkflowProcessAsync, из-за которой неправильно загружался идентификатор процесса.
  627. В web-клиенте исправлена ошибка, из-за которой периодические запросы на сервер продолжали отправляться при невалидной сессии.
  628. Исправлена десериализация строк в json со стороны .NET, если строки содержат значения в ISO-формате даты вида yyyy-MM-ddTHH:mm:ssZ. Библиотека Newtonsoft.Json, используемая для сериализации json, трактовала такую строку как объект DateTime (например, в строковом поле карточки section.Fields["Name"] содержался бы объект типа DateTime, а не string). Теперь строковые значения всегда десериализуются как строки, независимо от содержимого, а десериализация DateTime возможна только с суффиксом ::dtm в имени ключа для Typed Json.
  629. Исправлен метод TessaSerializer.CreateTyped(Action<JsonSerializerSettings>). Теперь он создаёт сериализатор с конвертером TypedJsonConverter до того, как будет вызван делегат в параметре. Если конвертер должен быть добавлен вручную внутри делегата, то следует вызвать аналогичный метод Create.
  630. В web-клиенте исправлено отображение фона строк у таблиц в компактной версии.
  631. Для подписей ЭП атрибут “Время подписи” выставляется в UTC.
  632. Исправлены предупреждения в консольном выводе веб-сервисов вида “HTTP/2 requires TLS application protocol negotiation” и “HTTP/3 requires TLS” при прослушивании портов по HTTP (без HTTPS).
  633. В web-клиенте исправлена ошибка, из-за которой выпадающий список мог перекрывать поле ввода в контроле “Ссылка”.
  634. В web-клиенте исправлена консольная ошибка несоответствия MIME-типов при открытии диалогового окна выбора файлов.
  635. Исправлена документация по генерации тестовых сертификатов.
  636. В web-клиенте в системе обсуждений больше не показываются кнопки “Подписаться” и “Выйти из участников” в неактуальных служебных сообщениях.
  637. В web-клиенте в системе обсуждений у кнопки “Подписаться” в выпадающем меню обсуждения исправлено обновление статуса подписки.
  638. При использовании свойства CardStoreRequest.ForceTransaction веб-сервис web теперь возвращает ошибку в случае, если запрос пришёл с клиентского приложения.
  639. В web-клиенте исправлено применение срока доступа временной ссылки на файл при её создании. Раньше всегда применялся период, указанный в карточке настроек сервера в поле Максимальный период действия ссылки на файл (дней).
  640. В web-клиенте исправлено отображение пунктов контекстного меню у приложенных файлов для контрола “Текст с форматированием”.
  641. В web-клиенте исправлено отображение всплывающих окон при прокрутке.
  642. В web-клиенте в системе обсуждений убрано отображение сообщения об ошибке при выходе из обсуждения.
  643. В web-клиенте для тёплой темы исправлен фон некоторых кнопок при наведении.
  644. В web-клиенте исправлена ошибка, приводившая к невозможности задать полностью прозрачный фон для контрола “Метка”.
  645. В web-клиенте исправлено выравнивание надписи с отображением количества строк в некоторых представлениях.
  646. В web-клиенте исправлена ошибка, связанная с некорректным отображением тайлов в браузере Firefox.
  647. Модифицирован алгоритм работы IBackgroundServiceQueue таким образом, чтобы при штатной остановке веб-сервисов запланированные задачи могли быть выполнен. Ранее очередь просто прерывалась, и задачи не выполнялись.
  648. В web-клиенте исправлена ошибка, из-за которой в расширении на узел рабочего места InformationLabelViewExtension в некоторых случаях некорректно рассчитывалась видимость метки.
  649. Исправлена ошибка, из-за которой при выборе категорий файлов в контроле “Список файлов”, когда отсутствует флаг “Сохранять порядок категорий”, эти категории могли быть отсортированы не по алфавиту.
  650. В web-клиенте оптимизировано взаимодействие между клиентом и сервером при подписании файлов.
  651. В web-клиенте файлы теперь не загружаются полностью в память, а принимаются потоком. Процесс скачивания при этом контролируется браузером.
  652. В web-клиенте исправлена ошибка отображения контролов “Представление” в области заданий: ранее цвета, используемые в представлениях, не соответствовали цветовой гамме выбранной темы.
  653. В шаблонах файлов Word для выделенной табличной области, лежащей внутри параграфа, исправлено определение табличных плейсхолдеров в случае, когда к данному параграфу были привязаны элементы, обтекаемые текстом или лежащие перед/за ним (надписи, картинки и т.д.).
  654. В TessaAdmin при сохранении локализации исправлено отображение ошибок.
  655. В web-клиенте исправлена ошибка, связанная с некорректным расчётом позиции всплывающих окон.
  656. Исправлена ошибка “An item with the same key has already been added”, отображаемая при попытке добавить существующий заголовок в методе ClientResponseExecutor.ResponseAsync.
  657. В web-клиенте MessageBox теперь корректно обрабатывает текст и обеспечивает правильное отображение обычного текста или HTML-разметки.
  658. Исправлено возвращаемое имя версии файла при доступе к ней по временной ссылке. Ранее в качестве имени версии устанавливалось текущее актуальное имя файла.
  659. В web-клиенте в контроле “Текст с форматированием” исправлена ошибка добавления картинок.
  660. Исправлена ошибка, приводившая к лишней проверке доступа на изменение связанных с заданием ролей.
  661. Доработан CardTaskAccessProvider так, чтобы запрос проверки прав на изменение связанных с заданием ролей не вызывался повторно, если он уже был вызван в рамках текущей проверки.
  662. В web-клиенте исправлена ошибка, из-за которой к контролу “Флажок” не применялись настройки текста.
  663. Исправлена ошибка “Sequence contains no matching element” при заполнении кэша виртуальных файлов.
  664. В web-клиенте исправлена ошибка, связанная с некорректным переносом строк в контроле “Текст с форматированием”.
  665. В desktop-клиенте для контролов “Флажок”, “Кнопка” и “Дата и время” исправлено применение настроек оформления текста “Подчёркнутый” и “Зачёркнутый”.
  666. В плагине расчёта заместителей исправлена ошибка, из-за которой заместитель с указанным периодом замещения не добавлялся в роль в первый день замещения.
  667. Исправлена ошибка, из-за которой тестовое представление “Генератор” (TransientView) могло некорректно отображаться в web-клиенте.
  668. Исправлена ошибка, из-за которой для настроек расширенных правил доступа “Допустимое количество файлов” и “Обязательный файл” учитывались виртуальные файлы карточки.
  669. Исправлена ошибка при сохранении схемы в базу данных, когда добавляется первая запись в таблицу-перечисление с указанием другой библиотеки, чем та, что задана у таблицы.
  670. Исправлена ошибка при сохранении схемы в базу данных, когда в таблице-перечислении присутствуют записи со значениями NULL.
  671. При взятии блокировки карточки на запись не проверяется её версия, если этого не требуется.
  672. Исправлен вывод представления “Задания от меня” при фильтрации по типу карточки, в котором отсутствует секция DocumentCommonInfo.
  673. Исправлен вывод колонки “Тип” для представлений в папке “Завершённые задания”, где задания были завершены по карточкам, тип которых используется без типов документов.
  674. Оптимизировано хранение данных в служебных таблицах посредством справочников нормализации: ActionHistory, Instances, Files, FileVersions, DeletedFiles, DeletedFileVersions.
  675. Оптимизирован размер и улучшена читаемость метаинформации представлений.
  676. В web-клиенте исправлена ошибка в контроле выбора цвета, из-за которой невозможно было указать цвет через поля ввода “hex” и “rgb”.
  677. В web-клиенте исправлена ошибка в диалоге редактирования тегов, из-за которой в контроле выбора цвета неправильно обрабатывались цвета с нулевой прозрачностью.
  678. В web-клиенте исправлена ошибка, связанная с некорректным переносом текста в поле с автодополнением.
  679. В web-клиенте исправлена ошибка предварительного просмотра SVG изображений в браузере Firefox.
  680. В web-клиенте исправлен фон некоторых диалоговых окон в тёплой теме.
  681. В web-клиенте в маршрутах в этапе “Подписание” исправлена ошибка “Cannot read properties of null (reading ‘id’)” при отображении заместителем исполнителя задания скрытых по умолчанию действий.
  682. Исправлено выполнение клиентских тестов, если метод ClientTestBase.OpenSessionAsync был вызван в одном из тестов, после чего упал с ошибкой (например, некорректный пароль).
  683. Исправлена ошибка дублирования using и using static при компиляции скриптов системы.
  684. При обработке плейсхолдеров {tv:...} и {fv:...} при передаче в плейсхолдер в качестве параметра значения с типом bool теперь используется критерий IsTrue или IsFalse, в зависимости от значения параметра.
  685. Исправлено проблема, когда при наличии ошибки в файле схемы в сообщении об этой ошибке отображалось имя другого файла.
  686. В web-клиенте исправлена ошибка, из-за которой заголовки представлений в рабочих местах не соответствовали названиям узлов в рабочих местах.
  687. В web-клиенте исправлена ошибка делавшая невозможным применение настроек шрифта к элементам управления.
  688. В web-клиенте из нижней панели диаграмм убраны компоненты пейджинга и подсчета количества строк.
  689. В обработчике бизнес-процессов исправлена ошибка, возникавшая при сохранении результата обработки экземпляра процесса в карточку “Ошибка” в ситуации, когда обработчику не удалось взять блокировку на экземпляр процесса.
  690. Исправлена ошибка “The given key ‘TypeID’ was not present in the dictionary”, которая в некоторых случаях предотвращала запись в историю действий о неуспешном открытии карточки.
  691. В web-клиенте исправлена ошибка, из-за которой кнопка “Отмена” при создании карточки в диалоговом окне не вызывала диалоговое окно с подтверждением действия.
  692. Исправлена ошибка, из-за которой в типе условия “Изменение поля” можно было выбрать комплексную колонку.
  693. В web-клиенте исправлена ошибка отображения кнопок файлового контрола: ранее кнопки могли не отображаться при его инициализации.
  694. Исправлена ошибка “Токен подписан неверно” при валидации токена прав доступа, возникающая при чтении некоторых свойств расширенных настроек прав доступа до выполнения валидации. Это могло возникнуть при обращении к свойствам токена на клиенте или при повторной валидации токена на сервере.
  695. В web-клиенте исправлено применение списка доступных расширений файлов для файлового контрола.
  696. В web-клиенте исправлена ошибка отображения выбранных файлов через группы файловых контролов: ранее в области предпросмотра отображались файлы только из первой выбранной группы.
  697. В web-клиенте исправлена ошибка, при которой выпадающий список из тулбара появляется в левом углу окна.
  698. В web-клиенте исправлена ошибка “Отсутствуют доступные категории файлов.”, возникавшая при попытке сменить категорию файла, добавленного другим пользователем.
  699. В desktop-клиенте в типе карточек “Правило доступа” исправлена ошибка, из-за которой в контроле “Роли” не локализовывались значения ролей, содержащих в своём имени строку локализации.
  700. В web-клиенте исправлено появление полосы прокрутки в окне браузера после нажатия на кнопку “Загрузить файлы” в файловом контроле.
  701. Для сервиса monitor исправлено логирование. По умолчанию логи записываются в файл log.txt по аналогии с другими сервисами.
  702. В web-клиенте исправлена прокрутка диалога “О программе” на мобильных устройствах.
  703. Оптимизирована работа представлений “Активные бизнес-процессы” и “Процессы с ошибками” для СУБД PostgreSQL.
  704. В web-клиенте исправлено сохранение параметров фильтрации при открытии представления в новой вкладке.
  705. В web-клиенте исправлено сохранение параметров фильтрации при добавлении сохраненного запроса к узлу.
  706. В web-клиенте предотвращено выделение названий элементов дерева рабочего места и файлов в файловом контроле при вызове контекстного меню.
  707. В модуле синхронизации с AD/LDAP исправлена ручная синхронизация подразделений, статических ролей и пользователей. Теперь объекты скрываются и блокируются в случае, если они отсутствуют в AD/LDAP.
  708. В web-клиенте увеличено число строк у полей “Сообщение” и “Подробно” в диалоге ошибки.
  709. Исправлена ошибка, позволявшая администратору изменять схему данных при установленном в app.json флаге Configuration.Sealed.
  710. В web-клиенте добавлено ограничение на использование расширений загружаемых фоновых изображений. Список поддерживаемых расширений: png, jpg, jpeg и webp.
  711. В web-клиенте убран отступ у контрола флажка в режиме только для чтения.
  712. Для трассировки сервисов web добавлено ограничение на хранимую в памяти трассировку в случае, если сервис monitor недоступен.
  713. Исправлена обработка счётчиков на основе UpDownCounter для сервиса web.
  714. В сервисе monitor исправлена обработка счётчиков, содержащих метки с неподдерживаемыми символами.
  715. В сервисе monitor исправлено зависание в случае, если при обработке запроса произошла ошибка.
  716. В сервисе web исправлена обработка новых публичных ключей discovery при их добавлении в папку на диске в случае, если сервис уже запущен.
  717. Для команды tadmin GenerateDiscoveryKey исправлено обращение к Redis в случае, если используется режим Generate.
  718. В сервисе web исправлена включение трассировки TracingMiddleware в случае, если использовались группировки Web или *.
  719. В web-клиенте исправлена ошибка, из-за которой нажатие клавиши Enter в диалоге выбора эмодзи приводило к ошибке.
  720. В web-клиенте добавлены строки локализации для заголовков представлений “Текущие задания”, “Завершённые задания”, “Просроченные задания”.
  721. Исправлена ошибка починки типов условий в ситуации, когда при починке карточек с условиями одна из запланированных для исправления карточек была удалена.
  722. При взятии блокировок на объекты при помощи IObjectTransactionLockingStrategy добавлен учёт префикса объекта.
  723. В web-клиенте исправлен баг, который возникал при просмотре больших файлов PDF.
  724. В конструкторе бизнес-процессов исправлена ошибка, из-за которой в режиме последовательной отправки заданий после удаления очередного задания следующее задание не отправлялось.
  725. В объектах CardTask и CardTaskSessionRole для web-клиента исправлены имена ключей, по которым происходило обращение к хранилищу объекта для получения его свойств.
  726. Убрана лишняя проверка на наличие изменённого поля NeedRebuild в секции KrApprovalCommonInfoVirtual во время проверок прав доступа в типовом решении.
  727. В TessaAdmin исправлено открытие типа карточки “Сотрудник” на предпросмотр с расширениями.
  728. В web-клиенте исправлена ошибка для контрола “Флажок”, из-за которой при изменении масштаба окна браузера его внешняя обводка могла соприкасаться с границей элемента.
  729. В web-клиенте исправлена ошибка, позволявшая вставку текста в текстовые контролы в карточке сверх ограничения по длине.
  730. В web-клиенте исправлена ошибка применения выбранного цвета в редакторе аннотаций к файлам.
  731. В маршрутах исправлена ошибка, из-за которой в IKrScope могла содержаться неактуальная версия карточки. Ошибка, например, возникала, если карточка изменялась в процессе Workflow Engine, после чего при сохранении выполнялся вторичный процесс и тоже вносил изменения.
  732. Исправлена ошибка, из-за которой при импорте карточек поверх уже существующих могли создаваться лишние запросы к серверу на сохранение карточки.
  733. При асинхронной обработке процессов Workflow Engine с блокировкой исправлена потенциальная возможность возникновения deadlock-а при одновременной синхронной и асинхронной обработке процесса. Теперь для начала обработки процесса берется блокировка на запись карточки, к которой относится процесс.
  734. В web-клиенте исправлена ошибка, приводившая к невозможности присвоить пользовательское имя класса выпадающему меню скрытых элементов тулбара в режиме spread.
  735. Исправлено возможное зависание сервиса web в случае изменения типов карточек во время обработки других запросов.
  736. В web-клиенте исправлена ошибка применения сохраненного поискового запроса со ссылочным параметром логического типа boolean.
  737. Исправлена ошибка в типе условия “По типу задания”. Теперь флаг “Взято в работу” не учитывается для заданий, которые автоматически берутся в работу.
  738. В web-клиенте исправлена ошибка, в результате которой при вставке скопированных данных из ячейки представления с типом Guid добавлялся нулевой пробел.
  739. Исправлено отображение названий для параметров фильтрации представлений, в метаинформации которых поле Caption либо не задано (тогда выводится алиас), либо является пустой/пробельной строкой после применения локализации (также выводится алиас), либо содержит плейсхолдеры локализации {$Localization_Alias} (теперь они применяются).
  740. В web-клиенте в типе карточки “Сотрудник” исправлена ситуация, когда при появлении метки сдвигалось поле ввода пароля.
  741. В конструкторе бизнес-процессов исправлена ошибка, из-за которой вложенная обработка процесса Workflow Engine, запущенная в рамках сохранения вложенной карточки, повторно сохраняла тот же самый экземпляр карточки.
  742. Плагин автоматического согласования теперь записывает в лог ошибки, возникшие при завершении задания.
  743. В web-клиенте исправлена ошибка из-за которой при инициализации контрола “Строка” отображалось некорректное количество строк.
  744. Запись в истории действий по созданию или изменению представления теперь имеет тип “Изменение представления” (ранее использовался тип “Создание представление” для любых изменений). Запись по созданию или изменению рабочего места теперь имеет тип “Изменение рабочего места” (ранее использовался тип “Создание рабочего места” для любых изменений). Для существующих записей в истории тип действия переименован, все записи сохранены.
  745. В web-клиенте для элемента управления “Выбор цвета” исправлена ошибка, возникавшая при нажатии на кнопку выбора цвета если в поле ввода было значение отличное от цвета в формате #AARRGGBB.
  746. В web-клиенте в диалоге проверки отзыва сертификата ЭП OCSP и CRL исправлен заголовок для идентификатора алгоритма подписи.
  747. В представлениях исправлена ошибка компиляции при использовании классов, принадлежащих библиотеке System (например, System.Environment), в C# выражениях.
  748. В web-клиенте исправлена ошибка отсутствия валидации текстовых параметров фильтрации, содержащих уникальные идентификаторы.
  749. В редакторе схемы данных в индексах свойство Разреженный теперь неизменяемое в случае, если не заполнено свойство Степень заполнения.
  750. Расширение UniversalSatelliteGetFileContentExtension не будет выполнять запрос на получение типа карточки сателлита.
  751. Исправлена ошибка при распределении файлов по циклам согласования. Ошибка возникала, если в истории заданий содержались элементы с неизвестной датой завершения в разных циклах согласования.
  752. Исправлено отображение ролей комментаторов в таблице “Комментарии” в заданиях “Согласование” и “Подписание”.
  753. В web-клиенте исправлено открытие выпадающего списка у контрола “Ссылка” по нажатию стрелок вверх/вниз с клавиатуры.
  754. Исправлена ошибка, приводящая к некорректному отображению локализации в диалоговом окне “Правило уведомления”.
  755. Добавлены валидаторы для полей “Начальный множитель”, “Конечный множитель” и “Шаг множителя” в карточке “Потоковый ввод документов”.
  756. Веб-сервис jinni теперь сообщает в систему Discovery код сервера ServerCode, если он обслуживает единственный экземпляр сервера. В этом случае он будет отображаться в Redis Explorer в группе этого кода сервера вместе с прочими компонентами.
  757. В web-клиенте в тёмной теме улучшена контрастность выпадающих списков за счёт обновленного значения стиля тени.
  758. В уведомлении “Рассылка о заданиях” исправлена ошибка, из-за которой дата автоматического согласования выводилась некорректно.
  759. В web-клиенте исправлен баг: при открытии больших PDF файлов происходило зависание предварительного просмотра.
  760. Исправлена ошибка сохранения изменений функциональных ролей задания, возникающая в ситуации, когда в списке ролей присутствовала удалённая из системы роль.
  761. В веб-сервисе jinni исправлена ошибка, связанная с устаревшим пакетом distutils, которая возникала в процессе конвертации файла в pdf.

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

  1. Обновлена документация по поддерживаемым версиям дистрибутивов ОС Linux. Добавлена поддержка дистрибутивов РЕД ОС 8, Rocky Linux 9.3, Ubuntu 24.04. Прекращена поддержка Альт Сервер / Альт Рабочая станция 10.1, AlterOS 7.5, Astra Linux Special Edition 1.6, Astra Linux Common Edition, CentOS, Debian 10, Fedora, Linux Mint, SUSE Linux Enterprise 12, Ubuntu 23.04, 23.10, 20.04. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в разделе документации Системные требования для серверов Linux.
  2. На сервере приложений на ОС Windows для использования совместно с IIS теперь требуется установленный пакет .NET Runtime & Hosting Bundle последней доступной версии 8.0.x; допустимо использовать компоненты версий 9.0.x. Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet/8.0.
  3. Все типы .jtype в сборке изменены, в них увеличена версия JSON-формата и исправлены настройки контролов и блоков. Типы, содержащие только такие изменения, не были перечислены как изменённые. Для сравнения изменённых типов с актуальными в проектном репозитории предварительно вызовите команду tadmin ConvertConfiguration, а затем команду tadmin Script TypeSettingsFix -pp:source=PATH, где PATH - путь к папке с конфигурацией в репозитории. При обновлении решения все типы из проектного репозитория должны быть исправлены вызовом этих команд перед импортом.
  4. Перед обновлением схемы выполните скрипт Fixes/Migration-4.1-pre.**.sql. Затем обновите схему данных, а после обновления - выполните скрипт Fixes/Migration-4.1.**.sql. Версия скрипта “ms” или “pg” для соответствующей СУБД. Скрипты для PostgreSQL выполняйте посредством команды tadmin Sql ИмяСкрипта, не используйте psql. Мы рекомендуем выполнить автоматизированное обновление Upgrade.bat/upgrade.sh, где не потребуется выполнять вызовы команд вручную.
  5. В карточке настроек календаря изменены даты начала и окончания расчёта. Измените и пересчитайте календарь при обновлении, если срок его окончания подходит к концу.
  6. Приложение-помощник web-клиента Deski обновлено до версии 2.3.0. Опубликуйте новые версии приложения при обновлении. При использовании функций, связанных с Deski, пользователю будет предложено обновить его версию на опубликованную. Также обновление может выполнить администратор системы, установив msi-пакет для Windows через доменные политики, а для Linux воспользовавшись инструкцией Установка ассистента web-клиента Deski.
  7. После обновления платформы выполните компиляцию всех скриптов в базе данных. Для этого вызовите консольную команду tadmin Compile с указанием адреса подключения к серверу приложений и параметров входа. Например, tadmin Compile -a:server_address -u:admin -p:admin.
  8. Во всех представлениях изменены метаданные колонок. В них добавлено поле InvisibleByDefault, с помощью которого можно указать, что в пользовательском интерфейсе колонка должна быть скрыта по умолчанию, но её видимостью можно управлять через пользовательские настройки представлений (по умолчанию колонки видны). Существующие в базе данных представления продолжат работать, а также их можно импортировать без поля InvisibleByDefault, которое считается в этом случае равным false.
  9. Перевыгружено большинство карточек .jcard, в которых актуализирована структура в соответствии с текущей схемой. Такие изменения выполняются при импорте автоматически, поэтому являются необязательными, и не перечислены в списке объектов.
  10. Ссылки на файлы /links теперь по умолчанию отображают страницу с ошибкой в браузере. Укажите параметр &showErrorPage=false, чтобы вместо этого сервер возвращал json-объект ValidationResult.
  11. Доработаны действия редактора бизнес-процессов “Задание”, “Группа заданий”, “Универсальное задание и “Управление заданием”. Теперь эти действия поддерживают настройку связанных с заданием ролей через интерфейс. Необходимо выполнить обновления версий действий бизнес-процессов, содержащих данные действия. Сделать это можно посредством команды tadmin UpgradeWorkflowProcesses, либо эта команда будет вызвана во время автоматизированного обновления через Upgrade.bat/upgrade.sh. Также в этих действиях были упразднены поля “Автор” и “Роль”. Поэтому после обновления версий действий в бизнес-процессах надо проверить скрипты данных типов действий на обращение к полям RoleID, RoleName, AuthorID, AuthorName и заменить их на работу с секцией действия WeTaskActionTaskRoles.
  12. Если любые используемые вами конфигурационные файлы app.json содержали символ % в строковых значениях (например, в паролях или в строках подключения к базам данных), то необходимо его задублировать %% для корректной обработки (т.е. выполнить эскейпинг).
  13. Для переопределения пути к файлу .cid, который используется в подсистеме мониторинга и обнаружения компонентов, вместо переменной окружения CID_FILE_PATH используйте переменную TESSA_CID.
  14. В командах мониторинга переименован набор прав доступа keys на manage-keys. Повторно сгенерируйте ключи, содержащие этот набор прав.
  15. Администратор системы по умолчанию больше не видит статистику по заданиям других сотрудников (кроме себя) в отчётах “Текущие задания” и “Завершённые задания”. Однако, он может явно добавить в права на текущие отчёты запись о том, что он может просматривать отчёты сотрудников в роли “Все сотрудники”.
  16. Изменена схема работы уведомлений в форумах и обсуждениях: теперь уведомления о новом сообщении приходят всем подписанным участникам сразу после отправки сообщения вместо периодической отправки группами по несколько сообщений.
  17. В опции слияния для карточек был добавлен новый параметр UpdatedColumns, который позволяет настроить для секций карточки колонки, которые будут задействованы при определении различий между строковыми секциями или между строками в табличных секциях, а также для определения колонок для модификации данных. Подрбнее см. в руководстве администратора.
  18. В консольной утилите tadmin переименованы команды: GenerateCommandKey -> GenerateDiscoveryKey, PrintComponents -> PrintDiscoveryInfo, ViewKey -> ViewDiscoveryKey.
  19. В библиотеке карточек Platform.jcardlib к карточкам DefaultWeek_Type и DefaultCalendar добавлены настройки merge-options.json, предотвращающие импорт карточек, если они уже были в системе. Измените этот файл с настройками, если требуется обновлять данные карточки при каждом импорте библиотеки.
  20. Библиотека libgdiplus, которая была необходима при установке системы на Linux (в т.ч. Docker), больше не используется. Теперь для функционирования системы не требуется устанавливать libgdiplus из репозитория и добавлять символьную ссылку для libdl.so. Также при установки системы на CentOS-подобные дистрибутивы не требуется устанавливать пакеты epel-release.
  21. Удалён плагин TextRecognition для обработки операций по распознаванию текста в файле, а также соответствующий ему файл конфигурации TextRecognition.xml и настройки плагина в app.json.
  22. При установке в Docker изменены передаваемые аргументы командной строки для скрипта setup.sh в файлах install.bat. Обратитесь к разделу Проверка работы контейнеров и завершение установки tessa.
  23. Приложения desktop-клиента теперь поддерживаются только для использования администраторами и разработчиками, функциональность таких приложений была ограничена. Используйте web-клиент для работы обычных пользователей.
  24. Для desktop-приложений больше не поддерживается запуск для ОС Windows 7 SP1 и Windows 8.1. Минимальные версии браузеров, в которых запускается web-клиент, также не поддерживают Windows 7 и Windows 8.1. Минимальной поддерживаемой клиентской версией ОС Windows является Windows 10 v1809.
  25. Минимально разрешённая версия протокола TLS теперь равна 1.2. В конфигурационных файлах сервисов app.json и app-web.json удалены настройки EnforceTls12 и AdSync.EnforceTls12. Актуально для веб-сервисов web и jinni для запуска в режиме Kestrel (без front-сервера в виде IIS/Nginx/Apache), для интеграции с LDAP, а также для синхронизации с Active Directory/LDAP в Chronos.
  26. Обновление на эту версию платформы допустимо с версии 3.6.0 или старше. Если у вас более старая версия платформы, то выполните обновление сначала на неё, а затем, при необходимости использовать desktop-клиент, установите Tessa Applications через msi-пакет (допустимо использование групповых политик).
  27. Приложение Tessa Applications более не подключается к серверам TESSA версии младше 3.6.0. Tessa Applications версии младше 3.6.0 не может подключиться к серверу 4.1, чтобы скачать и запустить приложения.
  28. Удалено расширение ChartViewExtension для представлений и узлов рабочих мест. Диаграммы в desktop-клиенте более не поддерживаются.
  29. В desktop-клиенте удалена функциональность, связанная с просмотром сообщений из топиков обсуждений, выводимая в области заданий.
  30. Удалены скрипты консольной утилиты tadmin: ConvertBson, ConvertSearchQueries, ConvertTypes, ConvertWorkplaces, ConvertWorkplaceSettings.
  31. Устаревшие бинарный формат карточек .card, xml-формат библиотек карточек .cardlib, xml-формат типов .tct, xml-формат локализации .tll, формат представлений .view, рабочих мест .workplace и поисковых запросов .query более не поддерживаются. Используйте утилиту tadmin предыдущей версии платформы для конвертации в актуальные форматы .jcard, .jcardlib, .jtype, .jlocalization, .jview, .jworkplace и .jquery соответственно.
  32. Перед обновлением убедитесь, что в базе данных отсутствуют представления, которые содержат метаинформацию в legacy-формате exchange (для них в TessaAdmin выводится значок предупреждения в списке представлений). Также получить список представлений можно, выполнив SQL-запрос SELECT "Alias" FROM "Views" WHERE "MetadataSource"<>''. Выполните конвертацию в новый формат средствами TessaAdmin или tadmin предыдущей версии платформы, или удалите такие представления из базы данных, если обновлённые версии этих представлений в формате .jview присутствуют в папке с конфигурацией, импорт которой выполняется при обновлении.
  33. Для desktop-клиента удалена функциональность сканирования, отображения диаграмм, предпросмотра файлов во внешних приложениях. Из диалога “Мои настройки” удалены настройки “Использовать предпросмотр PDF средствами Windows” и “Разрешить предпросмотр через несколько внешних программ”. Также подписание и проверка подписи будут работать некорректно для менеджеров подписи, отличных от DefaultEDSManager (по умолчанию для алгоритмов ГОСТ, см. карточку “Настройки электронной подписи”, таблица “Настройки алгоритмов подписи и хеширования”).
  34. В конфигурационных файлах app*.json и файлах проектов .csproj замените строку подключения файлов лицензии *.tlic на *.?lic для поддержки нового формата файла .jlic.
  35. Из метаинформации по колонкам представления удалено неиспользуемое свойство HasTag. Перевыгружены все представления с удалением этого свойства. Типы в базе данных не требуют обновления.
  36. В desktop-клиенте удалена возможность открывать список участников обсуждения.
  37. В конфигурационных файлах app.json для строк подключения к СУБД PostgreSQL необходимо удалить параметр Integrated Security. Начиная с версии Npgsql 8.0 он более не применяется, и его наличие приводит к ошибке.
  38. Из папки Source сборки удалён файл .hgignore, применяемый в репозиториях Mercurial. Используйте систему контроля версий Git для разработки на платформе.
  39. Все настройки плагинов сервиса Chronos перенесены из конфигурационного файла app.json в файл app-plugins.json.
  40. Добавлена поддержка загрузки конфигурации запуска плагинов из app.json. Все настройки с расписанием запуска плагинов платформы перенесены из отдельных xml-файлов в конфигурационный файл app-plugins.json. Подробнее про структуру настроек см. в разделе Настройка плагинов.
  41. В конфигурационный файл app-saas.json веб-сервиса и Chronos добавлен блок настроек SaaS, позволяющий включить режим SaaS для веб-сервиса, а также настроить работу плагинов на веб-сервисе. Подробнее см. в разделе Настройка запуска плагинов на веб-сервисе.
  42. Плагин хроноса NoticeMailer переименован в MailSender, включая его настройки в конфигурационном файле.
  43. В папке с проектными расширениями Source файлы app-local-*.json и app-local-*.json.sample переименованы в applocal-*.json и applocal-*.json.sample соответственно. В файле applocal-server.json изменена директива .include для включения файла app-webdev.json. Также изменены файлы проектов тестов Tessa.Test.*.csproj, чтобы в дополнение к app-*.json подключались файлы applocal-*.json. Эти файлы используются для разработки, они позволяют переопределить любые настройки из файлов app-*.json (строки подключения к БД, адрес Redis и др.). При обновлении проектного решения переименуйте соответствующие файлы, обновите содержимое файла applocal-server.json и убедитесь, что файлы .csproj обновлены.
  44. В файлах app.json для всех сервисов и приложений изменён блок директивы .include, чтобы включать файлы по маске applocal-*.json позже файлов app-*.json. Файлы applocal-*.json используются при разработке, они позволяют переопределить любые настройки из файлов app-*.json. При обновлении убедитесь, что файлы app.json актуализированы для удобства разработки. На тестовом и production контурах обновлять конфигурационные файлы необязательно, т.к. там не должны использоваться файлы applocal-*.json (подключение отсутствующих файлов в директиве .include не изменит конфигурацию).
  45. Перевыгружены все представления с изменением того, как сериализуются пустые массивы и пустые строки в метаинформации. Такие изменения можно игнорировать.
  46. В конфигурационных файлах app.json для приложений desktop-клиента изменился блок ".if": [ "wine", { ... } ]. Если такие файлы изменялись в проектном решении, то убедитесь, что они корректны обновлены.
  47. В конфигурационных файлах app.json символ wine будет объявлен только для desktop-приложений TessaClient, TessaAdmin, TessaAppManager, SchemeEditor. Например, его объявление не производится для консольной утилиты tadmin, которая запущена в среде эмуляции Wine.
  48. Увеличена версия действий редактора бизнес-процессов “Согласование” и “Подписание”. Необходимо выполнить обновления версий действий бизнес-процессов, содержащих данные действия. Сделать это можно посредством команды tadmin UpgradeWorkflowProcesses, либо эта команда будет вызвана во время автоматизированного обновления через Upgrade.bat/upgrade.sh.
  49. Изменён способ хранения данных для верифицируемых полей. Теперь вместо коллекционных секций используется json-структура. Пример структуры см. в руководстве разработчика.
  50. При обновлении Deski убедитесь, что удалена папка .deski_data. На ОС Linux/macOS она расположена в папке с исполняемым файлом, а на ОС Windows - в папке %LocalAppData%\tessa\deski\.deski_data. При обновлении Deski на ОС Windows посредством msi-инсталлятора папка удаляется автоматически, т.е. дополнительных действий не требуется. На других ОС предоставляется zip-архив с исполняемым файлом, поэтому папка .deski_data должна отсутствовать в месте распаковки.
  51. При экспорте карточек порядок строк коллекционных секций может быть изменён, т.к. теперь при экспорте карточки строки секции по умолчанию сортируются по RowID.
  52. Обновлён раздел документации Создание образов Docker с использованием дистрибутива TESSA alpine-redist. Внесены пояснения в пункты инструкции, добавлены примечания.
  53. Обновите скрипты Export.bat и export.sh проектного репозитория, которые копировались из папки Source в сборке.
  54. Изменились рекомендации по настройке сервиса webbi для ОС Windows (IIS).
  55. Изменён способ определения групп при формировании распределения файлов по циклам согласования. Настройте необходимые типы групп в карточке типового решения в поле “Типы групп истории заданий, используемые для определения циклов согласования” на вкладке “Дополнительно”.
  56. При использовании Nginx для корректной и оптимальной работы веб-сервиса рекомендуется отключить кэширование запросов на уровне server или location в конфигурационном файле Nginx *.conf (настройка proxy_request_buffering off), а также в других прокси, за которыми стоит Nginx, если таковые присутствуют. Подробнее в разделе Настройка веб-сервера Nginx.
  57. Изменён способ включения и отключения в режима технического обслуживания. Необходимо изменить настройки IIS и nginx, обратитесь к соответствующим разделам документации.
  58. Изменена версия схемы. При открытии схемы данных в SchemeEditor или TessaAdmin система обновит схему на новую версию из файловой папки. Рекомендуется использовать команду tadmin SchemeUpdate для обновления схемы в репозитории перед объединением её со схемой в сборке.
  59. Увеличена версия JSON-формата для хранения метаданных представлений до 4. Для представлений в базе данных используйте скрипт UpgradeViewsSql: tadmin Script UpgradeViewsSql (будет выполнен при автоматической миграции upgrade.sh/Upgrade.bat). Для представлений на файловой системе *.jview (в репозитории) используйте команду tadmin ConvertConfiguration: tadmin ConvertConfiguration Ваша_папка_с_файлами_конфигурации. Перед объединением проектной конфигурации с этой сборкой выполните такую команду на папке Configuration/Views в проектном репозитории, после чего её можно будет объединить средствами репозитория с конфигурацией из этой сборки.
  60. Увеличена версия JSON-формата для хранения метаданных рабочих мест до 4. Для рабочих мест в базе данных используйте скрипт UpgradeWorkplacesSql: tadmin Script UpgradeWorkplacesSql (будет выполнен при автоматической миграции upgrade.sh/Upgrade.bat). Для рабочих мест на файловой системе *.jworkplace (в репозитории) используйте команду tadmin ConvertConfiguration: tadmin ConvertConfiguration Ваша_папка_с_файлами_конфигурации. Перед объединением проектной конфигурации с этой сборкой выполните такую команду на папке Configuration/Workplaces в проектном репозитории, после чего её можно будет объединить средствами репозитория с конфигурацией из этой сборки.
  61. Увеличена версия JSON-формата для хранения метаданных поисковых запросов до 2. Для поисковых запросов в базе данных используйте скрипт UpgradeSearchQueriesSql: tadmin Script UpgradeSearchQueriesSql (будет выполнен при автоматической миграции upgrade.sh/Upgrade.bat). Для поисковых запросов на файловой системе *.jquery (в репозитории) используйте команду tadmin ConvertConfiguration: tadmin ConvertConfiguration Ваша_папка_с_файлами_конфигурации. В архиве со сборкой отсутствуют выгруженные поисковые запросы, поэтому объединение проектной конфигурации с конфигурацией из сборки для них не требуется.
  62. Расширение представлений TagsWorkplaceViewDemoActionExtension, предоставляющее кнопку, которая добавляет теги к карточкам, перечисленным в представлении, переименовано в AddTagButtonViewExtension.
  63. Расширение представлений FilterViewDialogOverrideWorkplaceComponentExtension, переопределяющее кнопку фильтрации представлений на специализированный диалог, переименовано в OverrideFilterViewExtension.
  64. Переименованы расширения на представления и узлы рабочего места, используемые в целях тестирования: CustomFolderViewExtension->AbCustomFolderExtension, GetDataWithDelayExtension->AbGetDataWithDelayExtension, TreeViewItemTestExtension->AbTreeViewItemExtension.
  65. В служебных таблицах колонки заполняются из справочников нормализации: ActionHistory для колонок Type, ModifiedBy; Instances для колонок Type, CreatedBy, ModifiedBy; Files для колонок Type, CreatedBy, ModifiedBy; FileVersions для колонки CreatedBy; DeletedFiles для колонок Type, CreatedBy, ModifiedBy, DeletedBy; DeletedFileVersions для колонки CreatedBy; Sessions для колонки UserName. Соответствующие строковые колонки внутри комплексных стали виртуальными. Если таблица использовалась в представлениях или SQL-запросах в коде проектных расширений, то измените их, чтобы для строковых колонок использовались соответствующие справочники нормализации (Users, Types). При использовании в коде обратитесь к объекту, возвращаемому методом ICardMetadata.GetNormalizationInfoAsync, чтобы получить актуальные идентификаторы справочников.
  66. Для плагина WorkflowEngineAsyncPlugin добавлены настройки RetryPeriod и RetryTimeout, определяющие период, через который будет перезапущена асинхронная обработка сигнала после возникновения ошибки, и период, через который будет прекращена повторная асинхронная обработка сигнала после ошибки. Подробнее см. в разделе Список плагинов.
  67. В конструкторе бизнес-процессов исправлена проверка версии карточки при сохранении после окончания обработки. Теперь версия карточки проверяется всегда. Если в скриптах бизнес-процессов выполняется сохранение карточки с изменением версии через репозиторий карточек, то необходимо или удалять карточку из текущего скоупа с помощью метода RemoveCardAsync, или устанавливать корректную версию для карточки из скоупа.
  68. Если для карточек необходимо включить поддержку тегов, необходимо установить флаг “Разрешить теги” в типе карточки.

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

  1. Изменена логика определения дайджеста при сохранении карточки из клиента. Теперь при сохранении карточки в запросе на сохранение отправляется дайджест карточки, полученный при её загрузке, а не дайджест, сформированный с учётом сохраняемых изменений. Если в расширениях на сохранение карточки требуется получить актуальный дайджест карточки, то необходимо использовать метод ICardRepository.GetDigestAsync и передать в качестве параметра сохраняемую карточку.
  2. Для разработки расширений web-клиента установите последнюю версию Node.js из линейки версий 20.x. Удалите подпапку node_modules из папки WebClient SDK проектного репозитория, если локально выполнялась сборка расширений с предыдущей версией Node.js.
  3. Для проектов с тестами Tessa.Test.Client/Server/Shared/Windows и проектов модулей Tessa.Module.Sample.Client/Server/Shared по умолчанию теперь включена поддержка nullability в C# (тег <Nullable> в файлах проекта .csproj).
  4. При отправке запроса к представлению ITessaViewRequest значение свойства ViewAlias теперь должно совпадать с алиасом вызываемого представления. Убедитесь, что при получении данных из представления в серверных расширениях и в перехватчиках представлений внутри запроса передаются корректные значения для свойства ViewAlias.
  5. В RedisEventSubscriber убрана синхронизация обработки событий при получении сигнала из Redis. Теперь он позволяет обрабатывать сразу несколько событий параллельно. Если при обработке событий требуется синхронизация их выполнения, она должна быть реализована в действии, передаваемом в методе RedisEventSubscriber.SubscribeAsync при создании подписки на событие.
  6. В метод CardComponentHelper.FillTaskSessionRolesAsync добавлены параметры forceFill и preserveOldValues. Параметр forceFill вызывает принудительное наполнение списка функциональных ролей задания, к которым относится текущий сотрудник, даже если загрузка уже была выполнена ранее. Параметр preserveOldValues отключает очистку списка от старых значений.
  7. В действия редактора бизнес-процессов добавлена информация о версии действия. При серьёзных изменениях действий, требующих обновления, версия действия увеличивается. Экземпляр действия в шаблоне бизнес-процесса и экземпляр действия в запущенном процессе хранят версию, которая была у дескриптора действия в момент их создания. Система не позволит выполнить действие, если оно имеет неактуальную версию.
  8. Изменён интерфейс IRoleManagerService. Добавлен метод RecalcSmartRoleGeneratorsAsync, который выполняет пересчёт генераторов умных ролей.
  9. Для определения базовой папки с конфигурационными файлами вместо RuntimeHelper.ConfigRootPath используйте ConfigurationHelper.ConfigRoot.ResolvePath().
  10. Тип свойства ITessaViewRequest.Parameters (переименовано из Values) изменён на List<RequestParameter>. Измените код проектных расширений, который опирался на то, что свойство имело тип ICollection<RequestParameter>.
  11. В зависимости, используемые при разработке консольного клиента, добавлена библиотека Microsoft.IdentityModel.Tokens.
  12. Изменена сигнатура статического метода CardComponentHelper.GetContentContextsAsync. Теперь, если параметр fileIDs не был передан, то метод будет выполнять получение контекстов для всех файлов карточки.
  13. В метод расширения FileExtensions.RemoveWithNotificationAsync добавлен опциональный параметр withBackup (по умолчанию false). Он показывает, что файлы удаляются с возможностью восстановления.
  14. Изменена сигнатура метода расширения CardExtensions.HasContent. Теперь метод принимает объект типа CardFile вместо CardFileState.
  15. В web-клиенте изменён способ создания модели представления для компонента окна логина. Теперь модель представления регистрируется в DI-контейнере и возвращается как зависимость. Замените все места явного создания моделей представления на регистрацию в DI-контейнере.
  16. В методы RedisPlatformExtensions.RegisterRedis и PlatformExtensions.RegisterServer добавлен параметр allowRedisInitialization, управляющий необходимостью либо полной инициализации данных системы в Redis, либо проверки текущего состояния инициализированности данных.
  17. Переименован метод ObjectPool<T>.Get() на Rent().
  18. Изменено API по созданию и использованию объектов IWebProxy. Изменены конструкторы базовых классов WebProxy и WebProxyFactoryBase. Пространства имён для соответствующих типов изменены с Tessa.Platform.Runtime на Tessa.Platform.Web. Изменены параметры метода WebProxy.SendAsync<T>: для передачи флагов используйте WebRequestFlags.PerRequest(); стандартные флаги доступны как поля статического класса WebRequestFlags, также изменён их смысл (например, были флаги OmitXyz для исключения заголовка запроса, теперь заголовки по умолчанию не добавляются, пока не указаны соответствующие флаги AddXyzHeader); функции modifyRequestFuncAsync и modifyResponseFuncAsync получают объект контекста IWebProxyContext со свойствами Request, Response, CancellationToken. Класс LegacyBinaryContent переименован в WebLegacyBinaryContent. Обратитесь к разделу руководства Запросы к веб-сервисам посредством прокси-объектов WebProxy.
  19. Были добавлены проекты расширений Tessa.Extensions.Default.Imaging.csproj и Tessa.Extensions.Imaging.csproj. В данных проектах можно создавать расширения для работы с изображениями (например, для работы с плейсхолдерами). Также в эти проекты была перенесена логика форматирования плейсхолдеров с QR-кодами, штрихкодами и изображениями в OpenXML. Из серверных зависимостей были удалены следующие библиотеки: System.Drawing.Common и QRCoder.
  20. Теперь замена плейсхолдеров с форматтерами #image, #barcode и #qrcode не выполняется по умолчанию, если в проекте отсутствует библиотека Tessa.Extensions.Default.Imaging.dll.
  21. Изменена сигнутура метода IDocLoadDocument.AppendPageAsync. Теперь метод первым аргументом ожидает объект типа Image<Rgba32> из библиотеки SixLabors.ImageSharp.Drawing.
  22. Изменена сигнутура метода IBmpConverter.ReadAsync. Теперь метод возвращает объект типа Image<Rgba32> из библиотеки SixLabors.ImageSharp.Drawing.
  23. Для сборки проектов расширений требуется IDE Visual Studio 2022 (версия 17.9 или старше). Вы можете использовать альтернативные IDE, такие как Visual Studio Code и JetBrains Rider, или же выполнять сборку из командной строки. Также, независимо от выбранной IDE, требуется установленный пакет .NET SDK версии 8.0.202 или старше (устанавливается вместе с Visual Studio). Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet/8.0.
  24. Во всех файлах проектов расширений .csproj включается файл Tessa.targets, в котором указано свойство LangVersion 12. В текущей реализации это соответствует версии C# 12.0. Укажите значения в ваших проектах расширений, явно добавив тег <LangVersion> или подключив файл Tessa.targets, если актуально получить языковые возможности последней доступной версии C# при разработке расширений.
  25. Изменён интерфейс IGetDataRequest. Свойство SelectedMasterRowData переименовано в SelectedMasterRowsData, а тип изменён на List<IDictionary<string, object?>>?.
  26. Изменён интерфейс IParametersMappingContext. Свойство SelectedRowData переименовано в SelectedRowsData, а тип изменён на List<IDictionary<string, object?>>.
  27. Более не поддерживается создание WCF-сервисов с использованием API TESSA. Вы можете создать такой сервис как отдельное веб-приложение, которое будет обращаться к веб-сервису TESSA как к микросервису с использованием REST API.
  28. Для поддержки лицензий формата .tlic в кастомизированных приложениях, добавьте в проекте ссылку на Tessa.BinaryLicense.dll (присутствует в папках сервисов chronos, jinni, web), после чего при запуске приложения добавьте вызов: LicensingHelper.BinaryLicenseSupportDelegates = new(BinaryLicenseHelper.SerializePayload, BinaryLicenseHelper.DeserializePayload);.
  29. Удалён NuGet-пакет Tessa.NetStandard. Разработка сервисов для платформы .NET Framework более не поддерживается.
  30. Удалены разделы документации Использование анонимной аутентификации в веб-сервисах, Подключение к сервису Tessa через WSDL, Создание веб-сервиса WCF, который вызывает веб-сервис платформы. Взаимодействие с веб-сервисами TESSA с использованием протокола SOAP и фреймворка WCF более не поддерживается. Существующие WCF-сервисы возможно модифицировать, чтобы они использовали REST API платформы и REST-контроллеры, разрабатываемые в проектном решении.
  31. Для получения пустой коллекции замените вызов EmptyHolder<T>.Collection на ImmutableList<T>.Empty. Такую коллекцию можно возвращать как IReadOnlyList<T>.
  32. Удалено устаревшее свойство ITessaViewResult.DataTypes. Используйте свойство SchemeTypes для указания типов данных колонок в результате представления.
  33. Регистрация консольных команд в методе CommandContext.AddCommand() теперь выполняется без перечисления типов аргументов. Измените регистрацию команд в проектном решении соответствующим образом.
  34. Удалён класс Tessa.Platform.Check. Используйте методы ThrowXyz, подключаемые как global usings, вместо методов этого класса. Например, ThrowIfNull вместо Check.ArgumentNotNull.
  35. Для объектов ICardTypeVisitor методы VisitBlockAsync, VisitControlAsync, VisitTabFormAsync и VisitTableFormAsync в качестве дополнительных контекстных параметров могут получать null (например, параметры block и form в методе VisitControlAsync), если они были возвращены расширением типа, таким как “Таблица в представлении”. Если в проектном решении определены реализации интерфейса (в т.ч. наследники класса CardTypeVisitor), то убедитесь, что они учитывают возможные значения null в этих методах.
  36. В классе CardGetFileContentRequest булевое свойство SuggestFileName заменено на свойство-перечисление SuggestFileNameMode.
  37. Регистрация расширений плагинов IPluginExtension теперь производится по имени группы, а не по объекту PluginSchedulingMode, определяющем режим планирования. Замените в регистрации проектных расширений плагинов вызов метода WithScheduling на метод WithGroup. Список платформенных имён групп доступен в классе PluginGroups.
  38. Типы в пространстве имён Tessa.Platform.Configuration перенесены в пространство имён Tessa.Platform.ConfigurationLogging. Пространство имён Tessa.Platform.Configuration теперь содержит API по работе с конфигурационными файлами.
  39. Типы, относящиеся к конфигурации в пространстве имён Tessa.Platform (классы ConfigurationXyz и интерфейсы IConfigurationXyz) перенесены в пространство имён Tessa.Platform.Configuration. Класс Tessa.Platform.ConfigurationManager сделан статическим, он по-прежнему содержит статические методы и свойства, тогда как экземплярные члены перенесены в класс Tessa.Platform.Configuration.DefaultConfigurationManager. Класс ConfigurationManagerLazy переименован в LazyConfigurationManager. Свойство ConfigurationManager.GlobalDefinedSymbols и константы с символами перенесены в статический класс ConfigurationSymbols.
  40. Асинхронные функции регистрации в контейнерах Unity теперь возвращают ValueTask вместо ValueTask<IUnityContainer>. Это такие методы-расширения, как RegisterServerForPluginAsync, RegisterServerForConsoleAsync, RegisterDatabaseForConsoleAsync и др., а также статическое методы TestHelper.InitializeServerContainerBaseAsync.
  41. Используйте класс UnityContainerCompanion всякий раз, когда необходимо создать объект UnityContainer с нуля, например, для использования в командах и скриптах tadmin, а также в плагинах Chronos. Этот объект упрощает освобождение зависимостей из DI-контейнера, регистрируемых в IUnityDisposableContainer, а также упрощает инициализацию конфигурации IConfigurationManager при указании свойства UseConfiguration = true. Примеры использования доступны в коде типового решения (см. Tessa.Extensions.Default.Console) и в документации, например, в разделе Разработка плагинов, обрабатываемых веб-сервисом.
  42. Изменена сигнатура метода ICompilationCacheContainer.Register. Измените регистрацию кэшей компиляции в проектном решении соответствующим образом.
  43. Удалён флаг WebRequestFlags.AddInstanceInUri. Использование нескольких экземпляров для одного сервиса более не поддерживается. Удалите все использования этого флага.
  44. Свойство ITessaViewRequest.View удалено. Получить метаданные представления в запросе можно по алиасу представления (свойство ITessaViewRequest.ViewAlias).
  45. Удалён класс SortingColumnCollection. Используйте вместо него List<ISortingColumn>.
  46. В классе ITessaViewRequest свойство Values переименовано в Parameters. Для web-клиента аналогично переименовано свойство ViewRequest.values в parameters.
  47. Доработан механизм выполнения расширений ICardPermissionsExtension. Добавлен метод ExtendPermissionsAfterTokenCheckAsync, метод ExtendPermissionsAsync был переименован в ExtendPermissionsBeforeTokenCheckAsync. Метод ExtendPermissionsBeforeTokenCheckAsync выполняется до проверки прав на основании KrToken и предназначен для добавления дополнительных требований к уже проверяемым правилам (посредством свойства KrPermissionsDescriptor.StillRequired). Метод ExtendPermissionsAfterTokenCheckAsync выполняется после проверки прав на основании KrToken и предназначен для выполнения проверки по выданным правам, а также для добавления или исключения из списка уже выданных с учётом токена прав.
  48. В API календарей внесены изменения в метод RebuildCalendarAsync. Был добавлен необязательный параметр errorCardID. Он необходим для того, чтобы передать в метод идентификатор карточки, с которым будет создана карточка ошибки в случае её возникновения во время пересчёта календаря. Это позволило реализовать возврат ошибок, которые могут возникнуть при пересчёте календаря, на клиент.
  49. Изменён интерфейс для результата выполнения представлений ITessaViewResult. Список колонок Columns содержит и имя колонки, и её тип. Список строк Rows содержит значения всех строк в форме List<List<object?>>. Конструктор, принимающий IViewMetadata, автоматически заполняет свойство Columns по метаданным представления, рекомендуется использовать его, где применимо. Все свойства не равны null, при обращении к ним не требуются проверки на null. Измените в соответствии с этим места использования представлений в проектном решении со стороны сервера и desktop-клиента.
  50. Удалён метод Tessa.Extensions.Default.Shared.Notices.NotificationHelper.ModifyEmailForMobileApprovers. Удалите его использование из проектного кода.
  51. Исправлены опечатки в названиях методов: WorkflowHelper.InializeTaskCompletionOptionsAsync -> WorkflowHelper.InitializeTaskCompletionOptionsAsync, WorkflowHelper.InializeActionCompletionOptions -> WorkflowHelper.InitializeActionCompletionOptions. Переименуйте их в проектном решении, если они используются.
  52. Переименованы константы в классе CriteriaOperatorConst (C#) и ViewCriteriaOperators (JS) для имён условных операторов в параметрах представлений. Соответствующие строковые значения остались неизменны. Также переименованы соответствующие классы-наследники CriteriaOperator (C#) (например, используйте EqualsToCriteriaOperator вместо EqualsCriteriaOperator). Если в проектных расширениях web-клиента (JS) или в любом коде C# используются эти костанты и классы для работы с представлениями, то переименуйте их. Все переименования аналогичны и очевидны: например, вместо константы Equality в C# и Equals в JS используйте константу EqualsTo.
  53. Для использования классов-наследников CriteriaOperator - объектов условных операторов в параметрах представлений, - следует использовать статическое свойство Instance соответствующего класса. Например, вместо new EqualsCriteriaOperator() вызовите EqualsToCriteriaOperator.Instance.
  54. В метаинформации представлений свойство объекта ISortingColumn.SortDirection, указывающее направление сортировки, заменено на логический флаг Descending (true - сортировка по убыванию, false сортировка по возрастанию). По умолчанию значение равно false.
  55. В метаинформации представления IViewMetadata колонки сортировки по умолчанию теперь определяются только коллекцией DefaultSortingColumns. Свойства DefaultSortColumn и DefaultSortDirection удалены.
  56. Изменена сериализация запросов к представлениям TessaViewRequest и ответов на запросы TessaViewResult. Для TessaViewRequest переименован ключ с коллекцией параметров: Values -> Parameters. Для TessaViewResult переименованы ключи с заглавными буквами: columns -> Columns, schemetypes -> SchemeTypes, rows -> Rows, rowcount -> RowCount, info -> Info.
  57. Изменена регистрация класса ViewQueryExecutor, теперь для определения таймаута по умолчанию используется объект IViewExecutionSettingsProvider вместо зависимости AsyncLazy<int>.
  58. Метод HandlerHelper.TryGetOverridenTaskHistoryGroup переименован в HandlerHelper.TryGetOverriddenTaskHistoryGroup. Переименуйте места вызова метода в проектах.
  59. Константы IsDisableAutoApproval, CanEditCard и CanEditAnyFiles перемещены из класса Tessa.Extensions.Default.Shared.Workflow.WorkflowEngine.WorkflowConstants.NamesKeys в Tessa.Extensions.Default.Shared.Workflow.WorkflowCommonConstants.
  60. Методы CombinePerformers, TryGetPersonalRoleIDAsync, GetKindAsync, AppendApprovalInfoUserCompleteTaskAsync и SetTaskKind перемещены из класса WorkflowHelper в WorkflowCommonHelper. Методы AddTaskToNextContextTasks и CreateTasksContext сделаны методами-расширениями для IWorkflowEngineContext и перемещены в класс WorkflowEngineExtensions.
  61. Удалён метод HandlerHelper.SetTaskKind. Вместо него используйте метод WorkflowCommonHelper.SetTaskKind.
  62. Объект Tessa.Extensions.Default.Server.Workflow.WorkflowEngine.IKrWorkflowHistoryStrategy переименован и перемещён в Tessa.Extensions.Default.Server.Workflow.IKrHistoryStrategy.
  63. Удалён метод KrWorkflowTaskActionBase.GetSqlPerformers. Вместо него используйте объект IKrGetSqlPerformersStrategy из Unity-контейнера.
  64. Удалён метод WorkflowEngineContextExtension.SendEditInterjectTaskAsync. Вместо него используйте объект IKrEditInterjectTaskManager из Unity-контейнера.
  65. Удалены методы KrWorkflowTaskActionBase.SendRequestCommentTaskAsync и KrWorkflowTaskActionBase.RequestCommentTaskCompleteAsync. Вместо него используйте объект IKrRequestCommentTaskManager из Unity-контейнера.
  66. Объект RoleEntryStorage перемещён в пространство имён Tessa.Extensions.Default.Shared.Workflow.
  67. В объектах-наследниках StorageSerializable вместо статических методов TryGetInt32, TryGetBoolean и подобных используйте методы-расширения storage.TryGetConvertInt32, storage.TryConvertBoolean и др. Вместо метода TryGetString используйте метод-расширение storage.TryGet<string>.
  68. Для метода-расширения StorageExtensions.ToJsonString параметр indented теперь является обязательным. Ранее он имел значение по умолчанию true.
  69. Класс ParserNames перенесён из пространства имён Tessa.Views.Parser в Tessa.Views для удобства использования.
  70. Метод ISessionServer.OpenSessionAsync вместо параметра с единственным проверяемым типом входа сотрудника UserLoginType? expectedLoginType теперь принимает параметр с коллекцией ожидаемых типов IReadOnlyCollection<UserLoginType>? expectedLoginTypes. Значение null (по умолчанию) или пустая коллекция аналогичны разрешению для всех типов входа, кроме UserLoginTypes.Forbidden.
  71. Переименован тип IWebUnityContainerHandler на IWebUnityHandler.
  72. Изменён пример в документации Создание веб-приложения ASP.NET Core, использующего API TESSA. Удалён вызов ConfigureTessaApplication для файла Startup.cs. Метод RegisterTessaLifetime переименован в RegisterUnityLifetime. В файле Program.cs изменены создание и запуск объекта IHost.
  73. Удалён класс ITessaWebScope, который являлся scoped-зависимостью в DI-контейнере ASP.NET Core. В контроллерах веб-сервисов и их зависимостях вы можете получить контейнер Unity посредством синглтона IWebUnityHolder, а текущую сессию - посредством синглтона IWebContextAccessor.
  74. Удалён ключ валидации CardValidationKeys.UnknownOrUnspecifiedCardType. Используйте вместо него CardValidationKeys.UnspecifiedCardType или CardValidationKeys.UnknownCardType.
  75. Изменён тип возвращаемого значения в методе IOcrService.CreateOperationAsync. В частности, параметр с токеном балансировки нагрузки стал необязательным для сервиса IOcrSyncService. Если токен не был передан, то реализация по умолчанию выполнит формирование такого токена автоматически.
  76. Для параметров запроса к представлению RequestParameter удалено свойство Metadata. Чтобы указать имя параметра, используйте свойство Name (можно передать параметром конструктора). Метаданные должны определяться в соответствии с представлением, в зависимости от места использования параметра.
  77. Вместо RequestParameterBuilder для создания параметров запроса к представлению RequestParameter, создавайте параметр стандартным конструктором, используя методы Add для добавления критериев по аналогии с тем, как это выполнялось посредством RequestParameterBuilder.AddCriteria (где параметры value и text поменяны местами, а указание text для нессылочных параметров не требуется). Например: new RequestParameter("UserID").Add(EqualsToCriteriaOperator.Instance, userID). Параметр является ссылочным, если метод-расширение parameterMetadata.IsReference() возвращает true (в текущей версии это происходит, когда заполнено его коллекция RefSection).
  78. Переименовано свойство ITessaView.ViewAlias в ITessaView.Alias.
  79. Переименованы методы-расширения для ITessaViewRequest: GetParameterFirstValue -> GetFirstParameterValue, GetParameterFirstValueIsNull -> GetFirstParameterValueIsNull, GetParameterSecondValue -> GetSecondParameterValue, GetParameterSingleValue -> GetSingleParameterValue, GetParameterSingleValueIsNull -> GetSingleParameterValueIsNull. Эти методы могли использоваться в SQL-запросе представлений, например, request.GetFirstParameterValue("ByPermissionExpression"), поэтому при обновлении проверьте не только проекты с расширениями C#, но и выполните поиск по файлам выгруженных представлений .jview.
  80. В web-клиенте для класса модели представления файла FileViewModel, отображаемого в файловом контроле, добавлено булевое свойство hideSignatureTag, с помощью которого можно скрыть значок подписи на файле.
  81. Свойства SignatureKey и CipherKey удалены из объекта ITessaServerSettings. Используйте методы GetSignatureKey() и GetCipherKey() соответственно из объекта ITessaServerKeyProvider.
  82. Для использования метода-расширения SwaggerGenOptions.IncludeXmlCommentsFromInheritDocs при создании web-приложений ASP.NET Core, использующих API TESSA замените подключение пространства имён Unchase.Swashbuckle.AspNetCore.Extensions.Extensions на Tessa.Web.Unchase.Swashbuckle.Extensions.
  83. При получении карточки по серверному запросу теги больше не загружаются. Если теги необходимы при загрузке карточки на сервере, то их можно получить через API ITagManager.
  84. В обработчике привязок конструктора бизнес-процессов IWorkflowEngineBindingExecutor метод GetAsync<T>, который позволял получить значение по привязке как для скалярных типов данных, так и для списков (при передаче в качестве типа в T массива или типа, реализующего IEnumerable<object>), разделён на 2 отдельных метода - GetAsync<T> для получения скалярных типов данных и GetListAsync<T> для получения списков. Если вы использовали метод GetAsync<T> для получения списка значений (например, List<object>), то замените его на GetListAsync<T>.
  85. При получении списка из сериализуемого хранилища его необходимо привести к типу IList. Убедитесь, что при получении данных из сериализуемого хранилища нет приведений к типам IList<object> или List<object>. Если есть, то необходимо заменить на приведение к типу IList.
  86. Изменён абстрактный класс TaskSatelliteClientGetFileContentExtension, используемый для передачи дайджеста карточки в запрос на получение файла из карточки-сателлита задания. Из конструктора базового класса удалён параметр ICardRepository.
  87. Изменён интерфейс ICardManager. В методы ImportAsync добавлен опциональный параметр bool errorIfCardExists, который позволяет не производить логику слияния и вернуть ошибку в ответе, если карточка уже существует, например, когда предполагается удаление существующей карточки перед импортом.
  88. Удалена константа KrConstants.DefaultStagesCount. Вместо неё используйте метод KrConstants.GetDefaultStagesCount.
  89. Для объектов GlobalCache<T> событие Invalidated заменено на методы AddInvalidatedHandlerAsync и RemoveInvalidatedHandler.
  90. Удалена возможность использовать компоненты карточек с платформенными расширениями, но без расширений типового решения и других расширений (актуально на сервере и в desktop-клиенте). Удалены регистрации контейнера IExtensionContainer по имени ExtensionContainerNames.Platform, а также других объектов по именами CardRepositoryNames.Platform, CardRepositoryNames.PlatformWithoutTransactionAndLocking, CardRepairManagerNames.Platform.
  91. Из класса KrComponentsHelper удалены методы, принимающие ICardCache. Вместо них используйте одноимённые методы, принимающие IKrTypesCache.
  92. В серверном API представлений для обращения к объекту ViewDataAccessor вместо получения из DI функции Func<ViewDataAccessor> укажите тип IViewDataAccessor.
  93. Удалён интерфейс IExtraViewProvider, вместо него используйте интерфейс IExtraViewListProvider.
  94. В методы IViewInterceptor.GetInterceptedViewAliasesAsync и IExtraViewListProvider.GetExtraViewsAsync добавлен параметр ViewDatabaseInfo с информацией по СУБД для основной базы данных, которая может передаваться в функцию CreateTessaViewFunc или в конструктор объекта TessaViewModelAdapter для создания объектов представлений ITessaView. Также гарантируется, что эти методы выполняются при открытом подключении к этой БД посредством объекта ISeparateDbConnectionWorker, поэтому при обращениях к БД не требуется открывать такое подключение вручную.
  95. Интерфейс ITessaViewAccess, используемый для программных представлений, регулирующих свойств доступ по ролям, переименован в ITessaViewWithAccessControl, он теперь реализует ITessaView. Его метод GetRolesAsync переименован в GetRoleIdentifiersAsync и возвращает только идентификаторы ролей. Пример программного представления в классе AbTransientViewProvider.
  96. Изменён тип свойства WorkflowEngineTaskSignal.TaskIDs на IList<Guid>. Обновите проектный код, содержащий ссылку на это свойство.
  97. Метод HandlerHelper.SetTaskResultAsync заменён на WorkflowEngineHelper.UpdateTaskHistoryResultAsync. Обновите проектный код, содержащий ссылку на этот метод.
  98. Теги регистраторов RegistratorTag.DefaultForXyz переименованы в RegistratorTag.GroupForXyz, также переименованы теги: Default->GroupForDefault, Server->GroupForServer, DefaultForClientAndConsole->GroupForClient. Используйте такие групповые теги в атрибутах регистраторов, но не в методах регистрации расширений в DI-контейнере container.FindAndRegisterExtensionsOnXyzAsync(). В дополнение переименованы негрупповые теги для очевидного использования: ServerDefault->ServerOther, Client->ClientOther, ConsoleClient->ClientConsole, AppManagerClient->ObsoleteAppManager (отмечен как [Obsolete]).
  99. В атрибуте регистраторов [Registrator] удалено свойство Type. Для выполнения регистратора только для клиента любого типа укажите Tag = RegistratorTag.GroupForClient, а для любого сервера - укажите Tag = RegistratorTag.GroupForServer.
  100. В объект сессионного токена ISessionToken добавлено свойство Kind, которое используется при создании записи в истории действий. Учтите данное изменение при создании собственных записей в истории действий.
  101. Класс SharedEventArgs, используемый в API глобальных кэшей, сделан абстрактным. Вместо GlobalCache<SharedEventArgs> объявите кэш как GlobalCache<EmptySharedEventArgs>. Также в подписчиках на события инвалидации кэшей замените тип параметра DeferredEventArgs<SharedEventArgs> на DeferredEventArgs<EmptySharedEventArgs>.
  102. Для абстрактных классов StorageSerializable и AsyncStorageSerializable виртуальные методы сериализации/десериализации, не выполнявшие действий, теперь являются абстрактными и обязательны для объявления.
  103. Удалён метод-расширение StorageExtensions.GetSerializedEnum, используйте вместо него аналогичные методы ConvertEnum или TryConvertEnum.
  104. Удалены методы-расширения ToSerializable. Используйте соответствующие методы для объекта SerializableObject, явно созданного конструктором по умолчанию.
  105. Методы ParserNames.IsAny в API представлений переименованы в ParserNames.Contains (для проверки единственного значения) и ParserNames.HasIntersections (для проверки нескольких значений).
  106. Удалён интерфейс IKrPermissionExtendedCardSettings, который мог использоваться в расширениях правил доступа. Замените его на класс KrPermissionExtendedCardSettingsStorage. Вместо метода интерфейса TryGetCardSettings используйте метод TryGetSectionSettings.
  107. Модифицированы все методы интерфейсов IObjectLockingStrategy, IObjectTransactionLockingStrategy, IKrPermissionsObjectLockingStrategy. Для корректной идентификации блокируемого объекта используется параметр типа ObjectLockKey, который заменил два параметра objectID и objectPrefix. Семантика использования осталась прежней. Для перехода на новый API достаточно окружить objectID и objectPrefix конструкцией new (...), т.е. new (objectID, objectPrefix).
  108. В методах ITransactionStrategy, ICardTransactionStrategy добавлена предварительная проверка параметра validationResult на наличие ошибок. В случае их наличия, никакие действия не выполняются и производится немедленный выход из методов.
  109. В методах IObjectLockingStrategy.ReleaseWriterLockAsync, IObjectLockingStrategy.ReleaseReaderLockAsync, IObjectTransactionLockingStrategy.ReleaseObjectAsync, IKrPermissionsObjectLockingStrategy.ClearLocksAsync, IKrPermissionsLockStrategy.ClearLocksAsync, IAclLockStrategy.ReleaseLockAsync, INestedRoleLockStrategy.ReleaseLockAsync, ISmartRoleLockStrategy.ReleaseLockAsync удалён параметр cancellationToken.
  110. Из API тестов удалены методы KrAssert.IsStageActive. Вместо них используйте методы KrAssert.StageHasState.
  111. Скоуп карточек IWorkflowEngineCardsScope при вызове метода Create теперь всегда создаёт новую область видимости карточек, а не использует ранее созданную при повторных вызовах. Для методов получения карточки из скоупа добавлен необязательный параметр, позволяющий получать карточку, как только из текущего скоупа, так и из цепочки родительских скоупов.
  112. Из метода ISessionActivityProvider.SetIsActiveAsync удалён параметр cancellationToken.

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

  1. Рабочие места:

    • AbTest (добавлено)

    • Administrator

    • User

      • Добавлен узел “Шаблоны согласования”.

      • Добавлен узел “Удалённые файлы” в режиме отбора.

      • Для узлов “Мои теги” и “Доступные теги” изменены настройки расширения CreateCardExtension.

      • Для узлов в папке “Диаграммы” удалено расширение ChartViewExtension.

      • Изменена локализация заголовков для узлов “Текущие задания” и “Завершённые задания” в папке “Отчеты”, и для узла “Просроченные задания” в папке “Диаграммы”.

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

    • AbCars (переименовано из Cars)

    • AbGroups (переименовано из Groups)

    • AbGroupsWithHierarchy (переименовано из GroupsWithHierarchy)

    • AbHierarchy (переименовано из Hierarchy)

    • AbResolutions (добавлено)

    • AbViewFiles (переименовано из ViewFiles)

    • AccessLevels

    • AccessTokens (добавлено)

    • AclForCard

    • AclGenerationRuleExtensions

    • AclGenerationRules

    • AcquaintanceHistory

    • AcquaintanceStates

    • ActionHistory

    • ActionHistoryTypes

    • ActionTypes

    • ActiveWorkflows

    • ApplicationArchitectures (удалено)

    • ApplicationNames

    • Applications

    • ApprovalProcessControlMethods (добавлено)

    • ApprovalProcessControlTypes (добавлено)

    • ApprovalProcessEditorRoles (добавлено)

    • ApprovalProcessInfoModes (добавлено)

    • ApprovalProcessStates (добавлено)

    • ApprovalProcessTemplates (добавлено)

    • AvailableApplications

    • AvailableDeputyRoles

    • AvailableDeputyUsers

    • BarcodeTypes

    • Bundles (добавлено)

    • BusinessProcessTemplates

    • BusinessProcessTileHandlers (добавлено)

    • ButtonToolbarVisibilityModes (добавлено)

    • CalendarCalcMethods

    • Calendars

    • CalendarTypes

    • CardTasks

    • CardTaskSessionRoles

    • CompletedTasks

    • CompletionOptionCards

    • CompletionOptions

    • ConditionTypes

    • ConditionUsePlaces

    • ContractsDocuments

    • CreateFileFromTemplate

    • Currencies

    • DashboardDisplayModes (добавлено)

    • DateFormats

    • Deleted

    • DeletedFiles (добавлено)

    • Departments

    • DeputiesManagement

    • DeviceTypes

    • DialogButtonTypes

    • DialogCardAutoOpenModes

    • DialogCardStoreModes

    • DocumentCategories

    • Documents

    • DocumentTypes

    • DurableRoles

    • EdsManagers

    • EmittedTasks

    • Errors

    • ErrorWorkflows

    • FileCategoriesAll

    • FileCategoriesFiltered

    • FileConverterTypes

    • FileLoadingTokensForCard (добавлено)

    • FileTemplates

    • FileTemplateTemplateTypes

    • FileTemplateTypes

    • FormatSettings

    • FunctionRoleCards

    • GetCardIDView (удалено)

    • GetFileNameView (удалено)

    • HelpSections

    • HelpSectionsGrouped

    • ImageModes

    • IncomingDocuments

    • KrActionTypes

    • KrCreateCardStageTypeModes

    • KrCycleGroupingModes

    • KrDocNumberRegistrationAutoAssigment

    • KrDocNumberRegularAutoAssigment

    • KrDocStateCards

    • KrDocStates

    • KrDocTypes

    • KrFilteredStageGroups

    • KrFilteredStageTypes

    • KrForkManagementStageTypeModes

    • KrManagerTasks

    • KrPermissionAclGenerationRules

    • KrPermissionFlags

    • KrPermissionRoles

    • KrPermissionRuleAccessSettings

    • KrPermissions

    • KrPermissionsControlTypes

    • KrPermissionsExtendedCards

    • KrPermissionsExtendedFiles

    • KrPermissionsExtendedMandatory

    • KrPermissionsExtendedTasks

    • KrPermissionsExtendedVisibility

    • KrPermissionsFileCheckRules

    • KrPermissionsFileEditAccessSettings

    • KrPermissionsFileReadAccessSettings

    • KrPermissionsMandatoryValidationTypes

    • KrPermissionsReport

    • KrPermissionStates

    • KrPermissionTypes

    • KrProcessManagementStageTypeModes

    • KrRouteModes

    • KrSecondaryProcesses

    • KrSecondaryProcessModes

    • KrSecondaryProcessTileHandlers (добавлено)

    • KrStageCommonMethods

    • KrStageGroups

    • KrStageRows

    • KrStageTemplateGroupPosition

    • KrStageTemplates

    • KrStageTypes

    • KrTypes

    • KrTypesEffective

    • KrTypesForDialogs

    • KrTypesForPermissionsExtension

    • KrVirtualFiles

    • Languages

    • LastTopics

    • LicenseTypes

    • LinkedDocuments

    • LoginTypes

    • MyAcquaintanceHistory

    • MyCompletedTasks

    • MyDocuments

    • MyTags

    • MyTasks

    • MyTopics

    • Notifications

    • NotificationSubscriptions

    • NotificationTypes

    • OcrLanguages

    • OcrOperations

    • OcrPatternTypes

    • OcrRecognitionModes

    • OcrRequests

    • OcrSegmentationModes

    • Operations

    • OutgoingDocuments

    • Palettes (добавлено)

    • Partitions

    • Partners

    • PartnersContacts

    • PartnersTypes

    • ProtocolCompletedTasks

    • ProtocolReportsWithPhoto

    • Protocols

    • RefDocumentsLookup

    • RefGroupModeEnum

    • RefGroups

    • RefGroupTypes

    • RefGroupValueTypesEnum

    • ReportCurrentTasksByDepartment

    • ReportCurrentTasksByDepUnpivoted

    • ReportCurrentTasksByUser

    • ReportCurrentTasksRules

    • ReportDocumentsByType

    • ReportPastTasksByDepartment

    • ReportPastTasksByUser

    • ReportPermissionsMyTasks (добавлено)

    • RoleDeputies

    • RoleDeputiesManagementDeputized

    • RoleDeputiesManagementDeputizedByDocTypes (добавлено)

    • RoleDeputiesNew

    • RoleDeputiesNewByDocTypes (добавлено)

    • RoleGenerators

    • Roles

    • RoleTypes

    • Sequences

    • Sessions

    • SignatureDigestAlgos

    • SignatureEncryptionAlgos

    • SignatureFileCategories

    • SignaturePackagings

    • SignatureProfiles

    • SignatureTypes

    • SmartRoleGenerators

    • SmartRoleMembers (добавлено)

    • SmartRoles (добавлено)

    • TagCards

    • Tags

    • TaskAssignedRoles

    • TaskAssignedRoleUsers

    • TaskFunctionRoles

    • TaskHistory

    • TaskHistoryGroupTypes

    • TaskKinds

    • TaskStates

    • TaskTypes

    • Templates

    • TileSizes (удалено)

    • TimeZones

    • TopicParticipants

    • TopicUsersForMention (добавлено)

    • TopicUsersForMentionAutocomplete (добавлено)

    • TwoFactorAuthAllowedTypes

    • TwoFactorAuthModes

    • TwoFactorAuthTypes

    • Types

    • Users

    • UsersBirthdays (добавлено)

    • UsersDetails (добавлено)

    • UsersDictionary (добавлено)

    • VatTypes

    • Views

    • WebApplications

    • WeTaskControlTypes

    • WeTaskGroupActionOptionTypes

    • WeTaskRoleSelectionModes (добавлено)

    • WfResolutionAuthors

    • WorkflowEngineCompiledBaseTypes

    • WorkflowEngineErrors

    • WorkflowEngineLogLevels

    • WorkflowEngineLogs

    • WorkflowEngineTaskActions

    • WorkflowEngineTileManagerExtensions

    • WorkflowLinkModes

    • WorkflowNodeInstanceSubprocesses

    • WorkflowNodeInstanceTasks

    • WorkflowSignalProcessingModes

    • WorkflowSignalTypes

    • Workplaces

  3. Таблицы:

    • AbCarAdditionalInfo (переименована из TEST_CarAdditionalInfo)

    • AbCarCustomers (переименована из TEST_CarCustomers)

    • AbCarMainInfo (переименована из TEST_CarMainInfo)

    • AbCarOwners (переименована из TEST_CarOwners)

    • AbCarSales (переименована из TEST_CarSales)

    • AbCustomerOperations (переименована из TEST_CustomerOperations)

    • AbPerformers (добавлена)

    • AbResolutions (добавлена)

    • AbResolutionStages (добавлена)

    • ActionHistory

    • ActionHistoryVirtual

    • ActionTypes

    • ApplicationArchitectures (удалена)

    • Applications

    • ApprovalProcessAction (добавлена)

    • ApprovalProcessActionApprovedLinks (добавлена)

    • ApprovalProcessActionDisapprovedLinks (добавлена)

    • ApprovalProcessActionRevokedLinks (добавлена)

    • ApprovalProcessControlAction (добавлена)

    • ApprovalProcessControlMethods (добавлена)

    • ApprovalProcessControlTypes (добавлена)

    • ApprovalProcessInfo (добавлена)

    • ApprovalProcessInfoApprovers (добавлена)

    • ApprovalProcessInfoModes (добавлена)

    • ApprovalProcessInfoTaskRoles (добавлена)

    • ApprovalProcessInfoTasks (добавлена)

    • ApprovalProcessInstanceNodes (добавлена)

    • ApprovalProcessInstances (добавлена)

    • ApprovalProcessSettings (добавлена)

    • ApprovalProcessStates (добавлена)

    • ApprovalProcessTasks (добавлена)

    • ApprovalProcessTemplates (добавлена)

    • ApprovalProcessTemplateTypes (добавлена)

    • ApprovalProcessTemplateUsers (добавлена)

    • ApprovalProcessTemplateWriters (добавлена)

    • BackgroundColors (удалена)

    • BlockColors (удалена)

    • Bundles (добавлена)

    • BusinessProcessButtons

    • BusinessProcessButtonsVirtual

    • BusinessProcessButtonToolbarVisibilityModes (добавлена)

    • CompletionOptions

    • CustomBackgroundColorsVirtual (удалена)

    • CustomBlockColorsVirtual (удалена)

    • CustomForegroundColorsVirtual (удалена)

    • DashboardDisplayModes (добавлена)

    • Dashboards (добавлена)

    • DashboardTypes (добавлена)

    • DeletedFiles (добавлена)

    • DeletedFileSignatures (добавлена)

    • DeletedFileVersions (добавлена)

    • DeletedPdfAnnotations (добавлена)

    • FileCategories

    • Files

    • FileVersions

    • FmAttachments

    • FmMessages

    • FmNotifications (удалена)

    • FmNotificationSettingsVirtual (добавлена)

    • FmTopicParticipantRoles

    • FmTopicParticipantRolesUnsubscribed

    • FmTopicParticipants

    • FmTopics

    • FmUserSettingsVirtual (удалена)

    • FmUserStat

    • ForegroundColors (удалена)

    • FunctionRoles

    • FunctionRolesVirtual

    • Instances

    • KrAddFromTemplateSettingsVirtual

    • KrAdditionalApproval

    • KrAmendingActionVirtual

    • KrApprovalActionVirtual

    • KrApprovalProcessManagementSettingsVirtual (добавлена)

    • KrApprovalProcessSettingsVirtual (добавлена)

    • KrApprovalSettingsVirtual

    • KrCardGeneratorVirtual (удалена)

    • KrEditSettingsVirtual

    • KrPermissionExtendedFileRules

    • KrPermissions

    • KrProcessStageTypes

    • KrRequestComment

    • KrSecondaryProcesses

    • KrSettingsCycleGroupingTaskHistoryGroupTypes (добавлена)

    • KrSigningActionVirtual

    • KrSigningStageSettingsVirtual

    • KrUniversalTaskActionButtonTaskRolesVirtual (добавлена)

    • KrUniversalTaskOptions

    • KrUserSettingsVirtual (удалена)

    • NestedRoles

    • NormalizationSources (добавлена)

    • OcrMappingComplexFields (удалена)

    • OcrMappingFields (удалена)

    • OcrOperations

    • OnlyOfficeSettings

    • Palettes (добавлена)

    • PersonalRoles

    • PersonalRoleSatellite

    • PersonalRoleUnsubscribedTypesVirtual (переименована из PersonalRoleUnsubscibedTypesVirtual)

    • Roles

    • Scheme

    • ServerInstances

    • Sessions

    • SignatureSettings

    • SmartRoles

    • Tags

    • TaskAssignedRoles

    • TaskCommonInfo

    • Tasks

    • TileSizes (удалена)

    • Tokens (добавлена)

    • UserAvatarCache (добавлена)

    • UserPalettesVirtual (добавлена)

    • UserSettingsVirtual

    • Views

    • WeAddFileFromTemplateAction

    • WebClientRoles (удалена)

    • WeNotificationTaskRoles (добавлена)

    • WeTaskActionCompletionNotifications (добавлена)

    • WeTaskActionNotificationRoles

    • WeTaskActionNotifications (добавлена)

    • WeTaskActionTaskRoleRoles (добавлена)

    • WeTaskActionTaskRoles (добавлена)

    • WeTaskControlAction

    • WeTaskGroupAction

    • WeTaskRoleSelectionModes (добавлена)

    • WeTaskRolesToRemove (добавлена)

    • WeTimerAction

    • WfTaskCardsVirtual

    • WidgetOriginEditors (добавлена)

    • Widgets (добавлена)

    • WidgetTemplates (добавлена)

    • WidgetTemplatesAdministrators (добавлена)

    • WidgetTemplatesEditors (добавлена)

    • WidgetTemplatesKinds (добавлена)

    • WidgetTemplatesReaders (добавлена)

    • WorkflowEngineTaskActions

    • WorkflowEngineTimerSubscriptions

    • WorkflowInLinks

    • WorkflowLinks

    • WorkflowSignalTypes

  4. Функции:

    • CalendarAddWorkingDaysToDate

    • CalendarAddWorkingDaysToDateExact

    • CalendarAddWorkQuants

    • CalendarGetDateDiff

    • CalendarGetDayOfWeek

    • CalendarGetFirstQuantStart

    • CalendarGetLastQuantEnd

    • CalendarGetPlannedByWorkingDays

    • CalendarIsWorkTime

    • DateTruncUtc

    • FormatAmount

    • GetAggregateRoleUsers

    • GetString

    • GetTimeIntervalLiteral

    • Localization

    • Localize

    • TryCastAsBigint (добавлена)

  5. Миграции:

    • Platform
  6. Библиотеки схемы:

    • AbTest (добавлена)

    • Acl

    • ApprovalProcess (добавлена)

    • Default

    • FullTextSearch

    • Ocr

    • Standard solution

    • Workflow

  7. Типы:

    • AbCar (переименован из Car)

    • AbCardGenerator (добавлен)

    • AbCarExternalSystemRequest (переименован из Car1CDialog)

    • AbCarTableRequest (добавлен)

    • AbCarViewParameters (переименован из CarViewParameters)

    • AbExampleDialogSatellite (переименован из KrExampleDialogSatellite)

    • AbResolution (добавлен)

    • AbTask1 (переименован из TestTask1)

    • AbTask2 (переименован из TestTask2)

    • AccountUserSettings

    • AclGenerationRule

    • ActionHistoryRecord

    • AdSync

    • ApiAccessTokensDialog (добавлен)

    • Application

    • ApprovalProcessInfo (добавлен)

    • ApprovalProcessSettings (добавлен)

    • ApprovalProcessTemplate (добавлен)

    • ApprovalProcessTemplates (добавлен)

    • AuthorCondition

    • AutoCompleteDialogs

    • AvatarUserSettings (добавлен)

    • BusinessProcessTemplate

    • Calendar

    • CalendarCalcMethod

    • CardTasksEditorDialog

    • CompletionOption

    • ConditionsBase

    • ConditionType

    • ContextRole

    • Contract

    • CreateFileFromTemplate

    • CreateFileTempLink (добавлен)

    • Currency

    • Dashboard (добавлен)

    • DefaultCalendarType

    • Deleted

    • DepartmentCondition

    • DepartmentRole

    • Dialogs

    • DocLoad

    • DocStateCondition

    • DocTypeCondition

    • Document

    • DocumentCategory

    • DynamicRole

    • EmptyCondition

    • Error

    • FieldChangedCondition

    • File

    • FileCategory

    • FileConverterCache

    • FilePreviewDialog

    • FileSatellite

    • FileTemplate

    • FormatSettings

    • ForumSatellite

    • FunctionRole

    • GeneralUserSettings

    • HelpSection

    • HelpSectionDialogs

    • ImageModes

    • Incoming

    • InitiatorCondition

    • KrAcquaintanceAction

    • KrAcquaintanceStageTypeSettings

    • KrAddFileFromTemplateStageTypeSettings

    • KrAdditionalApproval

    • KrAmendingAction

    • KrApprovalAction

    • KrApprovalProcessManagementStageTypeSettings (добавлен)

    • KrApprovalProcessStageTypeSettings (добавлен)

    • KrApprovalStageTypeSettings

    • KrApprove

    • KrAuthorSettings

    • KrCard

    • KrChangeStateAction

    • KrChangeStateStageTypeSettings

    • KrCheckStateWorkflowTileExtension

    • KrCreateCardStageTypeSettings

    • KrDeregistrationAction

    • KrDialogStageTypeSettings

    • KrDocState

    • KrDocType

    • KrEdit

    • KrEditInterject

    • KrEditStageTypeSettings

    • KrForkManagementStageTypeSettings

    • KrForkStageTypeSettings

    • KrHistoryManagementStageTypeSettings

    • KrInfoForInitiator

    • KrNotificationStageTypeSettings

    • KrPerformersSettings

    • KrPermissions

    • KrProcessManagementStageTypeSettings

    • KrRegistration

    • KrRegistrationAction

    • KrRegistrationStageTypeSettings

    • KrRequestComment

    • KrResolutionAction

    • KrResolutionStageTypeSettings

    • KrRouteInitializationAction

    • KrSamplePermissionsExtensionType

    • KrSatellite

    • KrSecondaryProcess

    • KrSecondarySatellite

    • KrSettings

    • KrShowDialog

    • KrSigning

    • KrSigningAction

    • KrSigningStageTypeSettings

    • KrStageCommonMethod

    • KrStageGroup

    • KrStageTemplate

    • KrStateExtension

    • KrTaskKindSettings

    • KrTaskRegistrationAction

    • KrTemplateCard

    • KrTypedTaskStageTypeSettings

    • KrUniversalTask

    • KrUniversalTaskAction

    • KrUniversalTaskStageTypeSettings

    • KrUserSettings (удалён)

    • KrVirtualFile

    • LanguageAndFormattingUserSettings

    • License

    • LocalizationDialogs

    • MetadataEditor

    • Metarole

    • NestedRole

    • Notification

    • NotificationSubscriptions

    • NotificationType

    • NotificationUserSettings

    • OcrOperation

    • OcrRequestDialog

    • OcrSettings

    • OnlyOfficeSettings

    • OpenInModalDialogSettings

    • Operation

    • Outgoing

    • Partner

    • PartnerCondition

    • PersonalizationUserSettings

    • PersonalRole

    • PersonalRoleSatellite

    • Protocol

    • RefGroup

    • RefGroupType

    • ReportPermissions

    • RoleDeputiesManagement

    • RoleGenerator

    • RouteCondition

    • RowAddedCondition

    • RowDeletedCondition

    • SelectTag

    • Sequence

    • ServerInstance

    • ShowDialog

    • SignatureSettings

    • SmartRole

    • SmartRoleGenerator

    • StaticRole

    • Tag

    • TagCondition

    • TaskAssignedRoleEditor

    • TaskAssignedRoles

    • TaskChangedCondition

    • TaskHistoryGroupType

    • TaskKind

    • TaskRole

    • TaskTypeCondition

    • Template

    • TemplateFile

    • TileUserSettings (удалён)

    • TimeZones

    • TopicDialogs

    • TopicTabs

    • TwoFactorAuthTotpSettings

    • TwoFactorAuthUserSettings

    • UserSettingsSystemType

    • View

    • ViewExtensions

    • ViewInformationLabelSettings (добавлен)

    • VirtualScheme

    • WebApplication

    • WfResolution

    • WfResolutionChild

    • WfResolutionControl

    • WfResolutionProject

    • WfSatellite

    • WfTaskCard

    • WorkflowActionEditor

    • WorkflowActionInstanceEditor

    • WorkflowAddFileFromTemplateAction

    • WorkflowAndAction

    • WorkflowApprovalProcessAction (добавлен)

    • WorkflowApprovalProcessControlAction (добавлен)

    • WorkflowCheckRolesForExecutionTileExtension

    • WorkflowCommandAction

    • WorkflowConditionAction

    • WorkflowCreateCardAction

    • WorkflowDialogAction

    • WorkflowEndAction

    • WorkflowEngineSettings

    • WorkflowHistoryManagementAction

    • WorkflowLinkEditor

    • WorkflowNewItemEditor

    • WorkflowNodeEditor

    • WorkflowNodeInstanceEditor

    • WorkflowNotificationAction

    • WorkflowOutdatedAction (добавлен)

    • WorkflowProcess

    • WorkflowProcessEditor

    • WorkflowProcessInstanceEditor

    • WorkflowScenarioAction

    • WorkflowSendSignalAction

    • WorkflowStartAction

    • WorkflowSubprocessAction

    • WorkflowSubprocessControlAction

    • WorkflowTaskAction

    • WorkflowTaskControlAction

    • WorkflowTaskGroupAction

    • WorkflowTaskGroupControlAction

    • WorkflowTimerAction

    • WorkflowTimerControlAction

    • Workplace

  8. Карточки:

    • Acquaintance

    • AcquaintanceType

    • Active Directory Sync (settings)

    • Addendum

    • AdditionalApprovalCompletedNotification

    • AdditionalApprovalCompletedNotificationType

    • AdditionalApprovalNotification

    • AdditionalApprovalNotificationType

    • Approval process settings (settings) (добавлена)

    • Approval

    • ApprovalCycle

    • ApprovalGroup

    • ApprovalHistory

    • ApprovalHistoryCondition

    • ApprovalSchemeTemplate (добавлена)

    • ApprovedNotification

    • ApprovedNotificationType

    • Assigned to me (Excel)

    • Assigned to me

    • AuthorCondition

    • Business process designer (settings)

    • CancelButton

    • CardCreatedCondition

    • CardDeletedCondition

    • CardType

    • CommentNotification

    • CommentNotificationType

    • Continuous document load (settings)

    • Contract

    • Default access rules

    • Default acquaintance access rule

    • DefaultCalendar

    • DefaultWeek_Type

    • DepartmentCondition

    • DeregisterButton

    • Directive

    • DiscussionParticipant (добавлена)

    • DocStateCondition

    • DocTypeCondition

    • Document

    • DocumentState

    • DocumentType

    • EditTemplate

    • FieldChangedCondition

    • File cache (settings)

    • ForumNewMessagesNotification

    • ForumUserHasBeenAddedNotification (добавлена)

    • ForumUserHasBeenAddedNotificationType (добавлена)

    • ForumUserMentionNotification (добавлена)

    • ForumUserMentionNotificationType (добавлена)

    • HasAccessibleTag

    • IAmModerator

    • Incoming

    • InitiatorCondition

    • License (settings)

    • ModifyTaskAssignedRolesButton

    • NewIterationTemplate

    • Official note

    • Order

    • Other

    • Outgoing

    • PartnerCondition

    • PasswordExpires

    • PostgreSql/Acquaintance

    • PostgreSql/Aggregate roles

    • PostgreSql/All employees

    • PostgreSql/Author of document

    • PostgreSql/CardType

    • PostgreSql/Creator of card

    • PostgreSql/DocumentState

    • PostgreSql/DocumentType

    • PostgreSql/Initiator

    • PostgreSql/Registrator of document

    • PostgreSql/Supervisor of initiator

    • PostgreSql/TaskType

    • PrintableApprovalHistory

    • Protocol of the meeting (Excel)

    • Protocol of the meeting

    • ProtocolBranchPure

    • ProtocolDecisions

    • RebuildButton

    • RegisterButton

    • Registrators

    • RejectButton

    • ReturnForAmendingTemplate

    • ReturnFromPostponeNotification

    • ReturnFromPostponeNotificationType

    • Roles/Acquaintance

    • Roles/Aggregate roles

    • Roles/All employees

    • Roles/Author of document

    • Roles/Computed performers

    • Roles/Creator of card

    • Roles/Initiator

    • Roles/Registrator of document

    • Roles/Registrators

    • Roles/Supervisor of initiator

    • RouteCondition

    • RowAddedCondition

    • RowDeletedCondition

    • SendProtocolTasksButton

    • Server settings (settings)

    • Signature settings (settings)

    • Standard solution (settings)

    • StartProcessButton

    • StartProcessByApprovalSchemeButton (добавлена)

    • System

    • TagCondition

    • TaskChangedCondition

    • TaskNotification

    • TaskNotificationType

    • Tasks

    • TasksNotification

    • TasksNotificationType

    • TaskType

    • TaskTypeCondition

    • Text recognition settings (settings)

    • Time zones (settings)

    • UpdateKeysNotification

    • VirtualFiles/ApprovalHistory

    • WfChildResolutionNotification

    • WfChildResolutionNotificationType

    • WfRevokeNotification

    • WfRevokeNotificationType

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

Back to top