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

Версия 4.0 (21.01.2024)

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

  1. Реализована поддержка двухфакторной аутентификации при входе в систему в качестве дополнительного уровня безопасности. В web-клиенте двухфакторная аутентификация пользователей поддерживается на экране входа в систему, если не подключён вход через SAML. Другие клиенты (desktop-клиенты, консольные утилиты, интеграции и микросервисы) не поддерживают вход для учётных записей, в настройках которых включена двухфакторная аутентификация.
  2. В шаблоны файлов в формате docx добавлена возможность выделить часть документа с помощью примечания с записанным в нём условием, которое определяет, должен ли выделенный блок документа попасть в итоговый файл или нет. Подробнее см. раздел Блоки с условиями в шаблонах файлов в формате docx.
  3. Новый дизайн web-клиента, переработаны UI и UX всех элементов интерфейса.
  4. Добавлена поддержка нескольких календарей. Обратитесь к разделу документации Календари.
  5. Добавлена система контекстной справки для элементов управления (по кнопке со знаком вопроса рядом с заголовком) и для карточек (по кнопке на тулбаре). Подробное описание доступно в руководстве администратора в разделе Контекстная справка в карточках.
  6. В карточке “Настройки сервера” поле “Ссылка на веб-страницу с документацией по системе” заменено на поле “Документация по системе”. В нём можно указать как ссылку на веб-страницу, так и код раздела справки или идентификатор открываемой карточки.
  7. Добавлена трассировка и мониторинг функциональности сервиса web посредством специального сервиса monitor.
  8. Добавлены средства обнаружения компонентов и взаимодействия с ними посредством специальных команд, которые могут отправляться из консольной утилиты tadmin и других компонентов.
  9. Добавлена функциональность OCR (Optical Character Recognition). Она позволяет выполнять распознавание текста в файлах изображений, извлечение распознанного текста и формирование файла PDF из изображений с невидимым текстовым слоем. Подробное описание находится в разделе документации OCR.
  10. Добавлена возможность редактировать и комментировать аннотации PDF в web-клиенте, используя пункт контекстного меню “Аннотации” на PDF-файле при наличии прав на редактирование. Также имеется возможность добавлять в документ PDF факсимиле и штампы посредством пункта меню “Факсимиле и штампы”(../../usr/user/pdf_anns.md).
  11. Добавлена поддержка тегов для карточек и представлений. Описание находится в разделе документации Теги карточки.
  12. В системе появилась возможность автоматизированного перехода в режим технического обслуживания и выхода из него. При этом всем пользователям, работающим с web-клиентом или desktop-клиентом, будет предоставлено детализированное описание, что система находится в состоянии технического обслуживания, включая сроки его проведения. Выводимая пользователям страница с описанием причин временной недоступности системы может быть настроена под нужды каждого конкретного проектного решения с использованием корпоративных логотипов, цветовых схем, шаблонов форматирования и разметки страниц. Подробнее об этой возможности читайте в разделе “Режим технического обслуживания системы”.
  13. В карточке “Шаблон файла” добавлен флаг “Преобразовать в PDF”. Он позволяет при генерации файла по шаблону автоматически конвертировать его в .pdf.
  14. В контекстное меню файлов добавлен вариант “Преобразовать файл в PDF и заменить”.
  15. В web-клиенте добавлена возможность переключать режим просмотра PDF-документа с постраничного на режим с прокруткой страниц.
  16. В desktop-клиенте для встроенного предпросмотра файлов .pdf/.tiff добавлена возможность просматривать документ со сплошной прокруткой между страницами (используется по умолчанию). Доступны кнопки переключения в полноэкранный режим и в постраничное отображение.
  17. Добавлено два новых типа конвертации в PDF, задаваемого в карточке “Настройки сервера”: сервис конвертации Р7-Офис / OnlyOffice, Р7-офис / OnlyOffice Document Builder.
  18. Добавлена возможность совместного редактирования файлов, объединения/сравнения файлов при использовании Р7-Офис / OnlyOffice.
  19. Добавлена поддержка приложения-ассистента DeskiMobile для подписания ЭП в web-клиенте с использованием токенов РуТокен на мобильных устройствах. Поддерживаются варианты токенов NFC, Bluetooth, USB. Приложение устанавливается из магазинов приложений для Android, iPhone, iPad. В карточку “Настройки сервера” добавлен флаг “Использовать мобильный ассистент DeskiMobile” и настройка “Время жизни JWT токена DeskiMobile”.
  20. Добавлена поддержка параметров форматирования дат и чисел. В правой боковой панели для плитки “Мои настройки” добавлены выпадающие плитки “Форматирование дат и чисел”, посредством которых пользователь может выбрать другие параметры. Выбор языка интерфейса перенесён в дочернюю группу плиток “Язык интерфейса”. Администратор может указать параметры в карточке сотрудника в поле “Форматирование дат и чисел”. Для использования в почтовых уведомлениях в карточке настроек “Типовое решение” добавлено поле “Настройки форматирования дат и чисел в уведомлениях по умолчанию”. Создание и настройка параметров форматирования доступна в рабочем месте “Администратор” в узле “Форматирование дат и чисел”. По умолчанию в библиотеку карточек Platform добавлены параметры форматирования для русского ru и английского en языков (они автоматически создаются при использовании скриптов установки и обновления setup/upgrade).
  21. Для контрола “Дата и время” флаги “Дата” и “Время” заменены на настройку “Тип” со значениями: “дата и время”, “дата”, “время”, “интервал”. Значение “интервал” позволяет выводить время в 24-часовом формате, что актуально для вывода интервалов времени меньше 24 часов.
  22. В настройки контролов “Строка” и “Текст с форматированием” добавлен признак “Проверять орфографию” (по умолчанию отключён), при включении которого выполняется проверка орфографии в соответствии с текущей языковой культурой пользователя.
  23. Для контрола “Представление” в контекстном меню на заголовках колонок добавлена возможность скрывать колонки, а также сохранять и сбрасывать настройки по аналогии с тем, как это функционирует в рабочих местах. Для сохранения настроек требуется установить флаг “Разрешить сохранение настроек” в настройках контрола в TessaAdmin.
  24. Добавлена возможность настройки базы данных для хранения истории действий через карточку настроек сервера, при этом можно указать несколько баз данных. Подробнее в разделе Настройки базы данных для истории действий.
  25. В форумах (обсуждениях) и контролах “Текст с форматированием”, “Метка”, “Текст” добавлена поддержка эмодзи. Обратитесь к разделу документации Работа с обсуждениями, а также в разделы с настройками контролов: Метка, Текст.
  26. Добавлена поддержка зависимостей между языками локализации, где один язык может иметь fallback на другой, что позволяет не переводить на него все строки локализации платформы: непереведённые строки будут отображаться в fallback-языке (например, можно добавить белорусский язык, который будет иметь fallback на русский). Для этого в схеме в таблице Languages для нового языка в колонке FallbackCode надо прописать код fallback-языка (значение его колонки Code). Подробнее о работе с локализацией можно ознакомиться в Разделе “Локализация”.
  27. Добавлена функциональность ACL. Она позволяет формировать списки доступа к карточкам системы с возможностью настройки динамической выдачи доступа с помощью правил. Данные списки могут использоваться для определения доступа к объектам системы при написании представлений для получения максимальной гибкости и производительности.
  28. Добавлена функциональность “Умные роли”. Она позволяет настраивать в системе роли, состав которых формируется на основе других ролей системы, а список сотрудников автоматически пересчитываться при изменении состава этих ролей, а также при срабатывании настроенных для этого триггеров. Подробнее функциональность описана в документации администратора в разделе “Умные роли”.
  29. Добавлен новый режим работы подсистемы замещений. В новом режиме работы системы замещений теперь нет разделения заместителей по ролям, но система поддерживает заместителей второго уровня (т.е. заместители заместителей). В новом режиме работы подсистемы замещений не используется промежуточная таблица RoleDeputies, в которой содержится набор заместителей по ролям. В карточку “Настройки сервера” добавлена возможность переключения режима замещения.
  30. Добавлен новый вид замещения “По типу документа”. В настройки замещения сотрудников добавлена возможность указания заместителей по типу документа. В новом режиме работы подсистемы замещений также поддерживается работа заместителей по типу документа второго уровня.
  31. В настройки карточек ролей добавлен флаг “Отключить замещения”, который позволяет отключать замещения для данных ролей. Для ролей с отключенным замещениями настройки заместителей не будут применяться. Для статических ролей, подразделений, динамических ролей и контекстных ролей данный флаг можно редактировать. Для временных, умных, метаролей и вложенных ролей данный флаг наследуется от источника генерации роли. Подробности доступны в разделе документации Отключение замещений.
  32. Разработаны функциональные роли заданий (ФРЗ) - это настройка способов взаимодействия пользователей с заданием (доступных вариантов завершения) в соответствии с их вхождением в функциональные роли (ФР). Автор и исполнитель задания - это функциональные роли, которые присутствуют в системе по умолчанию. Система позволяет расширять набор ФР: руководитель, контролёр, администратор безопасности и др. С каждой ФР может быть связано несколько ролей, например, у задания несколько авторов. Подробнее функциональность описана в документации администратора в разделе “Функциональные роли заданий”.
  33. Появилась возможность просматривать и редактировать участников задания через диалог, который вызывается кликом на роль в контроле с информацией о задании. Ранее это действие открывало карточку роли. В диалоге есть возможность удалить участника, добавить участника и изменить участника с признаком “Мастер”. Относительно последнего считается временная зона и календарь для задания. Также, из этого диалога возможно вернуть задание на роль.
  34. Изменена логика видимости заданий. Теперь задание не будет видно пользователю, если оно у сотрудника в работе, но он не присутствует в списке связанных с заданием ролей (списке ФРЗ). Задания, взятые в работу другими сотрудниками, теперь видны как “скрытые по умолчанию” всем участникам задания. Участники задания теперь могут “Перевести на себя” задание, взятое в работу другим сотрудником.
  35. Появилась возможность просматривать и редактировать участников любого задания через диалог, вызываемый по кнопке “Изменить роли заданий”. Кнопка работает при наличии права “Редактирование ФРЗ всех заданий” и отображает диалог со списком всех заданий по карточке. Двойной клик по заданию вызывает диалог, аналогичный диалогу, который вызывается кликом на роль в контроле с информацией о задании.
  36. В представлении “Мои задания” добавлен параметр “Показывать задания, взятые в работу не мной”. Он позволяет отобразить в результатах карточки, в которых есть задания с участием текущего сотрудника, но взятые в работу другим сотрудником.
  37. В карточке “Правило доступа” добавлены флаги “Редактирование ФРЗ своих заданий” и “Редактирование ФРЗ всех заданий”. Пользователь, на которого распространяется работа правила с разрешением “Редактирование ФРЗ своих заданий”, может менять список участников задания, даже если не включён в функциональную роль с флагом “Разрешает изменять список ролей своего задания”. Пользователь, на которого распространяется работа правила с разрешением “Редактирование ФРЗ всех заданий”, может менять список участников любого задания при помощи специального диалога, вызываемого по кнопке “Изменить роли заданий”.
  38. В правило доступа добавлены флаги “Чтение обсуждений” и “Чтение и отправка сообщений”, которые позволяют назначить доступ на чтение всех топиков в карточке с опциональным разрешением на отправку сообщений во все топики, независимо от вхождения в участники топика.
  39. В правилах доступа в расширенные настройки доступа к файлам добавлена поддержка приоритетов. Теперь более приоритетные настройки будут переопределять менее приоритетные, если они применимы к одному и тому же файлу.
  40. В правилах доступа в расширенные настройки доступа к файлам добавлена возможность управлять доступом на редактирование, удаление и подписание файлов.
  41. В правилах доступа в расширенные настройки доступа к файлам флаг “Проверять доступ к собственным файлам” заменён на выпадающий список “Правило проверки файлов”. Старые настройки флага мигрируют на новые при выполнении скриптов миграции.
  42. В web-клиенте добавлена возможность импорта/экспорта поисковых запросов.
  43. В рабочем месте “Администратор” представления перегруппированы по папкам в соответствии с их назначением. Папки “Типовое решение” и “Прочее” удалены, их содержимое перемещено в другие папки.
  44. Реализована поддержка автоматизации Microsoft UI Automation для приложения TessaClient. Добавлена возможность запускать автоматизированные тесты UI с использованием библиотеки Winium. Обратитесь к разделу руководства.
  45. Улучшена поддержка запуска desktop-приложений TESSA в ОС Linux под Wine. Подробнее описано в разделе документации Запуск desktop-приложений TESSA на Linux с использованием Wine.
  46. В руководство разработчика добавлен раздел Разработка в ОС Linux, в котором описывается настройка рабочего места под управлением ОС Linux и инициализация репозитория для ведения разработки проектных решений на платформе TESSA.
  47. В руководство по установке в разделе “Установка платформы TESSA в среде управления контейнерами Docker” добавлен раздел Создание образов Docker с использованием дистрибутива TESSA alpine-redist. Это позволяет создать собственные образы Docker с установленной TESSA требуемой версии без использования образов, опубликованных в Docker Hub.

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

  1. В конструкторе бизнес-процессов в действии “Подписание” добавлена возможность привязки для параметра “Разрешить дополнительное согласование”.
  2. В файлах app.json для всех сервисов и приложений теперь указано включение содержимого файлов app-*.json, причём их содержимое переопределит строки в app.json, расположенные по тем же ключам. Это позволяет удобно создавать и подключать файлы вида app-mapping.json, содержащие специфичные настройки, которые могут, например, применяться для одного сервера и не применяться для другого.
  3. В файлах app-*.json и в других файлах, которые объединяются с конфигурационными файлами app.json для всех сервисов и приложений, укажите ключ с суффиксом !!, например, ConnectionStrings!!, чтобы перезаписать значение по этому ключу вместо объединения значений.
  4. В файлах app.json добавлена возможность в проверках ".if" указывать переменные окружения. Если указать только имя переменной, например, "VS140COMNTOOLS", то, как и для символов windows/linux, проверяется их наличие или отсутствие "!VS140COMNTOOLS". Через знак равенства можно проверить значение переменной: "ASPNETCORE_ENVIRONMENT=Development", для проверки неравенства укажите "!ASPNETCORE_ENVIRONMENT=Production".
  5. В файле app.json для веб-сервиса и для Chronos доступен опциональный раздел "FileSourceOverrides" в группе "Settings", в котором можно переопределить настройки файловых хранилищ, указанные в карточке “Настройки сервера”, в т.ч. пути, по которым доступны файловые папки. Примеры и информация по настройкам доступны в руководстве разработчика в разделе “Изменение настроек файловых хранилищ через конфигурационный файл”.
  6. В файле app.json для TessaClient добавлено свойство "FilePreview64Bit", в котором по расширению файла указывается разрядность приложения предпросмотра (false - 32-битный предпросмотр, true - 64-битный предпросмотр). Если разрядность не указана, то она определяется автоматически (по ключам реестра), и если не удалось найти информацию по разрядности, то по умолчанию разрядность выставляется в соответствии с настройкой "UseFilePreview64Bit".
  7. В диалог импорта рабочих мест в TessaAdmin добавлен флажок “Удалить перед импортом все рабочие места из базы данных”, при установке которого перед импортом будет очищен текущий справочник рабочих мест.
  8. В карточку вторичного процесса добавлен параметр “Не отображать сообщение при отсутствии этапов, доступных для выполнения”.
  9. В тип карточки теперь можно добавить секцию без колонок. Для этого в узле “Секции” на вкладке “Карточки” в TessaAdmin укажите системную колонку “ID” и не добавляйте других колонок. Для строковой секции будет добавляться строка в базу данных для каждого экземпляра карточки. Таким образом, возможно заранее добавить секции в тип, поля в которых появятся позднее, без необходимости мигрировать данные в существующих карточках.
  10. Контрол “Строка” теперь позволяет редактировать колонки типа Guid.
  11. Если для элемента управления указана всплывающая подсказка, то рядом с заголовком также выводится знак вопроса, для которого отображается та же подсказка, что и для самого элемента управления.
  12. В комментарий SQL-запроса при выборке данных для представления добавлена информация о наличии прав администратора у текущего пользователя.
  13. В маршрутах в этапе “Настраиваемое задание” удалено поле “Вид (устаревшее)”.
  14. В web-клиенте добавлена возможность открытия выпадающего списка автокомплита с помощью стрелок вверх/вниз на клавиатуре.
  15. Во встроенном предпросмотре PDF для desktop-клиента улучшена навигация: при прокрутке колесом мыши до верхнего или нижнего края страницы, она автоматически перелистывается. Аналогично при управлении с клавиатуры клавишами / и PageUp/PageDown. Также при переходе на новую страницу она теперь всегда прокручивается по вертикали наверх. Поведение можно отключить из расширений установкой свойства IFilePagingControlModel.ChangePagesOnScroll.
  16. В файлах NLog.config для всех сервисов и приложений теперь указано включение содержимого файлов NLog-*.config. Это позволяет удобно настраивать логирование со специфичными настройками, которые могут, например, применяться для одного сервера и не применяться для другого.
  17. Добавлено логирование ошибок при выполнении представлений с созданием карточки ошибки. Для отключения логирования ошибки необходимо в запросе ITessaViewRequest указать значение свойства SkipErrorLogging равным true. Для сессий пользователей без прав администратора значение игнорируется.
  18. Реализовано дублирование полей с состоянием документов StateID/StateName в секции DocumentCommonInfo. Это позволяет оптимизировать SQL-запросы, использующие состояние документов, у которых имеется эта секция. Дублирование включено для типов карточек из типового решения: Contract, Document, Incoming, Outgoing, Protocol. Для дублирования состояния необходимо включить в тип карточки колонки DocumentCommonInfo.StateID и StateName, после чего изменение состояния должно выполняться посредством метода IKrDocumentStateManager.SetStateAsync. Более подробная информация содержится в руководстве разработчика в разделе “База знаний” в п. “Изменение состояния карточки, которое было добавлено в таблицу-перечисление KrDocState”.
  19. В TessaAdmin на вкладке “Карточки” добавлена фильтрация по имени типа.
  20. В файле app.json веб-сервиса добавлен раздел ResponseHeaders, в котором можно перечислить значения заголовков, передаваемых в каждый ответ на запрос. По умолчанию указаны заголовки X-Frame-Options и X-XSS-Protection, это улучшает противодействие некоторым видам атак. Вы можете настроить поведение в app.json.
  21. В файлах app.json допустимо использовать комментарии. Они задаются как в C# (без кавычек): // comment или /* multiline comment */.
  22. В файл app.json веб-сервиса добавлена настройка SessionExpirationTimeSpan, посредством которой можно управлять максимальным сроком жизни сессии. Desktop-клиенты (TessaClient, TessaAdmin, TessaAppManager) пересоздают сессию, когда срок её жизни подходит к концу, тогда как для web-клиента срок определяет, сколько времени может использоваться токен сессии в cookies перед тем, как пользователю будет отображено окно логина. По умолчанию 7 дней.
  23. В файл app.json веб-сервиса добавлена настройка CookiesSameSite, определяющая параметры cookies, создаваемых при логине, для разрешения или запрета их отправки при выполнении cross site запросов.
  24. В файл app.json веб-сервиса добавлена настройка AllowedRefererValues, в которой можно перечислить допустимые значения HTTP-заголовка Referer, которые проверяются на каждый запрос. При проверке актуальное значение заголовка должно начинаться с подстроки, указанной в этом списке, без учёта регистра. Используйте эту настройку для противодействия CSRF-атакам.
  25. В файл app.json сервиса Chronos добавлена настройка Maintenance.RemoveExpiredSessionsOlderThanDays, в которой указывается количество дней перед тем, как сессия, срок жизни которой истёк, будет закрыта (удалена). Удаление запускается ежедневно вместе с другими плагинами группы Maintenance. Если указать неположительное число дней, то сессии не будут удаляться по этому признаку. По умолчанию сессии закрываются спустя 1 день после окончания срока жизни. Укажите 0, чтобы сессии могли удаляться сразу после окончания срока жизни.
  26. В файл app.json сервиса Chronos добавлена настройка Maintenance.RemoveInactiveSessionsOlderThanDays, в которой указывается количество дней неактивности, по истечении которых открытые сессии удаляются. Удаление запускается ежедневно вместе с другими плагинами группы Maintenance. Если указать неположительное число дней, то сессии не будут удаляться по этому признаку. По умолчанию сессии закрываются спустя 8 дней неактивности, как это работало в предыдущих версиях системы, но без возможности выполнить настройку.
  27. В файл app.json веб-сервиса добавлена настройка HstsMaxAgeDays в группе WebServer. В ней указывается количество дней, на которые браузер будет запоминать, что к серверу обращение выполняется по HTTPS (заголовок Strict-Transport-Security, атрибут max-age).
  28. После смены пароля в web-клиенте теперь выполняется закрытие сессии, и пользователю отображается окно логина. Это требуется для обеспечения безопасности, чтобы предыдущую сессию нельзя было использовать, если каким-то образом токен сессии был получен злоумышленником. Для desktop-клиентов сессия пересоздаётся без закрытия приложения, незаметно для пользователя.
  29. Если в системе включены настройки безопасности на количество попыток и/или серию попыток по неудачному вводу пароля, то эти настройки теперь также применяются в окне изменения пароля при проверке старого пароля. После большого количества попыток некорректно ввести пароль в этом окне пользователь может быть заблокирован (на время или до ручной разблокировки администратором, в зависимости от настроек).
  30. В маршрутах в этап “Настраиваемое задание” добавлена возможность завершения задания с вариантом завершения, не указанным в таблице “Варианты завершения”.
  31. В конструкторе бизнес-процессов в действие “Настраиваемое задание” добавлена возможность завершения задания с вариантом завершения, не указанным в таблице “Варианты завершения”.
  32. Удалён специальный параметр в представлениях CurrentCardTypeID. Он не использовался в системе.
  33. В карточке “Виртуальный файл” разрешено редактирование идентификатора виртуального файла и его версии.
  34. В web-клиенте контрол “Строка” теперь позволяет редактировать колонки типа Guid.
  35. В web-клиенте в маршрутах в этапе “Настраиваемое задание” разрешено изменять идентификатор варианта завершения настраиваемого задания.
  36. В файлы проектов тестов добавлена поддержка вызова файлов скриптов pre-build и post-build.
  37. В папке с исходным кодом проектных решений Source добавлен файл Tessa.EmbeddedResourceEx.targets, который включает в .csproj проектов (по умолчанию это проекты тестов) обработку элемента EmbeddedResourceEx, посредством которого возможно управлять встраиванием ресурсов в сборку.
  38. В web-клиенте в области пейджинга представлений добавлена кнопка перехода на первую страницу.
  39. В обсуждениях (форумах) в контроле “Текст с форматированием” увеличен размер вставляемого изображения.
  40. В TessaAdmin при создании нового представления по умолчанию включен флажок EnableAutoWidth.
  41. В web-клиенте добавлен новый режим отображения области заданий для мобильных устройств. В этом режиме область заданий отображается не в отдельной вкладке, а выводится под основной формой карточки.
  42. В web-клиенте увеличена активная область слева для кнопки “развернуть” элемента управления “Таблица”.
  43. Скрипты setup.* и upgrade.* для Windows/Linux теперь импортируют приложения с параметром -ignored, в котором передаётся путь к файлу Applications/ignored-files.txt в сборке платформы. Это гарантирует, что файлы логов и другие артефакты не повлияют на возможность импорта карточек приложений.
  44. При экспорте карточек шаблонов этапов и вторичных процессов расширен набор выгружаемых во внешние файлы полей, содержащих C# и SQL скрипты. Файлы расположены в подпапке с именем карточки.
  45. При экспорте карточки “Методы расширений” текст метода теперь выгружается во внешний файл, расположенный в подпапке с именем карточки.
  46. При экспорте/импорте карточки теперь вместе с ней экспортируются/импортируются экземпляры бизнес-процессов конструктора процессов.
  47. Теперь при импорте карточек для прикрепленных к ним файлов по умолчанию всегда считается хэш-сумма. Поведение по умолчанию может быть изменено с помощью опций слияния. Информация по опциям слияния содержится в руководстве администратора в разделе “Карточки”, п. “Экспорт и импорт”, пп. “Карточки”.
  48. В desktop-клиенте добавлена вертикальная прокрутка в выпадающий список с доступными рабочими местами. В web-клиенте это неактуально, т.к. в новом дизайне список отображается в боковой панели, где уже есть прокрутка.
  49. Добавлена таблица “ACL”, содержащая в себе набор ролей, имеющих доступ на чтение к карточке. Данная таблица заполняется функционалом ACL. Её можно использовать в представлениях для фильтрации карточек, доступных пользователю на чтение.
  50. Добавлен тип карточки “Правило расчёта ACL”, определяющий набор настроек для расчёта ACL карточки и триггеров, при срабатывании которых должен быть произведён перерасчёт ACL. Подробнее функциональность описана в документации администратора в разделе “Подсистема ACL”.
  51. Добавлен тип карточки “Умная роль” (smart roles). Это тип роли, который состоит из других ролей, а набор сотрудников, входящих в умную роль, обновляется при обновлении ролей в её составе.
  52. Добавлены плагины расчёта ACL. Они производят полный или частичный перерасчёт ACL для карточек по правилам расчёта. При срабатывании триггеров правил расчёта в случае небольших изменений система производит расчёт ACL на сервере. В случае, если изменения затрагивают перерасчёт ACL для большого числа объектов, система переводит расчёт на данные плагины, что позволяет минимизировать задержки работы системы в пользовательском интерфейсе.
  53. Добавлен тип карточки “Генератор умных ролей”. Карточки данного типа используются для генерации умных ролей. В них задается запрос на получение списка всех владельцев умных ролей, а также запрос на получение списка ролей по владельцу умной роли. Задаются триггеры, при срабатывании должен быть произведен перерасчёт умных ролей по данному генератору. Генератор также поддерживает режим работы, когда умная роль создаётся только при её запросе у генератора, а не инициализируется при полном расчёте.
  54. Добавлены плагины обновления умных ролей. Они производят полный или частичный перерасчёт умных ролей по генераторам умных ролей. При срабатывании триггеров генератора в случае небольших изменений система производит обновление умных ролей на сервере. В случае, если изменения требуют обновления большого числа умных ролей, система переводит расчёт на данный плагин, что позволяет минимизировать задержки работы системы в пользовательском интерфейсе.
  55. В рамках нового вида замещения добавлен тип роли “Вложенная роль”. Вложенная роль содержит набор заместителей роли по определенному типу документа. Заместители во “вложенных ролях” идентичны обычным заместителям, но только в рамках карточки с определенным типом документа. Вложенные роли добавляются в списки ACL и в списки ролей заданий карточек.
  56. Переработан плагин расчёта заместителей для обеспечения возможности его работы как в новом режиме работы с заместителями, так и старом. Также данный плагин производит расчёт и создание вложенных ролей с заместителями по типам документов. Подробнее новый режим работы с заместителями и его отличия от старого режима работы описаны в документации администратора в разделе “Новая система замещения”.
  57. Настройка функциональных ролей выполняется в карточках в реестре “Служебные - Функциональные роли” в рабочем месте “Администратор”. Доступные настройки описаны в документации в разделе администратора “Функциональные роли заданий”.
  58. Добавлен расчёт заместителей по типу документа для временных ролей, созданных при отправке задания на контекстную роль.
  59. Добавлен плагин для отложенного удаления карточек в системе DeferredDeletionPlugin. Он производит удаление карточек, для которых было запрошено отложенное удаление. Это используется для оптимизации.
  60. Изменена логика удаления временных ролей при завершении задания или удалении карточки. Теперь временные роли удаляются отложенно с помощью плагина DeferredDeletionPlugin.
  61. В web-клиенте для обсуждений добавлена поддержка настройки “Тип обсуждений”.
  62. В TessaAdmin добавлено splash-окно для загрузки и исправления типов на вкладке “Карточки”.
  63. В web-клиенте для элемента управления “Текст с форматированием” добавлено ограничение длины описания и адреса ссылки (1024 и 1016 символов соответственно).
  64. В web-клиенте добавлена проверка имён поисковых запросов при импорте.
  65. В контрол “Нумератор” добавлена настройка “Максимальная длина”, которая ограничивает длину полного номера, вводимого вручную. Укажите пустое значение (по умолчанию), чтобы длина определялась автоматически в соответствии со схемой данных. Укажите в настройке значение max, чтобы не ограничивать вводимую длину, несмотря на тип колонки в схеме данных (это прежнее поведение).
  66. Добавлена возможность пропускать Windows-аутентификацию при запуске desktop-приложений, указав параметр -skipWinAuth или настройку "SkipWinAuth": true в app.json. Если при этом не указаны логин/пароль, то вместо попытки выполнить Windows-аутентификацию отображается диалог ввода логина/пароля. В параметры сервера в Tessa Applications добавлена настройка “Отключить аутентификацию Windows”, актуальная для приложений, запущенных из менеджера приложений. Для ссылок tessa://tessaappmanager?Action=ServerParam также добавлен параметр SkipWinAuth=true/false. За описанием настроек обратитесь к руководству администратора.
  67. В карточке “Шаблон бизнес-процесса” в таблицу “Кнопки бизнес-процесса” добавлена колонка “Есть условие”, которая показывает, есть ли в настройках кнопки дополнительное условие.
  68. В карточке “Шаблон бизнес-процесса” в таблицу “Кнопки бизнес-процесса” в форму строки добавлено раскрытие блока с дополнительным условием при открытии формы, если в настройках кнопки задано условие. Также для блока с дополнительным условием добавлена метка, показывающая, задано ли условие кнопки.
  69. В web-клиенте окно “О программе” теперь выводит список установленных патчей.
  70. В desktop-клиенте для контролов “Ссылка” и “Список” в контекстном меню для выбранного значения добавлен пункт “Удалить”. Пункт меню недоступен, если контрол доступен только для чтения. Такое удаление аналогично удалению выделенного элемента клавишами Delete или Backspace.
  71. В настройки контролов “Ссылка” и “Список” добавлен флаг “Кнопка очистки значения”, при указании которого отображается кнопка-крестик, очищающая значения в поле.
  72. При экспорте карточек шаблонов бизнес-процесса все скрипты процесса выгружаются во внешние файлы. Файлы расположены в подпапке с именем карточки.
  73. В web-клиенте добавлена возможность экспорта/импорта подписи в файловом контроле.
  74. В web-клиенте в окне “О программе” логотип теперь соответствует файлу wwwroot/images/logo-about.png, который можно заменить для брендирования платформы.
  75. В расширении “Список файлов в представлении” добавлена поддержка перетаскивания файлов из контрола представления.
  76. В расширении “Список файлов в представлении” добавлена отмена предпросмотра файла при открытии файла по двойному клику.
  77. Добавлено расширение “Открыть карточку из представления” для контрола “Представление”, позволяющее открывать из него карточки по двойному клику. Подробное описание смотрите в соответствующем разделе документации.
  78. При экспорте схемы данных в файловую систему в файлах .tsp и .tsd объекты теперь пишутся в алфавитном порядке.
  79. В файл app.json веб-сервиса добавлена настройка ServiceWorkerEnabled, посредством которой можно отключать регистрацию service worker в web-клиенте. По умолчанию true.
  80. Копирование ссылок tessa:// в буфер обмена в desktop-приложениях теперь использует алиас текущего приложения из объекта IApplicationDescriptor. Это позволяет задействовать стандартные команды копирования в собственных приложениях, разработанных на проекте, у которых будет свой алиас. Например, если открыть карточку в таком приложении, то кнопка “Копировать ссылку” скопирует в буфер обмена ссылку на карточку с алиасом этого приложения.
  81. В web-клиенте для элемента управления “Текст с форматированием” переработаны операции редактирования списков и добавлены команды “Очистить все форматирование” и “Удалить блок”.
  82. В web-клиенте для элемента управления “Текст с форматированием” убран нижний лимит для вставляемых изображений (был 10 пикселей) и улучшено сжатие изображений для превью.
  83. В представлении “Сотрудники” (Users) в сабсете “По подразделениям” теперь не отображаются скрытые подразделения.
  84. В web-клиенте в элементе управления “Текст с форматированием” добавлена поддержка вставки текста в ссылки и изображения.
  85. В асинхронную обработку правил расчёта ACL добавлена контролируемая повторная обработка запросов, которая исключает из обработки карточки, при расчёте ACL которых ошибки возникали несколько раз, а также завершает обработку запросов, при выполнении которых большое число карточек имело ошибки расчёта.
  86. В асинхронную обработку генераторов умных ролей добавлена контролируемая повторная обработка запросов, которая исключает из обработки умные роли, при расчёте которых ошибки возникали несколько раз, а также завершает обработку запросов, при выполнении которых большое число умных ролей имело ошибки расчёта.
  87. Доработан конструктор локализации в TessaAdmin. Экспорт при выборе значения “Все библиотеки” экспортирует в указанную папку все библиотеки локализации. Список “Добавить строки” теперь отсортирован по коду ISO (выводится в скобках). Для выводимой строки указывается англоязычное название языка рядом с его нативным обозначением. Если выбраны “Все библиотеки”, то строки добавляются во все библиотеки. При добавлении строк также предоставляется выбор языка, из которого будут скопированы переводы (если язык не указан, то строки не заполняются, как и работало ранее).
  88. В расширение представлений OpenInModalDialogOnDoubleClickExtension добавлены настройки (тип OpenInModalDialogSettings) для открытия диалога в полноэкранном режиме и для отображения первой вкладки карточки без заголовков вкладок.
  89. Для контрола “Обсуждения” добавлена настройка “Обратный порядок сообщений”, которая определяет, что сообщения выводятся от более новых к более старым в списке топиков, внутри топика и в результатах поиска.
  90. Добавлена поддержка экспорта и импорта строк из библиотек локализации с отдельным языком в файлы Библиотека.язык.jculture, где библиотека - имя файла библиотеки, язык - двухбуквенный код языка по стандарту ISO (en - английский язык, ru - русский язык). Указать, какие языки являются отсоединёнными, можно командой tadmin CopyCulture, а также в конструкторе локализации в TessaAdmin, нажав кнопку “Редактировать” на библиотеке локализации и указав список двухбуквенных кодов языков, разделённых точками с запятой.
  91. Доработан конструктор локализации в TessaAdmin. Экспорт в Excel при выборе значения “Все библиотеки” экспортирует в указанную папку все библиотеки локализации, а импорт из Excel - создаёт или заменяет библиотеки в соответствии с тем, что имя файла является именем библиотеки. Добавлена кнопка-переключатель для фильтрации строк с пустыми значениями в одной из отображаемых колонок.
  92. В консольных тестах теперь используется TextWriter по умолчанию, если задана переменная среды окружения USE_DEFAULT_WRITER_FOR_CONSOLE_TESTS, и для нее установлено значение “1”.
  93. Добавлен флаг “Постраничный предпросмотр PDF” в “Моих настройках” пользователя. При его установке для встроенного предпросмотра PDF будет предпочитаться режим постраничного отображения вместо сквозной прокрутки между страницами документа. Настройка актуальна и для desktop-клиента, и для web-клиента.
  94. Для контрола “Кнопка” добавлена настройка “Минимальная ширина кнопки”, которая соответствует ширине нажимаемой области с кнопкой. Пустое значение соответствует значению по умолчанию - 100 пикселей. Значение 0 позволяет не ограничивать минимальную ширину.
  95. Для контрола “Представление” добавлена настройка “Минимальная высота строки” (в пикселях). Значение по умолчанию 0 позволяет не ограничивать минимальную высоту.
  96. В контекстном меню на приложениях в Tessa Applications добавлен пункт меню “Создать ярлык на рабочем столе”. Имя созданного ярлыка выводится во всплывающем уведомлении.
  97. Добавлена возможность скачать список отзыва (CRL) из окна отображения информации о проверке подписей.
  98. В web-клиенте в окне отображения информации о проверке подписей неуспешные статусы проверки выделяются жирным шрифтом.
  99. В карточку приложения Application добавлен флаг Hidden, позволяющий не отображать приложение в AppManager (см. /hidden).
  100. Временные зоны заполняются в процессе установки системы. В случае ручной установки их необходимо заполнить в полуавтоматическом режиме.
  101. В web-клиенте добавлены тултипы для вкладок рабочих мест и карточек с полным содержанием информации и названия.
  102. Сотрудники, которые подписались на определённый тип уведомления по карточке, теперь будут получать уведомления этого типа, даже когда по правилам уведомлений они должны быть отфильтрованы.
  103. В карточку сотрудника в настройки уведомлений добавлена возможность указать список глобальных типов уведомлений, на которые хочет подписаться сотрудник. Он будет получать уведомления по заданным типам, если при их отправке он указан как опциональный получатель.
  104. В конструкторе бизнес-процессов в действии “Уведомление” добавлен параметр “Опциональные получатели”. Указанные в нём сотрудники получат уведомление только в том случае, если в настройках уведомлений добавлено правило, разрешающее получение уведомления, или если тип уведомления добавлен в список типов, на которые сотрудник хочет подписаться.
  105. В маршрутах в этапе “Уведомление” добавлен параметр “Опциональные получатели”. Указанные в нём сотрудники получат уведомление только в том случае, если в настройках уведомлений добавлено правило, разрешающее получение уведомления, или если тип уведомления добавлен в список типов, на которые сотрудник хочет подписаться.
  106. В форумах (обсуждениях) и в контроле “Текст с форматированием” на панель инструментов добавлены кнопки для выравнивания текста.
  107. В web-клиенте добавлена функциональность, учитывающая настройку задержки поиска для элементов управления “Ссылка” и “Список”.
  108. В файл app.json web-сервиса добавлен параметр AlwaysOpenLinksInSingleBrowserTab, который включает использование алгоритма определения предыдущей открытой вкладки web-клиента TESSA и возможностью перехода к этому приложению. Актуально при использовании Service Worker в браузере, для этого на сайте должен быть валидный сертификат https. По умолчанию значение true.
  109. В web-клиенте в системе обсуждений изменено поведение при клике на внешние ссылки: теперь они открываются в новой вкладке браузера.
  110. В web-клиенте текст в заголовке вкладки вынесен в локализацию: в окне логина это строка Title в файле localization.json веб-сервиса; после логина используется строка TitleAndUser, которую можно задать как локализацией, так и строкой для форматированного вывода, тогда элемент {0} будет заменён на логин пользователя, а {1} - на его имя.
  111. В web-клиенте изменён на более светлый фон кнопок панели управления элемента “Текст с форматированием” когда он находится в режиме “Только для чтения”.
  112. В форумах (обсуждениях) добавлена возможность указывать статус “Подписан на уведомления” при добавлении новых конкретных участников обсуждения. В представлении “Участники” добавлена возможность изменить статус “Подписан на уведомления” конкретного участника обсуждения.
  113. В форумах (обсуждениях) добавлены ограничения на максимальный размер прикладываемого файла (карточка “Настройки сервера”, поле “Максимальный размер файла, приложенного к сообщению”) и на максимальное количество файлов, приложенных к сообщению (поле “Максимальное количество файлов, приложенных к сообщению”).
  114. В desktop-клиенте в контроле “Список файлов”, в котором файлов ещё нет, пользователь может нажать мышью (или пальцем) на пустую область, чтобы открыть диалог прикладывания файла (если это действие доступно).
  115. Из метаданных параметра представления удалено свойство SourceViews, содержащее список представлений, доступных для выбора значения пользователем при установке значения.
  116. В форумах (обсуждениях) добавлено ограничение на максимальное количество вложений (вставленных изображений) в сообщении (поле “Максимальное количество вложений в сообщении”).
  117. Улучшен вывод деталей сообщения об ошибке при проверке доступа по карточкам “Правило доступа”.
  118. В TessaAdmin при изменении местонахождения в списке, копировании-вставке и удалении рабочего места изменение порядка для последующих в списке рабочих мест теперь производится автоматически и не требует сохранения со стороны пользователя.
  119. Добавлена базовая обработка циклических зависимостей при сохранении изменений таблиц схемы данных.
  120. В названии сертификата ЭП теперь выводится информация об организации (при наличии).
  121. В web-клиенте в окне “О программе” добавлена возможность переподключения к Deski в случае, если сервис недоступен.
  122. В функциональность операций добавлена возможность откладывать выполнение операций до указанного времени. В представлении с операциями добавлена соответствующая колонка и параметр.
  123. При отсутствии содержимого у компонента рабочего места (удаленный поисковый запрос, ограничение по правам и т.д.) на экран теперь выводится надпись “Содержимое узла недоступно для просмотра”.
  124. В форумах (обсуждениях) добавлено ограничение на максимальное количество символов в сообщении: в карточке “Настройки сервера” поле “Максимальный размер сообщения, символы”. По умолчанию указано 1000 символов.
  125. В web-клиенте для элементов управления “Текст с форматированием” и “Обсуждения” добавлена возможность открыть предпросмотр вложенных файлов в диалоговом окне.
  126. В элементе управления “Текст с форматированием” плейсхолдеры, используемые при отображения диалога добавления внешней ссылки, были вынесены в строки локализации.
  127. В web-клиенте добавлена возможность удалять подписи ЭП.
  128. В desktop-клиенте в форумах (обсуждениях) сообщение о попытке отправить пустое сообщение теперь отображается во всплывающем уведомлении.
  129. В web-клиенте для форумов (обсуждений) диалог выбора файла, вызываемый при добавлении изображения в сообщение, теперь отображает только файлы допустимых форматов изображений. Это актуально для контролов “Текст с форматированием” и “Обсуждения”.
  130. В форумах (обсуждениях) и в контроле “Текст с форматированием” на панель инструментов добавлена кнопка “Вставить моноширинный текст”, которая вставляет обрамлённый моноширинный текст внутри текущего блока.
  131. В web-клиенте увеличена высота текстового поля “Результат” окна “Показать подробности”.
  132. Во всплывающей подсказке файла теперь отдельно отображается информация о дате, времени и сотруднике, который последним изменил контент файла, а также о дате, времени и сотруднике который последним изменил атрибуты файла (имя, категория и т.п.).
  133. В desktop-клиенте для форумов (обсуждений) и элемента управления “Текст с форматированием” в контекстное меню приложенного файла добавлены пункты “Открыть для чтения” и “Предпросмотр”. Меню теперь также открывается по нажатию левой кнопки мыши.
  134. Поддержка диаграмм в desktop-клиенте вынесена в отдельную библиотеку расширений Tessa.UI.Charting.dll (и соответствующий NuGet-пакет). Это позволяет поставлять приложения платформы без сторонней библиотеки Syncfusion.SfChart.WPF.dll, при этом не будет функционировать конструктор диаграмм в TessaAdmin и расширение ChartViewExtension в TessaClient; также в этом случае скрывается типовой узел “Диаграммы” в TessaClient.
  135. В карточку “Тип условия” добавлено поле с описанием карточки.
  136. Для представления и для узла рабочего места добавлены новые параметры, при помощи которых можно управлять автоматическим выбором первой строки при открытии представления. Подробнее функциональность описана в документации в разделе “Представления” руководства разработчика и в разделе “Рабочие места” руководства администратора.
  137. В форумах (обсуждениях) добавлено отображение даты отправки сообщения для всех стандартных служебных сообщений, а также для любого сообщения с типом MessageType.Custom.
  138. В типы карточек с настройками сотрудника добавлена поддержка работы с настройками, хранящимися в физических секциях. Физические секции больше не сериализуются в настройки сотрудника, а сохраняются непосредственно в физическую секцию карточки сотрудника.
  139. В TessaAdmin в редакторе типов карточек для элементов блоков, контролов и колонок в табличных контролах теперь доступен множественный выбор этих элементов, массовое перемещение и удаление выбранных элементов, а также копирование множественных элементов и их последующая вставка в/из буфера обмена.
  140. В сборку добавлено приложение SchemeEditor в 32-разрядном варианте в папку Applications/SchemeEditor32.
  141. В представления передаётся новый служебный параметр фильтрации FormatSettings, в котором указывается имя культуры из карточки “Форматирование дат и чисел” для текущей сессии (текущего сотрудника). Например, это строка ru для параметров русского языка или en для английского языка. В окне отладки представления параметр назван “Форматирования дат и чисел”. В теле SQL-запроса необходимые параметры можно получить из таблицы FormatSettings, отфильтровав по колонке "Name" = #param(FormatSettings). Также параметр должен передаваться в типовую хранимую функцию FormatAmount для форматирования строки денежной суммы, например: "FormatAmount"("dci"."Amount", #param(FormatSettings)).
  142. В элементе управления “Представление” улучшен вывод информации об ошибках, произошедших при загрузке данных.
  143. В форумах (обсуждениях) и в контроле “Текст с форматированием” добавлена возможность прикладывать внешние ссылки для использования внутри текста без отображения их в нижней части элемента управления.
  144. В файл app.json сервиса Chronos добавлена настройка Chronos.SyncTimeout, устанавливающая таймаут при запуске Chronos, когда используемый им глобальный объект синхронизации занят другим процессом или не был корректно освобождён.
  145. В форумах (обсуждениях) и в контроле “Текст с форматированием” установлен отступ между абзацами: блоками текста, разделёнными переводами строки, или блоками разных типов (текст и список). Также добавлен отступ слева для элементов списков.
  146. В маршруты в этап “Диалог” добавлен параметр “Не предупреждать при закрытии диалога без изменений”, позволяющий отключить предупреждение при закрытии диалога без изменений по кнопке закрытия окна. Флаг влияет только на диалоги, для которых указано значение параметра Время жизни диалога как Запрос.
  147. В конструктор бизнес-процессов в действие “Диалог” добавлен параметр “Не предупреждать при закрытии диалога без изменений”, позволяющий отключить предупреждение при закрытии диалога без изменений по кнопке закрытия окна. Флаг влияет только на диалоги, для которых указано значение параметра Время жизни диалога как Запрос.
  148. В файле app.json Chronos переименована настройка AdSync.UseSSL на AdSync.UseSsl. Исправлять конфигурационный файл не требуется, т.к. при отсутствии настройки с новым названием выполняется парсинг настройки с предыдущим названием.
  149. В форумах (обсуждениях) добавлен хоткей Ctrl+R для быстрого обновления топика.
  150. В рабочем месте “Пользователь” в представлении “Подписки на уведомления” добавлена возможность открывать карточку документа по двойному клику.
  151. При подписании файлов сохраняется цепочка сертификатов, добавленная криптопровайдером.
  152. В web-клиенте в рабочем месте “Пользователь” в представлении “Подписки на уведомления” добавлена возможность удалять подписки на уведомления с помощью комбинации клавиш Ctrl+D.
  153. Добавлена поддержка PEM сертификатов (файлов с расширениями .crt и .pem) для сервиса web. Подробности доступны в разделе документации Настройки веб-сервера Kestrel в группе WebServer.
  154. В файл app.json сервиса web добавлены настройки CertificateKeyFile и DataProtectionCertificateKeyFile. Настройки описаны в руководстве по установке.
  155. В форумах (обсуждениях) и контроле “Текст с форматированием” добавлена возможность мягкого переноса строки без разрыва параграфа по нажатию Shift+Enter или кнопки на тулбаре.
  156. Обновлён формат версии в файлах библиотек локализации .jlocalization до версии 2. В новом формате язык указывается как ISO код (en, ru), тогда как ранее указывался числовой код LCID. Используйте команду tadmin ConvertConfiguration для обновления файлов в репозитории. Импорт библиотек возможен без конвертации.
  157. Тип колонки LocalizationStrings.Culture в схеме изменён с числового на строковый. Теперь вместо кода культуры LCID там содержится ISO код языка (en, ru). Соответствующим образом изменены параметры в хранимых функциях локализации, предоставляемых платформой.
  158. Системный параметр представлений Locale теперь содержит строку с ISO кодом языка (en, ru) вместо числового кода LCID.
  159. В TessaAdmin в редакторе представлений в полях алиаса и заголовка представления теперь при потере фокуса происходит автоматическое удаление начальных и конечных пробелов. Алиас и заголовок представления больше не могут быть пустыми или состоять из одних пробелов.
  160. В форумах (обсуждениях) добавлена возможность задавать описание и заголовок топика с использованием строк локализации. При использовании нескольких строк локализации каждую из них необходимо заключать в фигурные скобки.
  161. Для контрола “Представление” добавлены настройки “Разрешить сохранение настроек” и “Алиас настроек”. Использование первой включает сохранение настроек отображения контрола в контекстном меню на колонке представления: порядок и ширина колонок, скрытые колонки, направление сортировки, группировка. “Алиас настроек” позволяет указать глобально уникальный алиас (строковый ключ), по которому будут хранится эти настройки; если алиас не указан, то по умолчанию настройки будут уникальны для комбинации “алиас типа”, “алиас контрола”, “алиас представления”.
  162. В карточке настроек потокового ввода документов добавлена возможность задавать пользователя, от имени которого в карточки будут добавляться файлы и чьи настройки локализации и форматирования будут использованы при именовании документа согласно заданному в карточке шаблону.
  163. При генерации ошибок типа InstanceNotFound добавлен вывод имени объекта и стека места генерации ошибки, кроме режима "Configuration.StrictSecurity": true, устанавливаемого в файле app.json веб-сервиса и Chronos (если настройка установлена).
  164. Для параметров представлений добавлена настройка DateTimeType, которая определяет режим ввода даты и/или времени в диалоге фильтрации. Если не указано (по умолчанию), то режим определяется на основании типа параметра: Date, Time, DateTime, DateTime2. Используйте режим Interval для ввода интервала времени (всегда в 24-часовом формате). Подробнее в руководстве разработчика.
  165. В карточку “Настройки сервера” добавлен флаг “Отключить ссылки на desktop-клиент для уведомлений и виртуальных файлов”, отключающий соответствующие ссылки.
  166. В web-клиенте улучшена обработка ошибок при Windows-аутентификации.
  167. В тип карточки “Тип условия” добавлены кнопки для исправления условий конкретного типа и всех типов. Подробности доступны в разделе документации Исправление условий.
  168. Добавлено исправление условий при импорте карточек, содержащих условия.
  169. В web-клиенте при открытии файлов на предпросмотр, если основной предпросмотр карточки скрыт, то он откроется в диалоговом окне.
  170. Из контекстного меню контрола “Представление” с расширением “Представление истории заданий” удалён пункт меню “Показать/скрыть колонку Результат”, поскольку скрытие любой колонки теперь возможно в контекстном меню на заголовке колонки.
  171. В настройки генератора метаролей добавлен флаг “Отключить замещения”, который применяется для создаваемых генератором метаролей.
  172. В настройки генератора умных ролей добавлен флаг “Отключить замещения”, который применяется для создаваемых генератором умных ролей.
  173. Теперь при отправке задания, если задано имя роли автора, то всегда используется оно, иначе производится расчёт этого имени.
  174. В расширение представлений OpenInModalDialogOnDoubleClickExtension, выполняющее открытие карточки в диалоге из представления по двойному клику, был добавлен параметр, включающий обновление представления при закрытии диалога.
  175. В обсуждениях (форумах) в меню открытого топика добавлен пункт “Войти в режим супермодератора”.
  176. В web-клиенте для элемента управления “Текст с форматированием” добавлена поддержка вставки из буфера текста с форматированием.
  177. Для desktop-клиентов TessaClient и TessaAdmin добавлен параметр командной строки -meta:filename, переопределяющий путь к файлу с клиентской метаинформацией. Если указано имя файла без пути (без слэшей), то используется стандартная папка (по умолчанию %LocalAppData%\tessa\cache\SERVER_ADDRESS\tessa\APPLICATION_NAME, где APPLICATION_NAME - строка tessaclient или tessaadmin). Если указан относительный путь, то он рассчитывается от папки с приложением. По умолчанию используется файл с именем meta.json. Рекомендуется переопределять только в том случае, если exe-файл запускается для одного и того же сервера приложений с различными логинами (определёнными параметрами -u -p). Пример: TessaClient.exe -u:user1 -p:password -meta:meta.user1.json.
  178. Для Deski добавлен параметр командной строки -autostart, при указании которого включается или отключается автозапуск вместе с ОС, после чего Deski сразу завершается. Не рекомендуется использовать в Windows, т.к. этот параметр конфликтует с автозапуском в msi-инсталляторе. Его применение в ОС Linux описано в разделе Установка ассистента web-клиента Deski.
  179. В desktop-клиенте и в web-клиенте в форумах (обсуждениях) реализована возможность скачивать файлы по ссылке из цитируемого сообщения в сообщении-ответе.
  180. В desktop-клиенте в форумах (обсуждениях) в диалог сохранения вложения у сообщения добавлен фильтр по типу файла.
  181. В варианте завершения “Изменить параметры как автор” в процессе постановки задач типового решения удалено поле “Исполнитель”, посредством которого автор мог изменять исполнителя задания. Используйте диалог изменения функциональных ролей задания, описанный в документации в разделе Функциональные роли задания.
  182. Для контролов “Ссылка” и “Список” добавлена возможность выбора режима поиска. Теперь поиск можно вести по условиям “Содержит”, “Начинается с”, “Заканчивается на” и “Равно”.
  183. Для параметров представлений добавлена настройка IgnoreCase, позволяющая фильтровать данные без учета регистра. По умолчанию эта настройка включена. Настройка используется только с PostgreSQL. Подробнее в руководстве разработчика.
  184. Для web-клиента и desktop-клиента добавлена автоматическая фокусировка контролов карточки при её создании. Для фокусирования выбирается первый контрол на основной вкладке, который не скрыт, доступнен для редактирования и не заполнен. Поведение можно отключить из расширений установкой свойства ICardUIExtensionContext.autoFocus (AutoFocus для desktop-клиента).
  185. В карточку настроек типового решения добавлены флажки для скрытия плиток выбора языка интерфейса и настроек форматирования для пользователей. Эта настройка не применяется для пользователей, являющихся администраторами системы.
  186. В заголовке задания доработано отображение ролей, на которые назначено задание. Теперь в заголовке задания отображается имя одной роли из списка ролей, являющихся исполнителями задания, с указанием числа прочих ролей из этого списка, если задание назначено больше, чем на одну роль.
  187. Для Deski добавлен параметр -console с возможными значениями: show (всегда отображать консоль; аналог параметра -show-console, который был удалён); hide (всегда скрывать консоль); auto (скрывать консоль, если она создана текущим процессом; это значение по умолчанию). Параметр функционирует только для Windows. Пример: deski.exe -console hide.
  188. Для Deski вместо параметра -v используйте параметр -verbose. Параметр -v используется для указания уровней логирования. Для вывода справки запустите Deski с параметром -help.
  189. В представлениях в области быстрого поиска теперь выводится название параметра быстрого поиска.
  190. В TessaAdmin для типов карточек добавлен флаг “Разрешить файлы”, который указывает системе, что при загрузке карточек этого типа также необходимо загружать информацию о файлах, принадлежащим карточке. Этот флаг установлен по умолчанию для всех новых типов карточек и для мигрированных типов из прошлой версии платформы.
  191. В новой системе замещения при отправке задания на контекстную роль не создаётся временная роль. В качестве функциональных ролей задания добавляется сама контекстная роль и сотрудники, которых вернёт контекстная роль при отправке задания.
  192. В desktop-клиенте и в TessaAdmin в диалоге импорта карточек добавлены следующие возможности: импорт файлов по маске, изменение пути к выбранному в списке элементу, внесение в список элементов других библиотек (при этом вложенность не ограничена, а сам импорт будет происходит по всему дереву библиотек с игнорированием опций слияния, которые указаны для элемента списка, являющимся библиотекой).
  193. В файлах библиотек карточек .jcardlib и .cardlib добавлена возможность указывать в свойстве Path файлы других библиотек карточек (.jcardlib, .cardlib), или путь с масками: например, Settings/*, причём подходящие под маску файлы импортируются в алфавитном порядке, а отсутствие файлов не приводит к ошибке импорта. Новые возможности доступны как из диалога импорта (TessaClient, TessaAdmin), так и в при импорте консольной командой tadmin ImportCards.
  194. В файлах библиотек карточек .jcardlib добавлена возможность задать свойство Condition (по умолчанию является пустым), с помощью которого можно указать, при какой развернутой СУБД данная карточка или библиотека будет импортирована.
  195. В desktop-клиенте и в TessaAdmin в диалог импорта карточек добавлена возможность задания условия импорта, с помощью которого можно указать, для какой СУБД будет импортирована карточка или библиотека: ms - MSSQL Server, pg - PostgreSQL, пусто - любая СУБД.
  196. В правила доступа в расширенные настройки доступа к файлам добавлены настройки доступа на добавление файлов и на ограничение размера файла. Теперь можно настраивать доступ на добавление файлов в разрезе категорий и расширений файла, а также ограничивать размер добавляемых файлов. Ограничение на размер файла также применяется при изменении файла.
  197. В правила доступа в расширенные настройки доступа к файлам добавлена возможность в список категорий отдельно выбрать категорию “Без категории”.
  198. В desktop-клиенте для представлений по умолчанию настроено ограничение максимальной длины текста фильтра без сворачивания (150 символов). При достижении максимальной длины текст можно развернуть с помощью кнопки (только в представлении на рабочем месте) или с помощью символов >> (как в представлении на рабочем месте, так и в карточке).
  199. Типизированный сериализатор json в массивах теперь указывает тип bln для значений boolean. Ранее такие значения сериализовались с типом unk (неизвестный тип). В ключах хеш-таблиц суффикс ::bln не используется при сериализации, но может быть десериализован, если он задан явно.
  200. Из представления “История действий” (ActionHistory) для MS SQL Server удалён сабсет Count.
  201. В web-клиенте в форумах (обсуждениях) и контроле “Текст с форматированием” добавлена возможность прикладывать файлы, используя drag&drop.
  202. В TessaAdmin в редактор рабочих мест в настройки узлов представлений добавлена возможность переопределять RefSection ссылок представлений. Более подробно с данной функциональностью можно ознакомиться в документации в разделе “Рабочие места”.
  203. В конструкторе бизнес-процессов в скрипты условий кнопок добавлена поддержка директивы #script, позволяющая переключить режим написания условия в режим скрипта.
  204. В конструкторе бизнес-процессов скрипты условий кнопок сделаны асинхронными.
  205. Для PostgreSQL 11+ добавлена поддержка Include колонок в индексах.
  206. В файл app.json приложений desktop-клиента (TessaClient, TessaAdmin, TessaAppManager) добавлены настройки для экрана загрузки: LogoHideFrame, LogoHideProgress, LogoHideText, LogoHideVersion, LogoForeground, LogoBackground. Описание настроек в разделе документации Прочие параметры приложений.
  207. В настройках контролов “Ссылка” и “Список” параметр RefSection теперь может принимать несколько значений, разделённых пробелами. Это позволяет при выборе значений отображать узлы, содержащие различные RefSection.
  208. При импорте существующих карточек SmartMerge добавлена обработка изменений для записей групп истории заданий.
  209. Для приложений TessaClient и TessaAdmin добавлена возможность запускать ссылки с параметром командной строки -link, минуя AppManager, с указанием полного текста ссылки, где вся часть ссылки, кроме параметров (имя приложения, код сервера), игнорируется. Например, при запуске с параметром "-link:tessa://tessaclient.platform/?Action=OpenCard&ID=d331c163-c711-4710-b6ba-f26ad8f1ddcd" открывается карточка, что аналогично запуску с параметром "-link:Action=OpenCard&ID=d331c163-c711-4710-b6ba-f26ad8f1ddcd".
  210. При выполнении аутентификации LDAP и выполнения синхронизации с AD/LDAP в файле app.json добавлена настройка "EnforceTls": true/false, позволяющая указать, что при подключении по протоколу LDAP с шифрованием SSL (LDAPS) будет использоваться минимум протокол TLS 1.2 или старше; если настройка не указана или задана как false, то используется TLS 1.1 или старше (в предыдущем релизе системы допускалось использование TLS 1.0). Версия протокола определяется в зависимости от возможностей сервисов платформы TESSA и сервера AD/LDAP, т.е. если оба поддерживают TLS 1.2, то будет использован он, независимо от настроек, которые ограничивают только минимальную версию. Для выполнения аутентификации LDAP настройка определена в app.json веб-сервиса в группе настроек "LDAP"; для выполнения синхронизации с AD/LDAP настройка определена в app.json Chronos по имени "AdSync.EnforceTls".
  211. В web-клиенте в контроле предпросмотра изображений добавлена возможность изменять масштаб изображения.
  212. В web-клиенте приложение-ассистент Deski теперь запускается, если в карточке “Настройки сервера” снят флаг “Отключить приложение-ассистент web-клиента Deski”. Ранее отключение Deski осуществлялось в группе “Deski” флагом "Enabled" в файле app.json для веб-сервиса.
  213. Добавлено новое расширение “Шаблон файла в контроле html” для типов карточек и заданий, позволяющее отобразить html, сгенерированный по шаблону файла, в контроле отображения html.
  214. В TessaAdmin в редактор представлений в настройки параметров добавлена возможность в поле RefSection указать список значений, разделённых через пробел.
  215. В web-клиенте добавлена локализация диалогового окна выбора сертификата подписи.
  216. В web-клиенте добавлена возможность пропуска этапа заполнения комментария при выборе сертификата подписи.
  217. Добавлен новый тип контрола “Отображение html”, который позволяет отобразить в карточке html, лежащий в секции карточки, либо, сгенерированный по шаблону с помощью расширения Отобразить шаблон файла в контроле html. Данный тип контрола функционирует только в web-клиенте, в desktop-клиенте он будет скрыт.
  218. В web-клиенте добавлена возможность перетаскивания файлов из файлового контрола в файловую систему. Данная функция недоступна в браузере Firefox.
  219. В web-клиенте для элемента управления “Текст с форматированием” добавлена поддержка конвертации тега <br> при вставке html.
  220. В представления добавлена новая настройка TagsPosition, позволяющая включить отображение тегов в представлении и настроить их расположение. Подробнее см. раздел документации Представления.
  221. Добавлены типы действий “Сохранение тега” и “Удаление тега” в истории действий.
  222. Добавлены типы условий “По тегу” и “Есть доступный мне тег”.
  223. В пользовательские представления запрещено добавление колонок, у которых алиас начинается с точки ..
  224. Chronos и его библиотеки теперь напрямую зависят от Tessa.dll. При запуске Chronos инициализируются объекты PlatformDependencies и ServerDependencies, указанные в app.json. Библиотеки Tessa, Tessa.Server, Tessa.Linux и их зависимости копируются в папку Chronos, их более не требуется копировать в папки с плагинами.
  225. Chronos, запущенный в консоли на Windows, завершается по Ctrl+C сразу, без необходимости нажать любую клавишу для выхода. Это аналогично поведению на Linux.
  226. Для представлений с СУБД PostgreSQL добавлена поддержка параметров в случае, если в метаинформации указан флаг TreatAsSingleQuery.
  227. В web-клиенте при инициализации приложения в браузере Mozilla Firefox скрыто диалоговое окно, предлагающее активировать или установить плагин КриптоПро, если он недоступен.
  228. В web-клиенте при выборе пунктов контекстного меню файлов “Подписать” или “Проверить ЭП”, а также при нажатии кнопки “Проверить подписи” диалогового окна “Показать список электронных подписей” добавлено диалоговое окно с предложением активировать или установить плагин КриптоПро, если он недоступен.
  229. Унифицирован механизм компиляции объектов системы. Подробности доступны в руководстве разработчика.
  230. API Добавлена возможность настройки FilesViewCardControlInitializationStrategy и CardFilesDataProvider для отображения дополнительных колонок в расширении список файлов в представлении. Пример добавления данных о дате создания файла можно посмотреть в CarUIExtension, CustomFilesViewCardControlInitializationStrategy и CustomCardFilesDataProvider.
  231. API в интерфейсы IFile, IFileCreationToken добавлена информация о создании файла.
  232. Изменён импорт отдельных библиотек в TessaAdmin и SchemeEditor. Теперь для выбора доступна только папка, в которой будет осуществлен рекурсивный поиск файлов .tsp.
  233. В карточке “Настройки сервера” из таблицы “Настройки файловых хранилищ” удален устаревший флаг “Обратная совместимость”. Также было удалено поле FileUseSimpleNamingScheme из файла app.json тестов. Перед обновлением на эту версию платформы используйте команды tadmin MigrateFiles от предыдущей версии, чтобы мигрировать файлы в хранилище без такого флага.
  234. В web-клиенте можно импортировать подписи в формате PEM.
  235. В конструкторе типов TessaAdmin вместо шрифтов Tessa Default, Segoe UI или Segoe UI, ./Fonts/#Open Sans используется виртуальный шрифт Default с тем же смыслом (шрифт по умолчанию). В файлах .jtype он указывается значением свойства "SelectedFontFamily": null. В desktop-клиенте он соответствует шрифту Segoe UI, а в web-клиенте - в зависимости от используемого браузера и настроек CSS.
  236. В TessaAdmin при создании представлений флаг TreatAsSingleQuery теперь выставляется автоматически.
  237. В TessaAdmin при выполнении представлений в режиме отладки теперь очищается таблица результатов и выводится сплэш, если выполнение длительное.
  238. Доработаны типовые задачи. Добавлена новая функциональная роль “Отправитель”. Она используется при добавлении пользователя, отправляющего типовую задачу, в список связанных с заданием ролей. Этап маршрутов и действие в шаблоне бизнес-процесса, реализующие функцию отправки типовых задач, теперь называются “Типовая задача”. В их настройках так же можно указать отправителя.
  239. В карточку правила доступа добавлена настройка “Правила расчёта ACL”, позволяющая настраивать доступ для сотрудников и ролей, добавленных в ACL карточки по соответствующим правилам.
  240. В карточку настроек типового решения добавлен флаг “Доступ ACL на чтение карточки”, при установке которого сотрудники и роли, добавленные в ACL карточки, всегда имеют доступ на чтение карточки.
  241. Добавлен веб-сервис Jinni для работы с документами, который развёртывается в Docker-контейнере. Веб-сервис ответственен за обработку операций по распознаванию текста в файлах и конвертации файлов в pdf. В текущей версии системы веб-сервис не масштабируется, т.е. для каждой инсталляции должен быть запущен максимум один рабочий процесс веб-сервиса Jinni.
  242. Добавлен плагин обработки операций OCR. Плагин обрабатывает операции распознавания текста в файле в порядке их создания. Обработка операций выполняется последовательно (в один поток). Большое количество одновременных запросов на распознавание текста в файлах может создать существенную нагрузку на сервер, на котором размещен веб-сервис документов. Чтобы снять нагрузку с сервера приложений при обработке операций OCR, Docker-контейнер с веб-сервисом документов и Chronos с плагинами можно разместить на отдельном сервере, и настройками отключить все плагины, кроме плагина распознавания текста в файле. В текущей версии системы веб-сервис не масштабируется, т.е. для каждой инсталляции должен быть запущен максимум один рабочий процесс веб-сервиса Jinni.
  243. Добавлен плагин удаления старых карточек операций OCR. Плагин запускается раз в сутки и проверяет наличие карточек операций OCR с датой создания позже, чем текущая дата минус заданное в настройке Ocr.RemoveOperationsOlderThanDays (файл app.json) количество дней.
  244. В конструкторе бизнес-процессов добавлена возможность делать привязки параметров к данным сессии.
  245. В карточку действия “Управление таймером” добавлен параметр “Дата”. Подробнее в руководстве разработчика в разделе Описание действий.
  246. В json-файлах тем интерфейса добавлена возможность указывать пути к файлам для переопределения настроек при помощи ключа .override. Добавлена возможность указывать для значения ключей .include и .override маскированный путь с символами * и ?. Подробнее в руководстве администратора в разделе Создание/Редактирование тем оформления и настройка фоновых изображений.
  247. В web-клиенте для кнопок тулбара карточек добавлена возможность делать их неактивными, а также передавать в них списки CSS-классов.
  248. В файл app.json веб-сервиса добавлена настройка SecureServerStackTrace, посредством которой можно отключить передачу стек-трейсов с сервера на клиент. По умолчанию false.
  249. В web сервисе добавлена возможность переопределения строк локализации в файле app.json. Для этого в секции Settings нужно добавить секцию Localization и определить в ней нужные строки в формате key: value. Здесь key - lang:stringName (lang - код языка в соответствии со стандартом ISO 639, stringName - имя строки локализации), value - задаваемое для данной строки и языка значение. Подробнее в документации.
  250. Добавлена функциональность групп ссылок. Она позволяет формировать группы значений определённого типа (например, состояния документа, типы карточек), которые можно использовать в качестве значений различных настроек системы, поддерживающих в качестве значений группы ссылок.
  251. Добавлен плагин перерасчёта групп ссылок. Данный плагин производит перерасчёт значений групп ссылок с учётом возможных зависимостей между ними, а также обновление списка всех значений для типов групп ссылок.
  252. Добавлен плагин RefGroupsRecalculatePlugin для периодического перерасчёта групп ссылок.
  253. В типы условий “По состоянию документа”, “По типу документа” и “По типу заданий” добавлена возможность выбрать группу ссылок.
  254. В карточках “Вторичный процесс”, “Группа этапов” и “Шаблон этапов” для выбора типа и состояния теперь доступны не только одиночные значения, но и группы ссылок. При фильтрации фильтрации по типу и состоянию в соответствующих представлениях также можно указывать группы ссылок.
  255. В карточке “Шаблон файла” для выбора типа теперь доступны не только одиночные значения, но и группы ссылок.
  256. В карточке “Правило доступа” при указании типа, состояния документа, а также при добавлении нового правила в расширенных настройках прав доступа задания можно теперь выбирать не только одиночные значения, но и группы ссылок. Группы ссылок также доступны при фильтрации по типу и состоянию в представлениях “Правила доступа” и “Отчет по правилам доступа”.
  257. В карточке “Виртуальный файл” при указании типа и состояния карточки теперь можно выбирать не только одиночные значения, но и группы ссылок.
  258. В web-клиенте было изменено поведение пункта меню Подписать, при первом вызове будет предложено выбрать сертификат, при последующих вызовах будет использован последний выбранный сертификат.
  259. В web-клиенте добавлен пункт меню Подписать (выбрать сертификат), который отображается после выбора первого сертификата и позволяет использовать другой сертификат из списка.
  260. В веб-сервис и Chronos добавлено логирование строки подключения к Redis при возновении ошибки в момент установления соединения с ним.
  261. Добавлен вывод строки подключения к Redis в ответ на запрос к веб-сервису по адресу /check.
  262. Для колонки представления добавлена новая настройка SortByFormat для кастомизиции строки сортировки, которая подставляется вместо плейсхолдера #order_by при формировании SQL-запроса при выборке данных представления. Подробнее см. раздел документации Представления.
  263. В web-клиенте в форумах (обсуждениях) в режиме редактирования отправленного сообщения добавлена возможность сохранить на диск прикрепленный файл, если он был сохранен на сервере.
  264. В desktop-клиенте для элемента управления “Текст с форматированием” в режиме редактирования реализована возможность просматривать и сохранять прикрепленные файлы, которые были сохранены на сервере.
  265. Для приложения-помощника web-клиента Deski добавлены два параметра командной строки: dbg-docx-merge и dbg-docx-compare, которые позволяют автономно проверить сравнение и слияние файлов в Word.
  266. Доработан тип условия “По типу задания”. Теперь этот тип условия не привязан к проверке “Автора” или “Исполнителя”, а имеется возможность указывать список функциональных ролей.
  267. В действие “Таймер” в Workflow Engine добавлен новый флаг “Блокировать процесс при асинхронном вызове”, позволяющий блокировать выполнение действия по таймеру.
  268. Значение по умолчанию для флага “Блокировать процесс при асинхронном вызове” для элемента “Переход” в бизнес-процессах изменено на true.
  269. Добавлено расширение для представлений CreateCardCopyExtension, позволяющее создать новую карточку копированием выбранной в представлении карточки.
  270. В web-клиенте в контрол карточки “Таблица” добавлено сохранение и восстановление состояния при обновлении карточки, аналогичное тому, что реализовано в desktop-клиенте. При обновлении карточки сохраняется колонка сортировки таблицы и введённый текст фильтрации.
  271. Для приложения-помощника web-клиента Deski добавлена поддержка работы на терминальных серверах Windows.
  272. В представлениях при фильтрации по параметру строкового типа и при связывании родительского и дочернего представлений по параметру строкового типа пустая строка и null теперь обрабатываются системой как одно значение, если в настройках параметра не установлен флаг EmptyStringIsNotNull. См. руководство разработчика.
  273. Tessa Applications теперь записывает файлы логов в папку %LocalAppData%\tessa\logs вместо папки %AppData%\tessa\logs.
  274. Конвертация файлов в pdf из формата tif/tiff, формата htm/html посредством wkhtmltopdf, а также из офисных форматов посредством unoconv с использованием внешних программ LibreOffice/OpenOffice перенесена из Chronos в веб-сервис Jinni, который размещается в Docker-контейнере. Установка внешних программ осуществляется при сборке образа веб-сервиса документов в Docker-контейнере (по умолчанию устанавливается LibreOffice и WkHtmlToPdf).
  275. В представление “Типы условий” добавлена колонка “Описание”.
  276. Локализован суффикс “(все)” в именах агрегатных ролей.
  277. В обсуждениях (форумах) добавлена логика обработки ошибок, которые могут возникать при парсинге содержимого сообщения.
  278. В редакторе схемы данных в записи таблиц с типом “Перечисление” добавлена поддержка комплексных колонок.
  279. В настройки представления для рабочего места добавлен параметр, с помощью которого для web-клиента можно установить режим отображения заголовка таблицы. Подробнее данная функциональность описана в руководстве администратора.
  280. В карточке “Настройки типового решения” добавлена функциональность групп ссылок для таблиц “Ограничения при добавлении” и “Автоматическое включение группировки по циклам согласования”.
  281. Добавлена группа ссылок “Все состояния”, в которую входят все состояния документа из типового решения.
  282. Группа ссылок “Все состояния” теперь используется в типовых правилах доступа вместо перечисления всех состояний документа.
  283. В карточку настройки подписей можно добавлять файлы CRL (список проверки отзыва сертификатов).
  284. Добавлено расширение для представлений HelpViewExtension, позволяющее добавить кнопку в тулбар, при нажатии на которую будет отображена справочная информация.
  285. В скрипты Setup.bat/setup.sh и Upgrade.bat/upgrade.sh добавлен вызов команды пересчета групп ссылок.
  286. Доработан плагин рассылки уведомлений о заданиях. В app.json сервиса Chronos добавлена настройка TaskNotifications.MaxTasksPerUserNotification. Эта настройка ограничивает максимальное количество заданий, приходящихся на одного сотрудника, которые попадают в уведомление (по умолчанию - 20 заданий на сотрудника). Из базы отбирается ограниченное количество заданий, начиная с самых новых, которые потом передаются в уведомление. Информация об общем количестве заданий сверх тех, что попали в уведомление, также отображается в уведомлении, если общее количество заданий сотрудника превышает заданное ограничение. Помимо этого, в плагине был оптимизирован запрос получения информации по заданиям.
  287. На панель управления модального диалога редактирования карточки в раздел “Другие” добавлена кнопка “Перенести на вкладку”, которая открывает данную карточку в виде вкладки. При наличии в карточке не сохранённых изменений перед открытием будет отображён стандартный диалог, в котором можно будет подтвердить сохранение или отменить операцию.
  288. В настройках элементов управления Список и Ссылка флаг “Разрешить открывать ссылки” заменён на выпадающий список “Режим открытия ссылок”.
  289. При открытии карточки по ссылке в элементах управления Список и Ссылка из модального окна, такая карточка теперь также открывается в модальном окне как поведение по умолчанию.
  290. Доработаны проверки типов карточек на корректность, была добавлена проверка на наличие дубликатов секций в типе карточки и наличие дубликатов колонок в секциях. Также доработано исправление типов карточек, было добавлено исправление дубликатов секций и дубликатов колонок.
  291. Добавлено открытие параметров этапов по двойному клику по строке представления в рабочем месте “Администратор -> Маршруты -> Шаблоны этапов”, detail-представление “Этапы”.
  292. В маршрутах в этап “Диалог” добавлен параметр “Не выводить вкладки”, позволяющий скрыть вкладки карточки.
  293. В конструкторе бизнес-процессов в действия “Диалог”, “Задание” и “Группа заданий” добавлен параметр “Не выводить вкладки”, позволяющий скрыть вкладки карточки.
  294. В контекстном меню для файла расширена функциональность пунктов “Объединить с текущим в Word” и “Сравнить в Word”. Теперь для сравнения и объединения доступны файлы с расширением .odt.
  295. Для указания таймаутов запросов к серверу в файлах app.json клиентских приложений и тестов указывайте свойство Timeout вместо свойств OpenTimeout, CloseTimeout, SendTimeout. Ранее свойства OpenTimeout и CloseTimeout игнорировались, поэтому переименуйте SendTimeout в Timeout в ваших конфигурационных файлах.
  296. В web-клиенте и TessaClient для карточки, открытой во вкладке, на тулбар добавлены кнопки “Сохранить”, “Обновить” и “Редактировать”, а также группа “Другие” с кнопками “Скопировать ссылку” и “Удалить”. Соответствующие кнопки доступны по той же логике, что и соответствующие плитки.
  297. При подписании выводится информация о валидации подписи.
  298. В диалоге “Мои настройки” более не отображаются настройки, не связанные с текущим клиентом (web-клиент или TessaClient). Все настройки по-прежнему отображаются, независимо от клиента, в административном диалоге для настроек новых сотрудников и в карточке “Сотрудник”.
  299. Доработан диалог импорта карточек. Теперь элементы управления диалога блокируются во время выполнения процедуры импорта.
  300. Из метаданных рабочего места и файлов в формате jworkplace удалено свойство OwnerId, указывающее на владельца узла, и добавлен флаг IsOwnedByUser, который указывает на то, что владельцем узла является текущий пользователь.
  301. В метаданные представлений в раздел “AutoCompleteInfo” добавлена настройка “Маппинг представления”. Более подробно о ней можно прочитать в разделе документации разработчика Представления.
  302. В метаданных представлений исключена поддержка специфичных для СУБД типов данных: uniqueidentifier, nvarchar и др. Теперь могут использоваться только типы схемы: Guid Not Null, String(Max) Null и др. Версия формата для метаданных представлений увеличена до 3.
  303. При импорте представлений через TessaAdmin теперь поиск файлов происходит и по подпапкам выбранной в диалоговом окне импорта папки.
  304. В диалоговое окно экспорта представлений в TessaAdmin добавлен флаг “Подпапки по имени групп” (установлен по умолчанию), с помощью которого можно указать, что представления должны экспортироваться в подпапки, имена которых соответствуют названиям групп, в которые входят представления.
  305. В рабочем месте “Администратор” для справочников, открывающих свои значения в диалоговых окнах, теперь указаны настройки расширения на узел “Открыть первую вкладку без заголовка” и “Обновлять представления при закрытии диалога”.
  306. Удалены типы расширений на представления: OpenFromCompletionOptionsOnDoubleClickExtension и OpenFromFunctionRolesOnDoubleClickExtension. Вместо них используется расширение OpenInModalDialogOnDoubleClickExtension, а типы виртуальных карточек, открываемых по двойному клику, заданы в референсах в метаинформации соответствующих представлений.
  307. В представлении “Активные сессии” удалена колонка, параметр фильтрации и сабсет “Тип сервиса”. Для разделения сессий web-клиента и desktop-приложений используйте колонку, параметр и сабсет “Приложение”.
  308. В web-клиенте у контролов “Ссылка” и “Список” добавлена обработка настройки “Ширина popup”.
  309. Для плагина FileConverterPlugin реализована многопоточная обработка операций по конвертации файлов. При настройке используйте параметры, описанные в разделе Настройка плагинов Chronos для данного плагина.
  310. В web-клиенте боковая панель открывается сочетанием клавиш Ctrl+~, после чего можно сразу набирать текст для поиска. Нажатием Enter подтверждается первый пункт в списке, а стрелками на клавиатуре можно выбрать другой пункт в списке.
  311. В настройки расширения создания карточки из представления (CreateCardExtension) добавлены параметры “Открыть в полноэкранном режиме” и “Открывать только первую вкладку” по аналогии с расширением OpenInModalDialogOnDoubleClickExtension.
  312. Добавлен тип условия “Карточка создана”. Применяется для типов “Правило расчёта ACL” и “Генератор умных ролей”.
  313. Для карточки “Запись в истории” изменён дизайн, чтобы текст в блоке “Описание изменений” не отображался с двумя полосами прокрутки (прокрутка карточки и прокрутка текста).
  314. Добавлено расширение “Переместить колонку с тегами влево”, с помощью которого для указанного контрола “Представление” с размещением тегов “В колонке” можно переместить колонку с тегами влево. Подробное описание смотрите в разделе “Карточки” документации администратора.
  315. Добавлено расширение TagsInFirstColumnWorkplaceViewComponentExtension для узла рабочего места, с помощью которого в представлении с размещением тегов “В колонке” можно переместить колонку с тегами влево. Подробное описание находится в разделе “Рабочие места” документации администратора.
  316. В web-клиенте в меню на области предпросмотра файлов добавлена кнопка “Сбросить предпросмотр”.
  317. В настройках конфигурационного файла app.json для веб-сервисов изменена обработка значений ключей PathBase и GuyFawkesAuth. В начало значений, которые находятся по этим ключам, автоматически будут добавлены слэши, если они отсутствуют, поэтому указывать их необязательно.
  318. В web-клиенте в контролы “Таблица” и “Представление” добавлен вывод общего числа строк.
  319. В web-клиенте добавлена поддержка горячих клавиш для кнопок вторичных процессов и шаблонов бизнес-процессов.
  320. В web-клиенте на вкладке “История заданий” добавлены кнопки “Свернуть все” и “Развернуть все” для сворачивания и разворачивания всех групп истории заданий. Также добавлены варианты контекстного меню “Свернуть группы” и “Развернуть группы” для сворачивания и разворачивания уже конкретных групп дерева истории заданий.
  321. В web-клиенте в расширение “Представление истории заданий” добавлена кнопка “Свернуть все” для сворачивания всех групп истории заданий.
  322. В web-клиенте добавлена поддержка признака “Включить прокрутку” для контрола “Контейнер”.
  323. В web-клиенте в диалог и вкладку карточки сотрудника “Мои настройки” добавлен флажок “Компактный дизайн” (включён по умолчанию). В случае его установки используется дизайн, при котором в видимой области помещается больше информации за счёт более компактного расположения элементов управления.
  324. В web-клиенте исправлена ошибка, из-за которой у пользователей по умолчанию не работал компактный режим отображения карточек.
  325. В web-клиенте во вью модели RichTextBoxViewModel и TopicEditorViewModel добавлена возможность программно управлять кнопками тулбара.
  326. Реализована обработка операций по конвертации файлов на сервисе web (без участия сервиса chronos), если при создании запроса на конвертацию файла был задан флаг FileConverterRequestFlags.ExecuteSynchronously. При обработке операций с таким флагом не будут вызываться расширения IFileConverterExtension, а результат конвертации всегда добавляется в кэш. Как следствие - не задавайте флаг FileConverterRequestFlags.ExecuteSynchronously совместно с FileConverterRequestFlags.DoNotCacheResult.
  327. Добавлен таймаут ожидания результата сервисами web или chronos по операции конвертации файла при её обработке в сервисе ‘jinni’.
  328. Теперь в историю действий добавляются записи “Добавление администратора” и “Удаление администратора”, информирующие об изменении уровня доступа сотрудников на “Администратор”, а также о создании, импорте, удалении и восстановлении из корзины карточек сотрудников с уровнем доступа “Администратор”.
  329. Теперь при включённом в файле app.json веб-сервиса режиме "Configuration.StrictSecurity": true нельзя устанавливать пользователям уровень доступа “Администратор”, в т.ч. для при изменении уровня доступа существующих карточек сотрудников на “Администратор”, а также о создании, импорте, удалении и восстановлении из корзины карточек сотрудников с уровнем доступа “Администратор”.
  330. Во всех заданиях маршрутов и типового решения уменьшена максимальная высота для контролов “Таблица” до 400 пикселей, зависимых от DPI.
  331. В файл app.json Chronos добавлена настройка DeputiesRecalc.SyncChangedOnly. Это признак того, что синхронизация заместителей будет выполняться только для ролей, у которых есть изменения в составе или срок замещения заместителей роли настал или подошёл к концу.
  332. Для типов карточек изменено поведение флага “Административный”. Теперь любые действия с этой карточкой (в том числе чтение) недоступны пользователям, не являющимся администраторами.
  333. В настройки типа карточек “Карточки” добавлен флаг “Разрешить загрузку всем пользователям”, с помощью которого можно разрешить всем пользователям читать карточки, типы которых помечены флагом “Административный”, и их файлы (только те, типы которых не помечены флагом “Административный”).
  334. В SQL-запросах представлений через свойство DbmsVersion в выражении #if можно проверить версию СУБД. Например, #if (DbmsVersion.Major >= 12) для запроса PostgreSQL проверяет, что версия PostgreSQL 12.0 или старше.
  335. В отладке представлений TessaAdmin помимо типа используемой СУБД можно также выбрать версию. Как и тип, выбранная версия влияет только на генерируемый запрос, но не на фактически выполняемый (это определяется версией СУБД на сервере).
  336. В окне с информацией по конфигурации в дополнение к типу СУБД выводится его версия, если она сообщается клиенту (пользователь должен быть администратором, и в конфигурации должен быть отключён флаг StrictSecurity).
  337. В маршрутах в параметрах этапа “Создание карточки” в карточке документа теперь доступны для редактирования только поля “Режим” и “Шаблон”.
  338. В маршрутах в этапе “Доработка” теперь больше не переносится текст из поля “Комментарий к циклу маршрута” в поле “Комментарий” задания “Доработка”.
  339. Оптимизирована работа расширения AutomaticNodeRefreshExtension. Теперь узел не будет автоматически обновляться, если он не выбран, а также не раскрыт ни один его сабсет (если основным узлом является представление). Для того, чтобы обновление происходило всегда, в AutomaticNodeRefreshExtension добавлена настройка “Обновлять всегда”. Подробнее можно прочитать в разделе Настройка автоматического обновления представления.
  340. В web-клиенте для контрола “Текст с форматированием” добавлена возможность настраивать режим отображения встраиваемых изображений.
  341. В web-клиенте появилась возможность добавлять в папку wwwroot/extensions дополнительные папки с бандлами других модулей. Такие модули будут автоматически загружены при старте приложения. Дополнительно пути к таким папкам могут быть явно указаны в extensions.manifest.json.
  342. Переработана логика работы правила “Редактирование всех сообщений”. Теперь при наличии данного правила возможно редактировать сообщения без ограничения по времени отправки.
  343. В карточке “Настройки электронной подписи” по умолчанию теперь указан профиль подписи BES и не указан адрес TSP-сервиса.
  344. Добавлено событие “Аутентификация успешна” в типы действий журнала аудита. Событие “Неудачный вход в систему” переименовано в “Аутентификация неудачна”. Подробнее см. в разделе документации События истории действий.
  345. Для кнопок бизнес-процессов и вторичных процессов теперь используется иконка по умолчанию в случае, если она не задана.

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

  1. Добавлена команда Maintenance для автоматизации перевода сервера в режим технического обслуживания.
  2. Для команды ImportWorkplaces добавлен параметр -c, позволяющий перед импортом очистить текущий справочник рабочих мест.
  3. Команде SetKey в параметре -path теперь можно передать не только папку, но и путь до файла, в котором требуется заменить ключ.
  4. Для команды CheckDatabase добавлен параметр -db:databaseName, посредством которого определяется имя базы данных, подключение к которой выполняется. Без параметра команда по-прежнему проверяет подключение к БД master/postgres, независимо от базы, заданной в строке подключения. Укажите пустую строку в качестве databaseName "/db:", чтобы использовать то же имя базы, что и в строке подключения.
  5. Команда RebuildCalendar теперь может принимать параметр -id для указания целочисленного идентификатора календаря, который необходимо пересчитать. В случае, если параметр не указан, будет выполнен последовательный перерасчёт всех календарей в системе.
  6. Из команды ConvertConfiguration удалена функциональность конвертации экземпляров карточек и библиотек карточек.
  7. Добавлена команда ConvertCards. Данная команда преобразует файлы карточек и файлы библиотек карточек из старых форматов в новые (режим Upgrade), или обратно (режим Downgrade). Подробное описание команды содержится в руководстве администратора.
  8. Добавлена команда CopyCulture для создания и актуализации языка в библиотеках локализации. Подробное описание команды содержится в руководстве администратора.
  9. В скриптах, используемых при обновлении платформы, улучшен вывод сообщений об ошибках и добавлен вывод в лог в режиме трассировки момента начала конвертации каждой из строк. Это относится к скриптам: ConvertSearchQueries, ConvertTypes, ConvertWorkplaces, ConvertWorkplaceSettings, FillPlainText.
  10. Добавлена команда ExportDiffCulture для экспорта различий между библиотеками локализации в файл Excel. Подробное описание команды содержится в руководстве администратора.
  11. Добавлена команда ImportDiffCulture для импорта измененных строк локализации из Excel файла. Подробное описание команды содержится в руководстве администратора.
  12. Добавлена команда Check, которая позволяет вывести на консоль результаты запросов к веб-сервису по адресам /check и /hcheck. Подробное описание команды содержится в руководстве администратора.
  13. Команда InvalidateCache теперь позволяет сбрасывать кэш метаинформации рабочих мест, имя кэша указывается как Workplaces.
  14. Добавлена команда ValidateLocalization для проверки и сортировки строк в файлах библиотек локализации. Подробное описание команды содержится в руководстве администратора.
  15. Команда ConvertConfiguration в режиме downgrade более не принимает файлы .jtype, т.е. не преобразует их в устаревший XML-формат .tct.
  16. Команда ConvertConfiguration в режиме upgrade теперь читает формат из файлов .jtype, и, при необходимости, преобразует его в актуальную версию формата.
  17. Команда ConvertCards в режиме upgrade теперь конвертирует библиотеки карточек из XML-формата .cardlib в JSON-формат .jcardlib. Режима downgrade для библиотек карточек более не предусмотрено.
  18. Команда ExportCards с ключом -l:cardlib_file теперь экспортирует библиотеку карточек в JSON-формате .jcardlib.
  19. Добавлена команда UpdateActionHistory, с помощью которой можно настроить указанную базу данных для хранения истории действий. Подробнее в разделе руководства администратора Команда для подготовки базы данных к хранению истории действий.
  20. Для команды Script добавлен скрипт MigrateActionHistory, с помощью которого можно копировать записи истории действий между базами данных. Подробнее в разделе руководства администратора Команда для подготовки базы данных к хранению истории действий.
  21. Для команды Script добавлен скрипт UpgradeViewsSql, с помощью которого можно исправить типы данных колонок и параметров в метаданных представлений.
  22. Для команды Script добавлен скрипт MigrateToTaskRolesInCompletionOptions для миграции флагов “Скрыть от автора” и “Показать исполнителю” на список ролей, связанных с заданием.
  23. Для команды Script добавлен скрипт UpgradeTypesSql, который конвертирует метаинформацию по типам (карточек, файлов, заданий, диалогов) в базе данных в актуальную версию формата для них.
  24. Для команды Script добавлен скрипт UpgradeDatabase, применяющая необходимые миграции схемы. Её рекомендуется выполнять при каждом обновлении на новую версию СУБД.
  25. Для команды Script добавлен скрипт UpgradeViewsSql, который обновляет версию формата и исправляет типы колонок и параметров для метаданных представлений в базе данных.
  26. Для команды Script добавлен скрипт UpgradeWorkplacesSql, который обновляет версию формата метаданных рабочих мест в базе данных.
  27. Добавлена команда Compile, с помощью которой выполняется компиляция объектов системы. Подробнее в разделе Команды для прочих административных функций.
  28. Добавлено дополнительное логирование ошибки, возникающей из-за нарушения ограничения ключа (ID роли) при импорте представления. Дополнительное сообщение содержит в себе алиас представления и ID роли, с которой возникла проблема.
  29. Для команды Script добавлен скрипт TypeSettingsFix (ранее TypeFontsFix), посредством которого в файлах типов (карточек, файлов, заданий, диалогов) исправляется шрифт по умолчанию SelectedFontFamily.
  30. Добавлена команда RecalcAllGroups. Выполняет перерасчёт всех групп ссылок.
  31. Добавлена команда RecalcTypes. Выполняет перерасчёт групп ссылок конкретных типов.
  32. Добавлена команда RecalcGroups. Выполняет перерасчёт конкретных групп ссылок.
  33. Добавлена команда PrintJson для вывода содержимого json файла темы или конфигурации со связанными файлами.
  34. Добавлен вывод на консоль строки подключения к Redis при возновении ошибки в момент установления соединения с ним.
  35. Для команд Sql и Select добавлен флаг tran. Если он указан - SQL-скрипт выполняется внутри транзакции (без флага - каждые команды, разделённые GO имеют свою транзакцию, как и раньше). При наличии флага каждый файл выполняется в рамках отдельной транзакции, когда файлов несколько. Если при выполнении команды внутри транзакции возникла ошибка, то, независимо от её типа, происходит откат.
  36. В команды ImportScheme, ImportSchemeSql, ExportScheme, ExportSchemeSql и MigrateDatabase в случае ошибки при работе со схемой данных добавлено логирование объекта схемы, при обработке которого возникла ошибка.
  37. В команду ImportCards добавлена поддержка флага bundled для импорта множества карточек единым запросом. Подробную информацию можно прочитать в руководстве администратора.
  38. Для команды ConvertConfiguration добавлен режим BOM, с помощью которого можно преобразовать файлы с кодировкой UTF-8 без BOM в файлы с кодировкой UTF-8 с BOM.
  39. В команду ConvertConfiguration добавлен необязательный параметр “/scheme:pathToScheme”. Подробнее см. в разделе документации Преобразование файлов конфигурации.
  40. Скрипт ConvertCardTypesFormatVersion переименован в UpgradeTypesSql. В скрипт добавлен обязательный параметр “-pp:scheme=pathToScheme”. Подробнее см. в разделе документации Выполнить скрипты .NET с указанными именами.
  41. Для команды ExportViews добавлен флаг -s, с помощью которого можно указать, что представления должны экспортироваться в подпапки, имена которых соответствуют названиям групп, в которые входят представления.
  42. Для скрипта LocalizeViews добавлен параметр -pp:groupBySubfolders, с помощью которого можно указать, что представления должны экспортироваться в подпапки, имена которых соответствуют названиям групп, в которые входят представления.
  43. При импорте представлений посредством команды ImportViews теперь поиск файлов происходит и по подпапкам указанной в параметре source папки.
  44. Добавлен скрипт FixViewFolders, с помощью которого можно изменить структуру хранения представлений в папке конфигурации на подпапки. Подробнее в руководстве администратора.
  45. Для команды ManageRoles добавлен параметр -changed, который определяет, что синхронизация заместителей будет выполняться только для ролей, у которых есть изменения в составе или срок замещения заместителей роли настал или подошёл к концу.
  46. Добавлены команды OcrSync и OcrAsync, посредством которых возможно инициировать операцию по распознаванию текста для указанного файла в синхронном или асинхронном (с использованием Chronos) режимах.
  47. Исправлена ошибка в команде ImportCards: если параметр source был задан в виде относительного пути, то в случаях, когда был задан параметр /ignored, список игнорируемых файлов также создавался в виде относительных путей, что в дальнейшем, при сравнении имён файлов с абсолютными путями, приводило к игнорированию этих файлов.

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

  1. .NET 6.0.26
  2. AvalonEdit 6.3.0.90
  3. BarcodeLib 3.0.3
  4. BitMiracle.LibTiff.NET 2.4.649
  5. CAdESLib 1.6.1
  6. CsvHelper 30.0.1
  7. DocumentFormat.OpenXml 3.0.1
  8. HtmlAgilityPack 1.11.57
  9. HtmlSanitizer 8.0.811
  10. iTextSharp.LGPLv2.Core 3.4.15
  11. ITfoxtec.Identity.Saml2.MvcCore 4.10.8
  12. Kerberos.NET 4.6.50
  13. linq2db 5.3.2
  14. LiteDB 5.0.17
  15. MailKit 4.3.0
  16. Microsoft.CodeAnalysis.CSharp.Workspaces 4.8.0
  17. Microsoft.Data.SqlClient 5.1.4
  18. Microsoft.NET.Test.Sdk 17.8.0
  19. NetOfficeFw.Word 1.9.4
  20. Newtonsoft.Json 13.0.3
  21. NLog 5.2.8
  22. NLog.Web.AspNetCore 5.3.8
  23. Npgsql 7.0.6
  24. NTwain 3.7.3
  25. NUnit 4.0.1
  26. NUnit3TestAdapter 4.5.0
  27. OpenCvSharp4 4.9.0.20240103
  28. OpenTelemetry 1.7.0
  29. OpenTelemetry.Exporter.OpenTelemetryProtocol 1.7.0
  30. OpenTelemetry.Extensions.Hosting 1.7.0
  31. OpenTelemetry.Instrumentation.AspNetCore 1.7.0
  32. PDFiumSharpV2 1.1.4
  33. PDFsharp-wpf 6.0.0
  34. prometheus-net.AspNetCore 8.2.1
  35. QRCoder 1.4.3
  36. Quartz 3.8.0
  37. SixLabors.ImageSharp.Drawing 2.1.0
  38. SkiaSharp 2.88.7
  39. StackExchange.Redis 2.7.17
  40. Swashbuckle.AspNetCore 6.5.0
  41. Unchase.Swashbuckle.AspNetCore.Extensions 2.7.1
  42. ZXing.Net 0.16.9

Изменения API

  1. В web-клиенте в проекте SDK добавлена возможность использовать hot reload при разработке расширений, выполнив сборку командой npm run start. Эта возможность доступна только для локально запущенного сервера TESSA с установленной переменной среды ASPNETCORE_ENVIRONMENT=SdkHot.
  2. Добавлен NuGet-пакет Tessa.NetStandard, позволяющий использовать ограниченные API TESSA в приложениях .NET Framework 4.6.2+ и .NET Standard 2.0, а именно: Typed Json, TESSA Bson, ConfigurationManager (app.json parser), Tessa.Platform.Pipes (interprocess communication), StorageObject, IValidationResultBuilder, IEdsService, ISession/SessionContext, CommandContext, интеграция API посредством Unity.
  3. NuGet-зависимость NetOffice.Word, используемая в desktop-клиенте в библиотеке Tessa.UI для сравнения и объединения документов в Word, была заменена на NetOfficeFw.Word, которая поддерживает новые версии Microsoft Office и содержит исправления ошибок.
  4. В desktop-клиенте добавлено тестовое расширение CardEditorExtension, которое демонстрирует обработку событий переключения и закрытия узла рабочего дерева, а также скрытие вкладок карточки.
  5. В токене сессии ISessionToken культура и язык интерфейса теперь сериализуются как ISO код языка (en, ru) при передаче в форматах XML и JSON.
  6. Контроллер REST API для локализации перенесён по маршруту api/v2/localization. Его GET-запрос entries изменён: в параметрах принимается только ISO код языка, и возвращается словарь (константа локализации, локализованная строка для запрошенной культуры). Для получения строк локализации с комментариями необходимо использовать новый маршрут api/v2/localization/entries-with-comments, который получает ISO код языка и как и ранее возвращает список объектов PlainLocalizationEntry. Предыдущая версия метода доступна для обратной совместимости по маршруту api/v1/localization/entries. Методы, возвращающие и принимающие библиотеки локализации, теперь сериализуют их в новом формате 2, т.е. используется ISO код языка (en, ru) вместо строки LCID.
  7. Изменена логика сравнения DynamicValueAccessor с различными типами с помощью операторов >=, <=, <, >. До исправления, если один из операндов имел значение NULL, возникало исключение. Актуально для проверки полей карточки через dynamic-объекты, в т.ч. в скриптах процесса или маршрута, когда такое поле отсутствует в объекте. Например, выражение (await GetCardAsync()).DocumentCommonInfo.Amount < 10_000 теперь вернёт false, когда поле или секция отсутствует в объекте карточки. Ранее в этом случае выбрасывалось исключение.
  8. В конструкторе бизнес-процессов добавлена возможность включения формирования записей в листе согласования действиями не из группы “Маршруты”. Подробнее смотрите в руководстве разработчика.
  9. В базовых классах ServerTestBase и HybridClientTestBase добавлено удаление временного файлового хранилища перед выполнением тестов.
  10. В web-клиенте работа со средствами предпросмотра стала управляемой и более расширяемой. Теперь существующие средства базированы на вью-моделях с базовым интерфейсом IPreviewerViewModel, что позволяет расширять и управлять состоянием отдельных реализаций превью. Для этого в IFileControlManager содержится свойство previewToolViewModel, которое представляет собой текущее средство предпросмотра. Среди платформенных реализаций этого интерфейса: HtmlPreviewerViewModel, ImagePreviewerViewModel, MyPdfPreviewerViewModel, TxtPreviewerViewModel. Обращаясь к этому свойству из UI-расширения, можно менять доступное состояние. Также в IFileControlManager доступно свойство-функция previewToolFactory, задача которой - определить нужное средство предпросмотра при открытии файла. Данную фабрику можно переопределять и расширять собственными средствами предпросмотра через UI-расширения. Для разработки собственного средства предпросмотра обратитесь к разделу “Дополнительно” руководства разработчика web-расширений.
  11. В web-клиенте добавлена возможность отображения колонок грида в горизонтальной строке. Изменить поведение колонки можно в TableColumnViewModel.displayType через UI расширения.
  12. В web-клиенте полностью переработана объектная модель компонента таблицы.
  13. Реализация интерфейса IKrProcessLauncher доступна на клиенте, который не имеет зависимости от сборки Tessa.UI. Это позволяет запускать маршрут, например, из команды tadmin.
  14. При работе с путями в storage-объектах добавлена возможность перехода к родительскому элементу. Подробности в документе “Руководство разработчика” в разделе “База знаний”, п. “API для работы со storage-объектами”.
  15. Добавлен пример расширения FilterViewDialogOverrideWorkplaceComponentExtension для рабочего места, которое заменяет стандартный диалог настройки параметров фильтрации представления “Автомобили” на заданный. Подробнее смотрите в руководстве разработчика.
  16. Написана статья базы знаний Создание настольного (desktop) приложения, использующего API TESSA.
  17. В API тестов добавлен метод Tessa.Test.Default.Shared.Kr.CardLifecycleCompanionExtensions.GetValue<T>(ICardLifecycleCompanion, string, string), используемый для того, чтобы упростить получение значения строковой секции карточки.
  18. В API тестов удалён класс Tessa.Test.Default.Client.TestClientHelper.
  19. В API тестов в KrSecondaryProcessBuilder добавлены методы SetNotMessageHasNoActiveStages и GetNotMessageHasNoActiveStages, позволяющие задать и получить значение, соответствующее параметру “Не отображать сообщение при отсутствии этапов, доступных для выполнения” в карточке вторичного процесса.
  20. В API тестов в метод KrSecondaryProcessBuilder.SetProcessButton добавлен параметр “order”, позволяющий задать значение, соответствующее полю “Порядок” в карточке вторичного процесса.
  21. В API тестов добавлен метод Tessa.Test.Default.Shared.Kr.KrTestHelper.LaunchKrProcessWithDialogAsync(ICardRepository, KrProcessInstance, CancellationToken), позволяющий запускать вторичный процесс, при выполнении которого открывается диалог.
  22. В маршрутах добавлена возможность задания дополнительной информации при запуске основного процесса через отправку сигнала. Более подробная информация по запуску маршрутов содержится в разделе “Маршруты” руководства разработчика.
  23. В маршрутах добавлена возможность указания флага KrConstants.Keys.NotMessageHasNoActiveStages в дополнительной информации объекта KrProcessInstance, указываемого при запуске процесса, для отключения отображения сообщения при отсутствии этапов, доступных для выполнения. Параметр позволяет отключить указанное сообщение при запуске основного процесса или принудительно отключить его при запуске вторичного процесса вне зависимости от значения параметра “Не отображать сообщение при отсутствии этапов, доступных для выполнения”, указанного в карточке вторичного процесса.
  24. В метод HandlerHelper.AppendToCompletedTasksWithPreparing добавлен необязательный параметр, позволяющий изменить задание перед сохранением в Stage.InfoStorage по ключу KrConstants.Keys.Tasks.
  25. В web-клиенте в обсуждениях без топиков (EmptyForumViewModel) добавлена возможность добавлять команды в выпадающее меню.
  26. В API тестов в методы ChangeFileSourcePathWithTestSource(int) и ChangeFileSourcePathWithTestSource(Func<CardRow, bool>) класса ServerConfigurator добавлен параметр getPathFunc, позволяющий задать путь к файловому хранилищу.
  27. В API тестов добавлена возможность для действия TestAction настроить параметры выполнения.
  28. Добавлен метод SubtaskStageTypeHandler.RevokeSubTasksAsync(IStageTypeHandlerContext, CardTask), позволяющий завершать дочерние задания типов, возвращаемых методом SubtaskStageTypeHandler.GetSubTaskTypesToRevoke.
  29. Добавлено свойство IFilePagingControlModel.ChangePagesOnScroll, которое позволяет отключить автоматическое перелистывание страниц в предпросмотре PDF посредством колеса мыши или с клавиатуры. Пример работы с интерфейсом IFilePagingControlModel имеется в расширении CarUIExtension. По умолчанию свойство равно true.
  30. В desktop-клиенте для интерфейса области с постраничным предпросмотром PDF-файлов IFilePagingControlModel добавлены свойства ***CommandClosure, позволяющие переопределить команды для кнопок перехода между страницами и для кнопок поворота страниц.
  31. В web-клиенте актуализированы примеры кода в расширении CarUIExtension.
  32. Изменено поведение объекта Tessa.Platform.DbScopeSequentialGuidProvider при задании значения null параметру dbScope конструктора. В этом случае последовательность генерируется способом по умолчанию, который подходит для MSSQL, но не PostgreSQL.
  33. В метод ILoginProvider.GetLoginParametersAsync добавлен параметр title, посредством которого возможно изменить заголовок окна логина, отображаемого для этого вызова метода.
  34. Добавлены методы FormattingHelper.FormatNullable, возвращающие значение константы FormattingHelper.NullText, если переданный объект имеет значение null, иначе строковое представление объекта.
  35. Добавлен метод Tessa.Views.ViewHelper.LogViewExecutionErrorAsync, выполняющий создание карточки ошибки, которая содержит информацию об ошибке выполнения представления.
  36. Добавлен метод Tessa.Cards.CardHelper.TryGetLinkAsync, который возвращает ссылку на открытие карточки в desktop- или в web-клиенте в соответствии с объектом сессии.
  37. Добавлен объект IKrDocumentStateManager, используемый для изменения состояния карточки документа на сервере.
  38. Удалён метод KrProcessSharedExtensions.SetIfDiffer.
  39. В web-клиенте доработана объектная модель обсуждений.
  40. В desktop-клиенте для области предпросмотра IFilePreviewModel (стандартной на вкладке IFormViewModel и для контролов “Предпросмотр файлов”) добавлена возможность переопределить контрол WPF или модель представления, которая будет отображена в области предпросмотра вместо стандартного UI. Для этого используйте функции TryLoadCustomPreviewFuncAsync и UnloadCustomPreviewFuncAsync в интерфейсе IFilePreviewModel.
  41. В метод IValidationResultBuilder.Build() добавлен опциональный параметр localize (false по умолчанию). Если указано localize = true, то текст всех сообщений валидации и их детали обрабатываются методом LocalizationManager.Format(text) для локализации плейсхолдеров форматирования {$Placeholder}.
  42. В плагинах Chronos, наследуемых от класса Plugin, добавлено свойство StopRequestedToken типа CancellationToken, которое можно использовать в методе EntryPointAsync, чтобы остановить асинхронную операцию в момент запроса остановки, а не позднее перед таймаутом на запрос остановки. StopRequestedToken срабатывает в тот же момент, что и устанавливается свойство StopRequested.
  43. В web-клиенте добавлена поддержка UI-расширений для диалоговых окон посредством IFormUIExtension. Унаследуйте класс от FormUIExtension аналогично расширениям desktop-клиента.
  44. На сервере добавлена зависимость IHtmlSanitizer, посредством которой можно очистить содержимое html-документа или html-фрагмента от потенциально вредоносных скриптов и тегов. Используйте метод для противодействия XSS атакам перед отображением html в браузере.
  45. Добавлен параметр CancellationToken в метод IViewInterceptor.GetInterceptedViewAliasesAsync.
  46. В web-клиенте добавлена возможность устанавливать собственные средства предпросмотра. Описание возможности приведено в разделе “Дополнительно” руководства разработчика web-расширений.
  47. В desktop-клиенте в методах интерфейса ICAdESManager и в клиентских расширениях CardRequestExtension с типом DefaultRequestTypes.CAdESSignature теперь доступна информация по текущему контексту UIContext.Current, который будет содержать карточку, с файлами которой выполняется действие.
  48. В API тестов в класс Tessa.Test.Default.Shared.Kr.CardLifecycleCompanionExtensions добавлены методы: GetTaskAsync, GetTaskOrThrowAsync, GetValueAsync. Они являются аналогами соответствующих синхронных методов, но принимают асинхронный делегат с условием.
  49. В методы TessaServerSettings.SetFromConfig и PlatformExtensions.RegisterApplicationServerSettingsFromConfig добавлен опциональный параметр flags. Он позволяет указать параметры загрузки настроек сервера TESSA из файла конфигурации.
  50. В API тестов добавлена возможность опционально указывать файл лицензии. Если в файле app.json нет параметра "LicenseFile" или файл лицензии не существует, то используется временная лицензия. Параметры временной лицензии доступны в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Лицензия”.
  51. В модель представления элемента управления “Таблица” GridViewModel добавлен метод RefreshRowFilteringAsync. Вызовите его после изменения фильтра строк через свойство FilterRowFunc для обновления отображаемых строк в UI.
  52. Удалены методы Tessa.Platform.AssemblyHelper.IsDirectorySeparator.
  53. Удалено свойство Tessa.Platform.SourceProviders.AssemblySourceProviderBase.DirectoryPathWithPoint.
  54. Теперь при импорте карточек в случае, если импорт происходит поверх карточек, у которых отсутствуют строковые секции, эти секции будут восстановлены.
  55. В API тестов добавлена возможность изменения текущего запроса, выполняемого методами интерфейса ICardLifecycleCompanion<T>: Create, Save, Load, Delete. Изменение выполняется после применения соответствующего метода ICardLifecycleCompanionRequestExtender. Для централизованного управления запросами используйте объект, реализующий интерфейс ICardLifecycleCompanionRequestExtender.
  56. При слиянии карточек ситуация, когда секция карточки имеет ссылку на родительскую секцию, но такая секция отсутствует в типе карточки, больше не вызывает исключение, вместо этого генерируется предупреждение.
  57. В раздел FileSettings опций слияния добавлен флаг AlwaysUpdateContent, включение которого означает, что при импорте карточки контент файлов будет принудительно обновлен.
  58. При регистрации расширений теперь можно использовать делегаты для проверки значений в контексте. Они включают в себя методы .WhenFunc(IExtensionContext => bool) и .WhenFunc<TContext>(TContext => bool) для всех типов расширений, а также типизированные делегаты для большинства платформенных расширений, которые выполняют ту же функцию, но более удобны в использовании: .WhenXyzFunc(TContext => bool), где Xyz - название интерфейса расширения без ведущей I и суффикса Extension. Например, для ICardStoreExtension используйте метод .WhenCardStoreFunc(ICardStoreExtensionContext => bool). Допустимо использовать несколько делегатов для одного и того же расширения, в этом случае их результаты объединяются по “И”. При возникновении исключения в делегате оно выводится как ошибка в результате валидации.
  59. Из метода TestBase.InitializeDefaultLocalizationAsync удалён параметр assembly.
  60. В API тестов изменён механизм генерации имён временных ресурсов, используемых в тестах. Для создания временных имён используйте объект ITestNameResolver, который можно получить из Unity контейнера. Более подробная информация содержится в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Генерация имён временных ресурсов, используемых в тестах”.
  61. В методах Tessa.Test.Default.Shared.Kr.ServerConfigurator.ChangeFileSourcePathWithTestSource параметр getPathFunc сделан обязательным.
  62. В API тестов добавлен метод Tessa.Test.Default.Shared.TestBase.InitializeContainerAsync, предназначенный для регистрации зависимостей в контейнере. В нём не должно выполняться получение зависимостей, кроме необходимых для инициализации контейнера, например, ITestNameResolver.
  63. В API тестов изменён механизм удаления временного файлового хранилища. Для управления удалением используйте свойство TestBase.RemoveFileStorageMode. Метод TestHelper.RemoveFileStoragePath удалён.
  64. В API тестов добавлено свойство TestBase.RemoveFileStorageMode, позволяющее управлять удалением файлового хранилища при запуске/завершении всех тестов.
  65. В API тестов в метод Tessa.Test.Default.Shared.Kr.CardLifecycleCompanionExtensions.ModifyDocument добавлен необязательный параметр value, позволяющий задать добавляемое значение.
  66. Изменилась сигнатура методов ICardManager.ReadExportedRequestAsync и IStorageSerializer.DeserializeAsync. Методы больше не возвращают в кортеже IValidationResultBuilder, вместо этого добавлен обязательный параметр IValidationResultBuilder validationResult.
  67. В API тестов добавлены методы HybridClientTestBase.CreateContainerServerAsync() и HybridClientTestBase.InitializeContainerServerAsync(IUnityContainer), предназначенные для создания и инициализации серверного Unity контейнера, используемого в клиентских тестах, выполняющихся на специально подготовленном сервере приложений.
  68. В web-клиенте в модели представления topicEditorViewModel добавлены значения в поле name для элементов меню “Обновить” (Refresh), “Назад к списку топиков” (BackToTopics) и меню (TopicMenu).
  69. В web-клиенте в модели представления topicListViewModel добавлено поле name для меню (TopicListMenu).
  70. Используйте асинхронный метод ITessaPlatformDependencies.ExecuteInImpersonationContextAsync вместо синхронного ExecuteInImpersonationContext для выполнения кода в контексте учётной записи Windows.
  71. Изменены параметры метода StageTypeFormatterBase.AppendString. Удалены параметры: settings и name. Вместо них передавайте само значение. Добавлен параметр appendNewLine, позволяющий управлять добавлением символа новой строки.
  72. Добавлен метод IStoragePathResolver.IsUnambiguous, позволяющий определить, указывает ли путь на единственный элемент хранилища.
  73. Добавлен метод IStoragePathResolver.SetValueWithSuffix, принимающий хранилище типа IList.
  74. При слиянии карточек в процессе импорта раздел Info из карточки-источника теперь целиком переносится в карточку-назначение. Карточки-сателлиты, содержащиеся в Info, используют ту же логику слияния, как и основные карточки.
  75. В API тестов метод TestConfigurationBuilder.GetExternalPendingActionsProvider заменён на PendingActionsProviderExtensions.RegisterPendingActionsProducer.
  76. Добавлено свойство ICardModel.IsHtmlSanitizingEnabled, установив которое как true в области предпросмотра desktop-клиента выполняется санитайзинг html-документов для противодействия потенциальным угрозам безопасности. Ввиду ограничений, связанных с используемым браузером в области предпросмотра, санитайзинг приводит к искажениям в стилях html-содержимого, поэтому свойство по умолчанию установлено как false. Поскольку документ отображается внутри desktop-клиента, т.е. не внутри полноценного браузера, это не приводит к известным угрозам безопасности.
  77. В API тестов в методы TestHelper.ExecuteSqlScriptsAsync, TestHelper.ExecuteSqlScriptsFromEmbeddedResourcesAsync, TestConfigurationBuilder.ExecuteSqlScripts и атрибут SetupTempDbAttribute добавлена возможность указания таймаута при выполнении SQL-скриптов. В методах таймаут можно задать с помощью параметра timeoutSeconds, в атрибуте SetupTempDbAttribute - с помощью свойства SetupTempDbAttribute.TimeoutSeconds.
  78. В контекст скриптов подсистемы маршрутов IKrScript добавлено свойство CardType, возвращающее тип текущей карточки или значение null, если выполнение происходит вне карточки.
  79. В API календарей выполнены изменения в соответствии с тем, что теперь в системе одновременно может присутствовать несколько календарей с разными настройками рабочего времени. В методы IBusinessCalendarService теперь необходимо передавать идентификатор календаря, для которого будет производиться вычисление, по аналогии с идентификатором временной зоны. Добавлены методы получения информации по календарю роли GetRoleCalendarInfoAsync и по временной зоне роли GetRoleTimeZoneInfoAsync. Также добавлены методы получения информации по календарю по умолчанию GetDefaultCalendarInfoAsync, получения информации по конкретному календарю GetCalendarInfoAsync, получения информации по всем календарям GetAllCalendarInfosAsync и получения смещения временной зоны по умолчанию GetDefaultTimeZoneOffsetAsync. В ролях теперь нужно указывать индивидуальные календари по аналогии с временными зонами.
  80. Добавлена возможность создания правил расчёта ACL с помощью расширений. Система поддерживает возможность написания необходимых правил на языке программирования C#, если стандартных возможностей карточек правил оказывается недостаточно или это не оптимально для поставленной задачи. Подробнее функциональность описана в документации администратора в разделе “Подсистема ACL” в пункте “Программное правило расчёта ACL”.
  81. Разработан механизм расширений ACL для карточек типа “Правило расчёта ACL”. Включённые в правиле расчёта ACL расширения могут добавлять в интерфейс карточки новые контролы. Расширения позволяют ограничить или дополнить список карточек, для которых должен рассчитываться ACL по правилу, а также модифицировать список ролей, добавляемых в ACL карточки. Подробнее функциональность описана в документации администратора в разделе “Подсистема ACL” в пункте “Расширение карточки “Правило расчёта ACL”“.
  82. Добавлена возможность вызова перерасчёта ACL в расширениях с указанием списка пересчитываемых объектов, с указанием правила с помощью IAclManager, а также возможность запуска расчёта ACL на плагине принудительно с помощью реализации IAclManager, зарегистрированной с именем AclManagerNames.Deferred.
  83. Добавлена возможность вызова перерасчёта ACL со стороны клиента с помощью клиентской реализации IAclManager. Функциональность доступна только администраторам.
  84. Добавлена возможность работы с записями ACL из расширений на более низком уровне (создание, получение, удаление) с помощью IAclRepository.
  85. Добавлена возможность вызова обновления умных ролей в расширениях с указанием списка перерасчитываемых объектов, указанием генератора с помощью ISmartRoleUpdateManager, а также возможность запуска обновления умных ролей сразу на плагине с помощью реализации ISmartRoleUpdateManager, зарегистрированной с именем SmartRoleUpdateManagerNames.Deferred.
  86. Добавлена возможность вызова обновления умных ролей со стороны клиента с помощью клиентской реализации ISmartRoleUpdateManager. Функциональность доступна только администраторам.
  87. Добавлена возможность работы с умными ролями из расширений на низком уровне (создание, получение, изменение, удаление) с помощью ISmartRoleRepository.
  88. Добавлена возможность создания обработчиков INestedRoleEventManagerHandler, срабатывающих при добавления или удаления вложенных ролей. Обработчики регистрируются с помощью INestedRoleEventManager.
  89. Для CardTask добавлены методы-расширения AddRole, AddPerformer и AddAuthor. Эти методы призваны упростить добавление участников задания. AddPerformer и AddAuthor добавляют участников с функциональными ролями “Автор” и “Исполнитель” соответственно. Они призваны использоваться для поддержки функциональности, когда у задания всё ещё два участника (автор и исполнитель), а метод AddRole - универсальный и подойдёт для добавления участников с любыми функциональными ролями, в т.ч. теми, которые могут быть разработаны в проектном решении.
  90. Изменено перечисление CardTaskPlannedType, используемое в свойстве CardTask.PlannedType. Теперь в нём доступны два значения: None - с датой завершения не производится изменений; InMasterTime - дата завершения задания изменяется в соответствии с временной зоной записи из CardTask.TaskAssignedRoles, у которой установлен признак “Основная” (CardTaskAssignedRole.Master).
  91. Расчёт календаря теперь производится не хранимой процедурой на SQL сервере, а на основании скрипта, указанного в карточке “Способ расчёта календаря”, который в свою очередь указывается в карточке типа календаря. Карточка календаря использует указанный тип календаря при расчёте квантов для конкретного экземпляра календаря. В проектном решении доступно создание карточек типов календарей с собственным набором настроек, но по умолчанию существует карточка стандартной рабочей недели “Тип календаря: Рабочая неделя”.
  92. Добавлен сервис IBackgroundServiceQueue для выполнения неблокирующих фоновых задач в веб-приложении TESSA в качестве ASP.NET Core Hosted Service.
  93. Добавлен объект очереди отложенного удаления карточек IDefferedDeletionQueue, в которую можно помещать запросы на удаление карточек для их отложенной обработки в соответствующем плагине. Данное API доступно только на сервере.
  94. В API тестов добавлено свойство HybridClientTestBase.UnityContainerServer, возвращающее Unity-контейнер, используемый на сервере.
  95. В API тестов добавлен класс KrTestContext, предоставляющий дополнительную информацию, используемую в тестах.
  96. В API тестов добавлена возможность переопределения метода, выполняющего валидацию результатов выполнения отложенного действия по умолчанию. Для переопределения необходимо свойству KrTestContext.ValidationFunc задать требуемый метод. Если свойство KrTestContext.ValidationFunc возвращает значение null, то используется метод ValidationAssert.IsSuccessful(ValidationResult).
  97. В API тестов добавлены методы: KrSecondaryProcessBuilderExtensions.SetConditionForCard, KrStageGroupBuilderExtensions.SetConditionForCard и KrStageTemplateBuilderExtensions.SetConditionForCard, позволяющие задать условное выражение, ограничивающее применение вторичного процесса, группы или шаблона этапов указанной карточкой.
  98. В список флагов обработки процесса WorkflowEngineProcessFlags добавлен новый флаг SendToTaskSubscribers, который определяет, нужно ли отправлять сигнал на подписки по заданиям. Использование данного флага добавлено в методы-расширения для обработки сигнала процесса SendSignalToAllSubscribersAsync и SendSignalToAllSubscribersWithContextAsync.
  99. Добавлен метод Tessa.Platform.IO.FileHelper.CreateSubFolderPath(string), который создаёт и возвращает путь к уникальной по имени папке в заданной папке.
  100. Расширено API, связанное с внутренней реализацией экспорта и импорта карточек. Добавлены интерфейсы: IStorageMappingHandler, IStorageMappingResolver, IStorageMappingProvider, ICardExternalSourceLogic. Подробная информация в документации по API.
  101. Делегаты в классе PropertyGridSelectorSettings сделаны асинхронными. Они используются при формировании настроек в конструкторе карточек, что актуально при разработке контролов, валидаторов и других элементов конструктора карточек.
  102. В web-клиенте добавлен метод IControlViewModel.commitChanges, его функциональность аналогична методу desktop-клиента.
  103. Интерфейс IEDSProvider и его реализация изменены для обеспечения расширяемости по выбору настроек для подписания и проверки подписи. Создайте класс, унаследованный от EDSProvider, и переопределите его методы. В них параметр info соответствует параметрам запроса Request.Info для типа запроса DefaultRequestTypes.CAdESSignature. Со стороны клиента напишите расширение CardRequestExtension, использующее context.Request.Info для передачи информации из текущего объекта UIContext.Current (обычно из карточки). Пример таких расширений в руководстве разработчика.
  104. В клиентскую команду “Открыть карточку” (DefaultCommandTypes.OpenCard) добавлены необязательные параметры TypeID и TypeName, идентификатор и имя типа открываемой карточки соответственно. Подробная информация о клиентских командах содержится в руководстве разработчика в разделе “Маршруты”, в п. “Клиентские команды”.
  105. В desktop-клиенте добавлен интерфейс IHelpManager, управляющий отображением глобальной справки по системе. Справка вызывается по плитке в правой боковой панели. В web-клиенте используйте аналогичный модуль tessa/ui/helpManager.
  106. Константа WorkflowEngineHelper.ExtendedBusinessProcessTemplateTypeID, определяющая тип карточки “Расширенный шаблон бизнес-процесса”, помечена как Obsolete. Она используется только для поддержки обратной совместимости с ранее экспортируемыми карточками. Вместо неё необходимо использовать константу CardHelper.BusinessProcessTemplateTypeID.
  107. Усовершенствовано API тестов для сценариев удаления карточек с помощью объектов, реализующих интерфейс ITestCardManager.
  108. Усовершенствовано API тестов для сценариев работы с отложенными действиями.
  109. Добавлен интерфейс IStorageValuesKeeper, механизм, который позволяет запоминать и восстанавливать значения из хранилища (storage) по заданным путям. Подробности с примерами в руководстве разработчика.
  110. В web-клиенте был изменён контроллер для работы с SAML протоколом. Была добавлена возможность переопределять в Unity алгоритм работы контроллера через зависимость ISamlService. Реализация по умолчанию доступна в коде типового решения Tessa.Extensions.Default.Server.Web.Services.SamlService.
  111. При регистрации расширений методом WhenApplications указанные идентификаторы приложений добавляются к списку идентификаторов приложений, заданных в предыдущей регистрации этого же расширения, а не переопределяют список.
  112. Для контрола “Десятичное число” добавлена возможность изменить количество знаков после запятой посредством метода модели представления DecimalBoxViewModel.SetDigitsAfterSeparatorAsync в desktop-клиенте или через свойство DecimalBoxViewModel.digitsAfterSeparator в web-клиенте.
  113. В метод IConsoleLogger.LogExceptionAsync добавлен необязательный параметр warning. Если его указать как true, то исключение выводится в лог NLog на уровне логирования Warn.
  114. В контекст обработки IWorkflowEngineContext и для компилируемого объекта WorkflowEngineCompiledBase добавлено свойство Parameters с типом IDictionary<string, object>, которое содержит все параметры выполняемого скрипта действия. Ключом для получения параметра является имя параметра скрипта.
  115. В компилируемом объекте IWorkflowEngineCompiled в методы ExecuteActionAsync и ExecuteFuncAsync добавлен параметр с типом WorkflowActionMethodDescriptor, в котором необходимо передавать дескриптор запускаемого метода.
  116. Реализовано слияние функциональных ролей при импорте карточек.
  117. Для desktop-клиента добавлено свойство ITabbedFormViewModel.TabsAreCollapsed для скрытия заголовков всех вкладок и IFormViewModel.IsCollapsed для скрытия указанной вкладки.
  118. Для web-клиента добавлен интерфейс ITabbedFormViewModel (аналог соответствующего интерфейса в ТК). Добавлено свойство IFormViewModel.isCollapsed для скрытия указанной вкладки.
  119. Изменён интерфейс ISessionToken. Добавлено свойство PlatformVersion, содержащее версию платформы.
  120. Для контрола “Кнопка” в desktop-клиенте в модели представления можно указать минимальную ширину посредством свойства ButtonViewModel.MinButtonWidth. По умолчанию значение равно 100.0.
  121. Для контрола “Представление” в desktop-клиенте в модели представления можно указать минимальную высоту строки посредством свойства CardViewControlViewModel.MinRowWidth. По умолчанию значение равно 0.
  122. Добавлено свойство PageOptions для объектов ICardModel и IFilePreviewModel, посредством которого можно управлять функциями предпросмотра, в том числе добавлять кнопки сверху и снизу прокручиваемой области, используя вызов вида: PageOptions.InitializingFuncAsync = async ctx => ctx.TopItems.Add(...). Новые функции предпросмотра доступны посредством API IFilePreviewModel.PagingControl.
  123. В web-клиенте для API обсуждений добавлена возможность модификации всех видов контекстного меню.
  124. В метод IApplicationInitializer.InitializeAsync добавлен параметр modifyRequestAsync, позволяющий изменить запрос на инициализацию перед его отправкой на сервер.
  125. В запросе на инициализацию InitializationRequest добавлено свойство PublishMode, которое определяет, выполняется ли инициализация в режиме публикации.
  126. Для контрола “Кнопка” в web-клиенте в модели представления можно указать минимальную ширину посредством свойства buttonViewModel.minButtonWidth. По умолчанию значение равно 100.0.
  127. Для контрола “Представление” в web-клиенте в модели представления можно указать минимальную высоту строки посредством свойства viewControlViewModel.minRowHeight. По умолчанию значение равно 0, т.е. высота не ограничивается.
  128. Добавлен объект TransactionScopeContext, в который можно передавать обработчики, которые будут выполнены после завершения транзакции. Данный объект можно использовать в методах расширений, выполняемых внутри транзакции, а также в скриптах маршрутов и конструктора процессов. Также добавлен объект ITransactionScope для управления TransactionScopeContext и для запуска обработчиков текущего контекста.
  129. В web-клиенте для контрола “Вкладки” добавлена возможность скрывать вкладки через поле visibility.
  130. В моделях представления AutoCompleteEntryViewModel и AutoCompleteTableViewModel свойства HideSelectorButton и IsClearFieldVisible сделаны изменяемыми.
  131. В форумах (обсуждениях) диалоги добавления/изменения топиков и участников теперь выводятся с использованием типов диалогов. Удалены виртуальные секции Fm*, которые автоматически добавлялись в типы карточек, включённые в типовое решение. При этом изменён интерфейс IForumDialogManager и другие объекты, связанные с UI.
  132. В делегат CreateDialogFormFuncAsync добавлен опциональный параметр typeFilter, который регулирует типы, предоставляемые в метаинформации диалога. По умолчанию, как и ранее, возвращается указанный тип диалога, а также все файлы и задания, что позволяет отобразить диалог как полноценную карточку. Для оптимизации передайте в параметре функцию DialogFormInvoker.FilterDialogOnly (отображение диалога без файлов и заданий) или DialogFormInvoker.FilterDialogWithFiles (отображение диалога с файлами без заданий).
  133. Для desktop-клиента добавлено свойство ITabbedFormViewModel.TabsAreCollapsed для скрытия заголовков всех вкладок и IFormViewModel.IsCollapsed для скрытия указанной вкладки.
  134. Для web-клиента добавлен интерфейс ITabbedFormViewModel (аналог соответствующего интерфейса в ТК). Добавлено свойство IFormViewModel.isCollapsed для скрытия указанной вкладки.
  135. Для INotificationManager добавлена реализация параметра для определения списка получателей AggregateNotificationRecipientsSourceParameter, которая может включать в себя другие параметры для определения списка получателей.
  136. Для INotificationManager в параметры определения списка получателей IDNotificationRecipientsSourceParameter и RoleNameNotificationRecipientsSourceParameter добавлено свойство IsOptional, которое указывает, что рассчитанные по данному параметру получатели уведомления являются опциональными.
  137. В NotificationRecipient добавлено свойство IsOptional, которое указывает, что получатель уведомления является опциональным.
  138. В web-клиент добавлены события tabSelected и tabDeselected для уведомления контролов, находящихся на активной кладке.
  139. Добавлен тип сообщения MessageType.Custom, который можно использовать для отправки служебных сообщений с произвольным текстом. Служебные сообщения отправляются методом IForumProvider.SendMessageAsync, но только находясь на сервере.
  140. Классы-наследники Tessa.Platform.Runtime.WebProxy теперь могут в конструкторе указать пустое имя контроллера controllerRoute, при этом методы класса будут выполнять запросы по URI-адресу относительно корневого пути веб-сервиса. Также в класс добавлен флаг RequestFlags.OmitInstanceInUri, определяющий, что при формировании запроса необходимо не добавлять имя экземпляра сервера InstanceName в URI-адрес запроса. Это необходимо для запросов к адресам, которые не являются MVC-контроллерами TESSA, например, к адресу /hcheck.
  141. В форумы (обсуждения) добавлен интерфейс ITopicNotificationService для получения списка почтовых уведомлений. При необходимости отправки почтовых уведомлений пользователям, не являющимся участниками топика, используйте класс-наследник от Tessa.Extensions.Default.Server.Forums.Notifications.TopicNotificationService.
  142. В событии ICardStoreExtensionContext.OnContentStoring ошибку загрузки контента теперь можно указать в свойстве eventArgs.ContentContext.ValidationResult помимо исключения.
  143. Добавлен объект ISignedSessionTokenProvider, посредством которого можно подписывать токены сессии и проверять подпись. Данный API используется при обработке отложенных операций, которые необходимо выполнить в пользовательской сессии.
  144. Добавлено свойство IFileConverterResponse.SuggestedName, содержащее предпочитаемое имя файла после конвертации.
  145. В API тестов добавлена возможность выполнения действия “Таймер” с помощью метода WeProcessInstanceLifecycleCompanion.ProcessTimerOperations.
  146. Для CardTask добавлена возможность указать плановый срок в рабочих днях PlannedWorkingDays. При этом система сама получит продолжительность рабочего дня из настроек календаря, указанного для задания, и вычислит срок в квантах, который, в свою очередь, будет использован для вычисления плановой даты завершения задания.
  147. В API тестов в PermissionsConfigurator добавлены методы AddFlags, RemoveFlags, ReplaceFlags, AddType, RemoveType, AddState, RemoveState, AddRole, RemoveRole, позволяющие оптимизировать выполнение соответствующих операций над карточкой правила доступа.
  148. В API тестов добавлены методы KrStageGroupBuilderExtensions.SetConditionForCard и KrStageTemplateBuilderExtensions.SetConditionForCard, позволяющие задать условное выражение, ограничивающее применение группы или шаблона этапов указанной карточкой.
  149. В API тестов в класс TestRoleHelper добавлены методы TryAddUserIfEmptyAsync и AddUserAsync, упрощающие добавление пользователя в указанную роль.
  150. В API тестов добавлен метод CardLifecycleCompanionExtensions.GetTaskWithRoleOrThrow, возвращающий первое задание, имеющее указанный тип и назначенное на роль с заданным идентификатором.
  151. В API тестов добавлено поле KrStageGroupDescriptor.DefaultStageGroup, содержащее дескриптор группы этапов по умолчанию (“Согласование”). Его можно использовать вместо значения возвращаемого методом KrStageGroupDescriptor.GetDefaultStageGroupAsync, если в группе этапов по умолчанию не изменялся порядок или название.
  152. Добавлен метод Tessa.Platform.AssemblyHelper.SaveEmbeddedResourcesToFileAsync, позволяющий сохранить содержимое встроенного ресурса в указанном файле.
  153. В класс KrConstants добавлены константы DefaultApprovalStageGroupName и DefaultApprovalStageGroupOrder, содержащие информацию о группе этапов по умолчанию (“Согласование”).
  154. В API тестов добавлена возможность использования областей выполнения. Подробнее в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Области выполнения”.
  155. В API тестов добавлен механизм для отслеживания временных внешних ресурсов. Подробнее в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Сборка мусора”.
  156. В web-клиенте для элементов управления “Текст с форматированием” и “Обсуждения” добавлено свойство spellcheck, позволяющее включить/выключить стандартную проверку орфографии браузера. Свойство доступно в RichTextBoxViewModel.spellcheck и ForumViewModel.spellcheck соответственно.
  157. В API тестов изменён запрос выполняемый методом CardLifecycleCompanion<T>.Load. Теперь свойство CardGetRequest.GetTaskMode вместо значения CardGetTaskMode.All равно CardGetTaskMode.Default. Подробнее про изменение запроса см. в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Управление жизненным циклом карточки”.
  158. В API серверных тестов изменён используемый ICardLifecycleCompanionRequestExtender. Теперь запросы по умолчанию выполняются с указанием CardServiceType.Default вместо CardServiceType.Client. В общем случае рекомендуется использовать клиентские тесты. Подробнее про изменение запроса см. в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Управление жизненным циклом карточки”.
  159. В web-клиенте для объекта validationResultItem добавлено поле key. Позволяет получить ключ сообщения, возникшего при валидации.
  160. В web-клиенте для элемента управления “Текст с форматированием” добавлена возможность скрывать кнопку разворачивания на весь экран. Управлять видимостью кнопки можно через свойство RichTextBoxViewModel.canExpand.
  161. В методы IForumProvider.AddParticipantsAsync и AddRolesAsync добавлен параметр serviceMessageMode для отключения служебных сообщений о появлении новых участников обсуждения. Параметр игнорируется при запросе с клиента.
  162. В API клиентских тестов добавлена возможность простой работы от имени разных пользователей. Подробнее в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Управление сессиями в клиентских тестах”.
  163. В проекты с клиентскими тестами добавлены файлы конфигурации appsettings.json. Они содержат параметры тестового сервера, используемого в клиентских тестах.
  164. На сервере добавлена зависимость IOperationRepositorySettings, посредством которой можно ограничивать запуск операций через IOperationRepository со стороны клиентских приложений.
  165. В web-клиенте объект DeskiManager был перенесён из типовых расширений default в платформу, неймспейс tessa\deski. В этом объекте теперь доступна вся информация о Deski из компонента MetadataStorage.
  166. В API тестов изменено расположение классов Tessa.Test.Default.Server.ServerTestBase и Tessa.Test.Default.Server.Kr.KrServerTestBase на Tessa.Test.Default.Shared.ServerTestBase и Tessa.Test.Default.Shared.Kr.KrServerTestBase соответственно. Это позволяет создавать серверные тесты в проектах с клиентскими тестами для использования клиентских зависимостей.
  167. В интерфейс IOperationRepository в метод создания новой операции добавлен параметр postponedTo, который определяет дату и время, до наступления которого операция будет отложена.
  168. В desktop-клиенте сделаны асинхронными методы в объектах ITreeItem, IViewContainer, IWorkplaceFactory, IWorkplaceViewComponent.
  169. В desktop-клиенте для компонента дерева рабочего места IWorkplaceViewComponent добавлены события инициализация, загрузки, предварительной выгрузки, выгрузки и закрытия компонента.
  170. В desktop-клиенте для вью-модели рабочего места добавлены события добавления и удаления узла дерева рабочего места, а также метод для установки текущего узла рабочего места.
  171. В desktop-клиенте для методов создания и показа диалогового окна в IUIHost и ICardDialogManager добавлен параметр supressUnloading, указывающий на то, что при закрытии окна диалога не должна производиться выгрузка содержимого.
  172. В desktop-клиенте в событие закрытия рабочего места добавлена возможность отменить закрытие через аргумент e.Cancel.
  173. В web-клиенте добавлено свойство PreviewManager.previewInDialog, позволяющее включить/выключить предпросмотр файлов в диалоговом окне.
  174. В web-клиенте добавлена возможность закрывать представления, открытые в диалоге, посредством объекта UIContext.
  175. Добавлены свойства IScrollingControlViewModel.MaxImageWidth и MaxPreviewImageWidth, позволяющие управлять максимальной шириной рендеринга страниц документа для области предпросмотра с прокруткой страниц. Также добавлен метод ScrollingControlViewModel.CalculateRecommendedMaxImageWidthAsync для определения рекомендуемой ширины страниц (вызывается автоматически).
  176. Добавлена реализация ICardMetadataBuilder - CardMetadataAllTablesBuilder, выполняющая построение метаинформации для всех таблиц независимо от их использования в типах карточек.
  177. В API тестов в методе CardLifecycleCompanionExtensions.CompleteTask добавлена возможность автоматического определения состояния завершаемого задания. Для этого необходимо для параметра deleteTask указать значение null.
  178. Добавлен серверный кэш WorkplacesCache для метаинформации рабочих мест. Серверная реализация ITessaWorkplaceService теперь использует данный кэш в методах для получения метаданных рабочих мест.
  179. В web-клиенте для расширений TreeItemExtension и WorkplaceViewComponentExtension добавлена возможность переопределять метод finalized.
  180. В IWorkflowEngineContext добавлен метод GetMainCardSatelliteAsync, позволяющий получить карточку сателлита и сохранить её в области видимости карточек для обработки в процессе Workflow Engine.
  181. В метод IForumProvider.AddTopicAsync добавлен опциональный параметр authorAction, позволяющий управлять тем, требуется ли добавлять автора в участники создаваемого топика и подписывать его на уведомления.
  182. Добавлена возможность отображать диалоги, основанные на типе карточки “Диалог”, с фоном аналогичному фону карточек. В делегат CreateDialogFormFuncAsync добавлен опциональный параметр formCreationOptions. По умолчанию равен FormCreationOptions.None, что значит то, что форма создается стандартным образом. Установка параметра, как FormCreationOptions.AlwaysCreateTabbedForm означает, что любая форма будет создана как ITabbedFormViewModel без видимости вкладок, что отображается как форма с полупрозрачной подложкой с обводкой. В web-клиенте в функцию createDialogForm добавлен параметр с аналогичным поведением.
  183. Методы фабрики INotificationUIFactory, создающие типовые объекты для использования в API всплывающих уведомлений, сделаны асинхронными.
  184. В конструкторе бизнес-процессов изменён API для работы с блокировками на обработку экземпляров бизнес-процессов. Удалён метод Create, создающий скоуп для работы с блокировками, а метод LockProcessAsync теперь не возвращает объект IAsyncDisposable, вызов DisposeAsync которого снимал блокировку с процесса. Снятие блокировок теперь привязано к скоупу транзакции.
  185. Для объекта IFileTemplatesManager добавлен метод IsFileTemplatesExistsAsync, который позволяет проверить, существуют ли шаблоны файлов для типа карточки, типа документа или представления.
  186. Добавлен интерфейс ISourceProviderLinker, механизм, который cвязывает между собой ресурсы, представляющие собой источник контента или директорий через провайдеры ISourceContentProvider или ISourceDirectoryProvider, с возможностью создания нового ресурса в качестве связанного, а также перезаписи данных из связанного ресурса в изначальный.
  187. В метод ICardUIManager.ProcessTemplateResponseAsync добавлен параметр cardModelModifierActionAsync, позволяющий изменить созданную модель представления карточки после инициализации UI.
  188. Изменена сигнатура методов CardUIHelper.TryCreateFromTemplateAsync и CardUIHelper.TryCreateFromTemplateResponseAsync. Параметры modifyCardActionAsync, modifyEditorActionAsync и displayValue удалены, вместо них нужно использовать свойства CardModifierActionAsync, CardEditorModifierActionAsync и DisplayValue параметра options. У метода CardUIHelper.TryCreateFromTemplateResponseAsync удалён параметр workspaceName. Для изменения заголовка рабочего места используйте свойство CardEditorModifierActionAsync параметра options.
  189. Изменена сигнатура метода UIExtensions.CreateFromTemplateAsync. Изменён тип параметра options с OpenCardOptions на CreateCardOptions. Параметры templateInfo, modifyCardActionAsync и modifyEditorActionAsync удалены, вместо них нужно использовать свойства Info, CardModifierActionAsync и CardEditorModifierActionAsync параметра options.
  190. В web-клиенте для всех контролов был изменён подход для установки классов CSS. Теперь используется объект СlassNameList вместо строк.
  191. Для интерфейса IFilePreviewManager добавлен метод PreviewRequiresConversionAsync, который определяет, нужно ли использовать конвертацию в pdf для предпросмотра файла.
  192. Изменён API для работы с блокировками на чтение и запись правил доступа. Переменованы методы IKrPermissionsLockStrategy.TryObtainReaderLockAsync и IKrPermissionsLockStrategy.TryObtainWriterLockAsync в ObtainReaderLockAsync и ObtainWriterLockAsync соответственно. Указанные методы теперь возвращают результат взятия блокировки, а не объект IAsyncDisposable, вызов DisposeAsync которого снимал блокировку. Снятие блокировок теперь привязано к скоупу транзакции.
  193. В маршрутах в IKrScope.GetMainCardAsync добавлена возможность получения карточки сателлита по его идентификатору из кэша, если он был туда помещён с помощью одного из методов: IKrScope.GetKrSatelliteAsync, IKrScope.TryGetKrSatelliteAsync, IKrScope.CreateSecondaryKrSatelliteAsync, IKrScope.GetSecondaryKrSatelliteAsync.
  194. В объекте IKrVirtualFileManager добавлен метод GetSuggestedFileNameAsync для получения предпочитаемого имени виртуального файла для указанного в шаблоне имени версии. Также метод FillCardWithFilesAsync теперь возвращает результат локализации, вместо его передачи через параметр.
  195. В методы сериализации и десериализации настроек InitializationExtensionHelper.SerializeSettingsFromSectionsByTypeAsync и InitializationExtensionHelper.DeserializeSettingsToSectionsByTypeAsync добавлен параметр virtualSectionsOnly, который определяет, что должны сериализоваться/десериализоваться только виртуальные секции. Также из метода InitializationExtensionHelper.DeserializeSettingsToSectionsByTypeAsync, принимающего настройки в виде Dictionary<string, object>, удалён неиспользуемый параметр typedJson.
  196. В API тестов в объект ValidationResultItemValidator добавлены методы: CheckMessage, CheckObjectName, CheckObjectType, CheckFieldName и CheckDetails. Они позволяют упростить проверку соответствующих значений объекта IValidationResultItem и вывести ожидаемые значения при её нарушении.
  197. Добавлен делегат ShowCardOptions.GetCardToActivateFuncAsync, посредством которого при открытии карточки можно переопределить активируемую вкладку среди ранее открытых вкладок. Если делегат не используется, то активация выполняется в соответствии с идентификатором карточки.
  198. Методы интерфейсов IUIHost и IDocumentTabManager модифицированы таким образом, чтобы возвращать объект ICardUIContextObject для карточек - это реализация интерфейса IUIContextObject с дополнительным свойством CardID. При этом интерфейс IDocumentTabManager возвращает ICardTab, реализующий ICardUIContextObject. В IDocumentTabManager добавлены методы поиска вкладок с карточками и рабочими местами TryGetTabAsync и TryGetCardAsync. Любую вкладку можно закрыть, вызвав методы интерфейса ICloseableTab, или активировать, вызвав IDocumentTabManager.ActivateAsync.
  199. Для ValidationException реализована возможность указывать HTTP код ошибки при помощи свойства StatusCode.
  200. Добавлены асинхронные методы LocalizationManager.FormatAsync, аналогичные синхронным Format. Рекомендуется использовать асинхронные методы, где это возможно.
  201. Удалена функциональность бинарной сериализации и десериализации объекта CardSerializableObject и его наследников.
  202. Удалена функциональность XML сериализации объекта CardSerializableObject и его наследников (сохранена функциональность XML десериализации для обратной совместимости).
  203. Добавлен интерфейс IAsyncStorageSerializable для объектов, поддерживающих асинхронную сериализацию/десериализацию в Dictionary<string, object> и обратно.
  204. Объект CardSerializableObject теперь имеет асинхронную сериализацию и реализует интерфейс IAsyncStorageSerializable.
  205. Добавлено целочисленное поле FormatVersion в объект CardType. В формате JSON поле сериализуется в начало объекта и называется .formatVersion. По умолчанию версия равна 1, т.е. в случае, если в файле JSON или в сериализованном поле в базе данных версия отсутствует, версия формата считается равной 1.
  206. Удалены свойства Order и TabOrder в формах, блоках, контролах и пр., теперь порядок у данных объектов тот, в котором они перечислены в коллекции.
  207. Тип CardType больше не является формой сам по себе и не наследуется от CardTypeForm. Все формы вкладок карточки расположены в коллекции CardType.Forms.
  208. Изменён интерфейс ICardModel. Свойство MainForm теперь имеет интерфейс IFormViewModelBase. Добавлены свойства с реализацией по умолчанию: IFormWithBlocksViewModel MainFormWithBlocks и IFormWithTabsViewModel MainFormWithTabs.
  209. Изменена иерархия наследования интерфейса IFormViewModel. Добавлены интерфейсы IFormViewModelBase, IFormWithTabsViewModel и IFormWithBlocksViewModel.
  210. Класс FormattingHelper перенесён из пространства имён Tessa.Platform в Tessa.Platform.Formatting. Для всех методов, выполняющих форматирование, добавлен опциональный параметр IFormatProvider, где по умолчанию передаётся LocalizationManager.CurrentCulture, что соответствует параметрам форматирования для текущей сессии. В web-клиенте класс formattingHelper перенесён из tessa/platform в tessa/platform/formatting. Используйте эти классы для форматирования даты, времени, чисел и денежных сумм.
  211. Параметры форматирования текущей сессии в API .NET доступны через метод LocalizationManager.GetCurrentFormattingSettingsAsync и свойство LocalizationManager.CurrentCulture. В web-клиенте используйте свойство FormattingManager.instance.settings.
  212. Для форматирования даты, времени, чисел и денежных величин используйте поддерживаемые типовые плейсхолдеры форматирования .NET. Например, укажите g вместо dd.MM.yyyy HH:mm для вывода даты и времени без секунд для учёта настроек форматирования пользователя. Это относится к строкам формата в элементах управления и плейсхолдерах, и к использованию форматирования в коде скриптов и расширений .NET, а также в web-клиенте при вызове методов formatToString и LocalizationManager.format (перечисленные в документации строки допустимы к использованию в web-клиенте).
  213. В элементах управления desktop-клиента, наследуемых от класса ControlViewModelBase, текущие настройки форматирования доступны через свойство FormattingSettings. Это позволяет получить доступ к свойству синхронно, вместо вызова асинхронного статического метода LocalizationManager.GetCurrentFormattingSettingsAsync.
  214. Для метода WebHelper.InitializeWebServerAsync добавлен опциональный параметр bool initializeLocalization (по умолчанию true). Укажите false, чтобы не выполнять инициализацию локализации, что полезно при использовании в гибридных тестах.
  215. Для desktop-приложений в следующие классы UI добавлена возможность программного управления фокусом: ClientQuickSearchViewModel, CurrentPageViewModel, OptionalPagingButton, QuickSearchViewModel, ShowContextMenuButtonViewModel, ClearFilterButton, FilterButton, NextPageButton, PreviousPageButton, RefreshButton, ViewControlToolbarButtonViewModel, ExpandAllButtonViewModel.
  216. В web-клиенте добавлена функция localize, удобным образом выполняющая локализацию. Примеры использования: localize('$Something'); localize('{$Something} else'); localize('{$Hello}, {0}', userName). Поддерживается вызов как tag function. Импорт в коде расширений: import { localize } from '@tessa/application'.
  217. В интерфейсе IExtensionContainer (C#) добавлены перегрузки методов ResolveExecutorAsync и TryResolveExecutorAsync, принимающие дополнительный параметр synchronized. Если передано значение true, то к созданному объекту возможно одновременное обращение из разных потоков (нитей выполнения). Перегрузки, не принимающие этот параметр, подразумевают значение synchronized: false.
  218. Добавлено свойство ICardEditorModel.OperationCompleted, которое возвращает задачу прогресса завершения текущей операции с карточкой.
  219. Добавлен метод ICardEditorModel.SaveCardWithResultAsync, аналогичный ICardEditorModel.SaveCardAsync, но возвращающий вместо булевого значения тип ValidationResult.
  220. Метод FormattingHelper.Format переименован в FormatValue.
  221. В проектах расширений и скриптах C# доступны глобальные методы, подключаемые в файле GlobalUsings.cs в проекте Tessa.Extensions.Default.Shared. В текущей версии платформы это методы форматирования из класса FormattingHelper и методы локализации из класса LocalizationManager, где вместо методов Format(Async) указываются LocalizeFormat(Async); названия других методов не изменены. При вызове таких методов не требуется подключать пространства имён и писать имя класса, например: Localize("$UI_Common_OK"); FormatDateTimeWithoutSeconds(dateTime). Предыдущий способ вызова методов также доступен.
  222. В скриптах C# добавлена директива #static, посредством которой в скрипт подключается содержимое указанного статического класса, аналогично конструкции using static. Пример: #static System.Math позволяет использовать методы Min(a, b), Max(a, b) и др. методы класса Math без написания имени класса.
  223. В API компиляции Tessa.Compilation добавлена поддержка конструкций using static для импорта содержимого указанных статических классов посредством свойства ICompilationContext.Statics и аналогичных свойств и методов в других объектах API.
  224. В форумах (обсуждениях) добавлен метод IForumProviderStrategy.HasUnreadMessagesAsync, возвращающий признак того, что в указанном топике присутствуют непрочитанные сообщения для текущего пользователя.
  225. Объекты ICardToolbarViewModel и ICardToolbarItemCollection предоставляют метод SuspendNotifications, предотвращающий уведомления для коллекции кнопок на тулбаре о событиях PropertyChanged и CollectionChanged до тех пор, пока не будет вызван метод Dispose на возвращённом объекте. Это позволяет оптимизировать отрисовку в desktop-клиенте при большом количестве изменений в кнопках на тулбаре, например, при сохранении или обновлении карточки.
  226. Объект SuspendableObservableCollection перенесён из пространства имён Tessa.UI в Tessa.Platform.Collections. Его метод SuspendChangeNotification переименован в SuspendNotifications. Коллекция ObservableCollection<TItem, TCollection> унаследована от этого класса и теперь реализует интерфейс ISuspendableObservableCollection<TItem, TCollection>, который предоставляет метод SuspendNotifications.
  227. В desktop-клиенте в класс GridColumnViewModel добавлено свойство HeaderStyle с настройками стиля заголовка колонки.
  228. Добавлены средства кастомизации TaskInfoViewModel в desktop-клиенте - это “шапка” в заданиях, которая также выводится в контроле “Информация о задании” и во всплывающих уведомлениях по заданиям. Для создания объекта вызовите метод ITaskInfoViewModelFactory.CreateAsync, возвращающий ITaskInfoViewModel со всеми основными свойствами TaskInfoViewModel. Также TaskInfoViewModel поддерживает наследование, а переопределить его экземпляр возможно в наследнике фабрики TaskInfoViewModelFactory. Неконтекстные зависимости (из Unity) передаются через объект ITaskInfoDependencies. Всё это в совокупности позволяет централизованно настроить в проектном решении внешний вид и поведение “шапки” в заданиях (для отдельных групп пользователей, видов документов и др.).
  229. Метод BuildInfo.GetVersionObject() заменён на свойство VersionObject. Соответственно изменилась реализация тестового контроллера ServiceController, включённого в проектную сборку Tessa.Extensions.Server.Web. Обновите или удалите класс контроллера.
  230. В настройки отображения карточки ShowCardOptions добавлены настройки HideParentWindow, UseParentWindowLocation и RestoreWindowLocationToParent, которые позволяют скрывать родительское окно при отображении дочернего окна, а также передавать размеры и положение этих окон между собой.
  231. Добавлен метод IFileSource.TryGetSourceObjectID, позволяющий получить идентификатор объекта-хранилища для указанного файла.
  232. Добавлен интерфейс IUriLinkHandler (в desktop-клиенте и в web-клиенте) - обработчик для гиперссылок, используемый при открытии ссылок из контролов “Текст с форматированием”, “Метка” в режиме гиперссылки, для форумов (обсуждений) и при предпросмотре html-файлов (причём обработчик может определить, откуда именно открывается гиперссылка). Реализацию этого интерфейса можно переопределить для пользовательской логики обработки гиперссылок. Логика IUriLinkHandler выполняется после обработчиков события UriOpening.
  233. Для BlRichTextBoxViewModelBase (эта вью-модель соответствует контролу “Текст с форматированием”) добавлено событие UriOpening, вызываемое при открытии гиперссылок. С помощью события UriOpening можно определить пользовательскую обработку гиперссылок для конкретного контрола, а также отменить обработку гиперссылок, которая выполняется посредством IUriLinkHandler.
  234. В web-клиенте для LabelViewModel добавлено свойство linkCommand, с помощью которого можно изменить заданную для контрола ссылку.
  235. Для web-клиента добавлен метод IFileSource.tryGetSourceObjectID (аналог соответствующего метода в desktop-клиенте), позволяющий получить идентификатор объекта-хранилища для указанного файла.
  236. В класс CardViewControlViewModel для контрола “Представление” добавлено свойство AutoSaveSettings, позволяющее автоматически сохранять настройки для пользователя сразу при их изменении, без необходимости выбирать пункт “Сохранить настройки” в контекстном меню на заголовке колонок.
  237. В ITaskAction добавлено свойство Background для возможности изменения фона варианта завершения в задании. Если свойство не задано, то будет использоваться цвет из темы.
  238. Реализована возможность загружать файлы в карточки заданий. Примеры в расширениях типового решения TaskEnableAttachFilesExampleUIExtension, TaskFilesExampleGetExtension и TaskFilesExampleStoreExtension.
  239. В web-клиенте реализована возможность загружать файлы в карточки заданий. Пример в расширении типового решения TaskEnableAttachFilesExampleUIExtension.
  240. В web-клиенте реализована возможность добавления пользовательской логики обработки гиперссылок для контролов “Текст с форматированием”, для форумов (обсуждений) и для предварительного просмотра html.
  241. Для контрола “Представление” в desktop-клиенте в классе CardViewControlViewModel добавлено событие Refreshed, вызываемое после успешного обновления источника данных и объектов UI (колонок и строк). В обработчиках события можно изменить эти объекты. Для переопределения данных, по которым строятся объекты UI, замените источник данных в свойстве DataProvider.
  242. В desktop-клиенте для модели представления ячейки TableCellViewModel, использующейся в представлениях в рабочих местах и в контроле карточки “Представление”, добавлена возможность динамически изменять все свойства, влияющие на отображение, в т.ч. цвет фона, цвет текста, шрифт и выравнивание. Пример изменения цвета фона ячейки в контроле “Представление” в расширении CardUIExtension.Initialized: context.Model.Controls.Get<CardViewControlViewModel>("ControlAlias").Items.First().CellsByColumnName["ColumnAlias"].Background = Brushes.Blue.
  243. Для IQueryBuilderFactory добавлен метод Cached, который позволяет кэшировать результат IQueryBuilder.Build по указанному идентификатору. Это позволяет не выполнять повторное построение текста запроса, что положительно сказывается на потреблении памяти. Этот метод рекомендуется использовать для больших запросов, и в качестве делегата построения запроса передавать статический метод. Пример использования метода в расширении AcquaintanceGetExtension типового решения.
  244. Добавлены интерфейсы ISeparateDbConnectionWorker и ISeparateDbConnectionOptions, используемые для открытия нового соединения к СУБД. В отличие от IDbScope.CreateNew, ISeparateDbConnectionWorker использует отдельную строку соединения по умолчанию, что снижает риск возникновения блокировок при истощении основного пула соединений. По умолчанию используется строка соединения worker. Если такая строка соединения отсутствует, то открывается соединение на основной строке подключения.
  245. Методы IExtensionExecutor.ExecuteAsync (и методы-расширения, такие как ExecuteWithExceptionCheckAsync) вместо параметра method с выражением, указывающим на метод расширения, принимают имя метода в параметре methodName. Интерфейс IExtensionExecutor<TExtension> теперь именуется без generic-параметра как IExtensionExecutor. Например, для расширений ICardGetExtension вызов цепочки расширений BeforeRequest должен выполняться с параметром methodName: nameof(ICardGetExtension.BeforeRequest), тогда как ранее передавался параметр method: x => x.BeforeRequest.
  246. В TaskAction (TypeScript) добавлено свойство background для возможности изменения фона варианта завершения в задании. Если свойство задано не будет, то будет использоваться цвет из темы.
  247. В TaskWorkspaceViewModel (TypeScript) добавлено поле moreAction для возможности изменения цвета кнопки “ещё”. Если свойство задано не будет, то будет использоваться цвет из темы.
  248. В библиотеку Chronos.Plugins (пространство имён Chronos.Plugins.Base) добавлены классы ExtensionsSchedulerPluginBase и OperationRunnerPluginBase, которые могут использоваться для разработки плагинов Chronos, использующих API TESSA.
  249. Добавлены ложные реализации типов для компиляции. Разрешение таких объектов теперь всегда выполняется успешно. Но использование ложных реализаций будет вызывать исключение NotSupportedException.
  250. В ForumHelper добавлена константа MessageText, предназначенная для формирования текста сообщения с корректным форматированием.
  251. Добавлен объект IConditionRepairManager, который позволяет запускать исправление условий для карточек и для типов условий. Объект доступен как на клиентской стороне для администратора, так и на серверной.
  252. В ConditionHelper в методы сериализации и десериализации условий добавлен параметр IConditionTypesProvider, который необходим для корректной сериализации и десериализации условий.
  253. Для запроса на загрузку карточки CardGetExtension добавлен метод расширения для SetDisableExpandJsonFlag для указания на то, что при экспорте карточки не нужно разворачивать JSON-поля карточки из строки в Dictionary<string, object>. Также добавлен метод TryGetDisableExpandJsonFlag для получения данного флага из запроса и метод ShouldExpandJson для проверки флага с учётом значения поля ExportFormat запроса.
  254. Добавлен интерфейс IClipboardPreparable и возможность подготовки объектов перед копированием или вставкой в/из буфера обмена.
  255. В методы ICardManager.ImportAsync() добавлен параметр bool wipeDeleted = false. В значении true флаг указывает на то, что нужно очищать удалённые в корзину карточки, если они будут препятствовать импорту.
  256. Добавлен атрибут [StorageObjectGenerator], который генерирует код класса-наследника StorageObject, включая конструкторы и другие члены класса, при этом класс должен быть объявлен как partial. Примеры использования в руководствах разработчика Создание классов, сериализуемых в Tessa BSON и типизированный Tessa JSON и Рекомендации по написанию кастомных запросов.
  257. В web-клиенте в расширениях ApplicationExtension добавлены методы hidden и restore, которые вызываются при скрытии/показе вкладки браузера.
  258. Изменён интерфейс ICardMetadataExtensionContext. Добавлено свойство GlobalReferences, содержащее глобальные объекты, совместно использующиеся в типах карточек.
  259. Изменён интерфейс ICardMetadata. Добавлены методы GetGlobalReferencesAsync, SetGlobalReferencesAsync, для получения и установки глобальных объектов, совместно использующихся в типах карточек.
  260. Изменён интерфейс IAsyncStorageSerializable. Метод DeserializeAsync возвращает десериализованный объект.
  261. В web-клиенте добавлена возможность настроить компоненты таблицы для отображения с горизонтальной прокруткой. В объектах TableGridViewModelBase, TaskHistoryViewModel, GridViewModel, FileListSignsDialogViewModel добавлено свойство horizontalScroll, которое позволяет устанавливать режим работы. Пример использования доступен в default/examples/25_horizontalScrollViews.ts.
  262. Для интерфейса ICardGetStrategy добавлен метод LoadTaskHistoryGroupsAsync, позволяющий загружать группы истории заданий карточки без загрузки истории заданий.
  263. В интерфейсе IFileSource добавлен метод GetNewFilePermissionsAsync, который получает разрешения для создаваемого файла.
  264. В web-клиенте для контролов “Текст с форматирования” и “Обсуждения” добавлено обрезание длинных названий вложений через свойство RichTextBoxViewModel.maxLengthFileCaption (по умолчанию 35 символов).
  265. Изменён интерфейс IStorageSerializable. Метод Deserialize возвращает десериализованный объект.
  266. В таблицу TaskHistory добавлено поле ‘Settings’ для хранения служебной информации в формате json.
  267. Изменён интерфейс ISignatureProvider, теперь методы в дополнение к массиву byte[] data получают параметры int offset, int count. Методы с предыдущими сигнатурами реализованы методами-расширениями в пространстве имён Tessa.Platform.
  268. В методы ICardStreamClientGetComponent.GetFileContentAsync и ICardStreamClientRepository.GetFileContentAsync добавлен новый необязательный параметр processResponseActionAsync. С помощью него можно запустить действие, которое будет выполнено после получения ответа от файлового сервиса, но перед началом обработки контента.
  269. В ICardUIExtensionContext добавлено свойство AutoFocus (по умолчанию true), управляющее автоматический фокусировкой на контролах карточки при её создании.
  270. В IControlViewModel добавлен метод GetNestedVisibleBlocks, возвращающий перечисление вложенных видимых блоков контрола.
  271. Из решения удален интерфейс IRoleRepository вместе с его имплементацией RoleRepository. В проектном решении для взаимодействия с карточками ролей используйте ICardRepository, для расчёта контекстных ролей - IContextRoleManager, для создания временных ролей - CardTemporaryTaskRole, при необходимости получения низкоуровневой информации по имени, типу роли и её составу - IRoleGetStrategy.
  272. Интерфейс IContextRoleExecutor переименован в IContextRoleManager. Также в него добавлен метод GetContextRoleAsync для получения информации о контекстной роли.
  273. Добавлен интерфейс IRoleGetStrategy, с помощью которого можно получать базовую информацию о роли и информацию из таблицы RoleUsers.
  274. В класс CardTemporaryTaskRole добавлен метод InsertAsync, с помощью которого можно создавать временные роли.
  275. Удалена возможность отправлять уведомления по именам ролей посредством классов RoleNameNotificationRecipientsSourceParameter и RoleNameNotificationRecipientsSource, которые были удалены, и связанных с ними методов-расширений INotificationManager и метода в IKrAcquaintanceManager. В скриптах и расширениях в проектном решении используйте вместо этого отправку уведомлений по идентификаторам ролей.
  276. В таблице TaskHistory добавлены поля AssignedOnRole и CompletedByRole. В AssignedOnRole записывается список ролей из TaskAssignedRoles, на которые было “назначено” задание. В поле CompletedByRole записываются роли из TaskAssignedRoles, к которым относился сотрудник, завершивший задание.
  277. Добавлена возможность расчёта Digest на сервере приложений при загрузке карточек. Это поведение управляется флагом Info[".calculateDigest"] = true, автоматически добавляемым в клиентский запрос на загрузку карточки CardGetRequest.
  278. В CardTask добавлено свойство HistorySettings, которое определяет настройки записи истории задания, сериализуемые в JSON. Данное свойство учитывается только при автоматическом создании записи в истории заданий в процессе сохранения задания. При создании и загрузке задания поле не заполняется и равно null.
  279. В ICardStoreExecutionStrategy добавлен метод UpdateTaskHistoryAsync для обновления записи истории заданий.
  280. Изменён интерфейс ISessionToken, удалено неиспользуемое свойство IsActive.
  281. Добавлен интерфейс IPeriodicWorker, позволяющий выполнять задачи в фоновом режиме по расписанию.
  282. Добавлен интерфейс IWebUnityContainerHandler, позволяющий выполнять необходимые действия при создании/освобождении Unity контейнера для web-сервера TESSA.
  283. Добавлен интерфейс ICardLibraryManager, с помощью которого можно производить импорт списка библиотек и карточек.
  284. В объектах ForumResponse, FmNotificationResponse статическое свойство Empty заменено на статический метод Empty(). Свойство IsEmpty заменено на метод IsEmpty().
  285. Добавлен пример настройки использования мобильного согласования при отправке задания из конструктора бизнес-процессов. Подробнее смотрите в руководстве разработчика.
  286. В объект с расширенными настройками правил доступа IKrPermissionExtendedCardSettings добавлены методы для получения настроек доступа на добавление и подписание своих и чужих файлов. Эти настройки представлены в виде объекта KrPermissionsFilesSettings, содержащего глобальные настройки доступа на добавление и подписание файлов для всех расширений и настройки доступа для каждого отдельного расширения файла.
  287. В настройки доступа к файлу KrPermissionFileSettings добавлена настройка с максимально допустимым размером файла.
  288. В IFileControl добавлены возможности задать метод, позволяющий модифицировать окно диалога выбора файла при добавлении и замене, метод, выполняющий валидация категории файла, и метод, выполняющий валидацию контента файла. Методы валидации выполняются при добавлении файла, при смене категории и при замене содержимого файла.
  289. В FileControlHelper добавлен вспомогательный метод SelectAndAddFilesAsync, позволяющий добавить файл из файловой системы. Данный метод использует новые возможности IFileControl по модификации диалога выбора файла из файловой системы.
  290. В FileControlHelper добавлен вспомогательный метод ValidateFileContentAsync, заданный в файловом контроле, который позволяет выполнить валидацию содержимого файла.
  291. В FileControlHelper добавлен вспомогательный метод SelectFileCategoriesWithValidationAsync, заданный в файловом контроле, который позволяет выполнить выбор категории для нескольких файлов с проверкой валидации выбранной категории через метод валидации.
  292. В интерфейс ISettings добавлены поля MaxViewFilterTextInCardLength и MaxViewFilterTextInWorkplaceLength с помощью которых можно установить максимальную длину текста отображаемую в фильтре представления без сворачивания (по умолчанию 150 символов). Настройки можно изменить с помощью расширения, которое можно найти в в руководстве разработчика.
  293. Добавлен интерфейс ITraceableInfoExtensionContext, который реализуют все объекты контекстов расширений платформы в .NET в дополнение к интерфейсу ITraceableExtensionContext, кроме ICardUIExtensionContext. Это позволяет в объектах IExtensionTraceListener, используемых при трассировке расширений, взаимодействовать с дополнительной информацией в свойстве Info.
  294. В конструкторе бизнес-процессов в сценариях изменения уведомления об отправке задания добавлен параметр task типа CardTask.
  295. В web-клиенте в объект с расширенными настройками правил доступа KrPermissionExtendedCardSettings добавлены методы для получения настроек доступа на добавление и подписание своих и чужих файлов. Эти настройки представлены в виде объекта KrPermissionsFilesSettings, содержащего глобальные настройки доступа на добавление и подписание файлов для всех расширений и настройки доступа для каждого отдельного расширения файла.
  296. В web-клиенте в настройки доступа к файлу KrPermissionFileSettings добавлена настройка с максимально допустимым размером файла.
  297. В web-клиенте в FileListViewModel добавлена возможность задать метод, позволяющий указать список принимаемых расширений файлов при добавлении и замене, метод, выполняющий валидация категории файла, и метод, выполняющий валидацию контента файла. Методы валидации выполняются при добавлении файла, при смене категории и при замене содержимого файла.
  298. В web-клиенте в FileHelper добавлен вспомогательный метод validateFileContentAsync, позволяющий выполнить валидацию содержимого файла, заданного в файловом контроле метод валидации.
  299. В web-клиенте в FileHelper добавлен вспомогательный метод selectFileCategoriesWithValidation, позволяющий выполнить выбор категории для нескольких файлов с проверкой валидации выбранной категории через метод валидации, заданный в файловом контроле.
  300. Изменён интерфейс IActionHistoryStrategy в части сигнатуры метода InsertAsync.
  301. Добавлен интерфейс IActionHistorySettings для кеширования настроек баз данных, используемых для хранения истории действий.
  302. В web-клиенте для контрола “Дата и время” добавлена возможность модифицировать внешний вид дат в выпадающем меню через свойство calendarModification вью-модели контрола dateTimeViewModel.
  303. Для регистрации обработчиков мобильного согласования IMessageHandler, вместо вызова Container.RegisterHandler<MyMessageHandler> совместно с регистрацией типа MyMessageHandler в контейнере, теперь достаточно зарегистрировать только тип по интерфейсу Container.RegisterSingleton<IMessageHandler, MyMessageHandler>(nameof(MyMessageHandler)). При этом на тип класса MyMessageHandler можно добавить атрибут Order для указания порядка выполнения вручную.
  304. В класс NoticeMessage, используемый в обработчиках мобильного согласования IMessageHandler, добавлены свойства HtmlBody (тело письма в HTML формате, может быть null) и OriginalMessage (объект оригинального письма).
  305. В web-клиенте добавлена возможность кастомизировать внешний вид блоков, форм и некоторых контролов (“Контейнер”, “Текст с форматированием”, “Отображение html”) через свойство customStyle их объектной модели.
  306. В web-клиенте для вью моделей контролов добавлено свойство buttonsContainer, предоставляющее возможность добавления/удаления/изменения кнопок, относящихся к данному контролу.
  307. Типы IMailReceiver и MailReceiverNames, используемые в мобильном согласовании, перенесены в проект Tessa.Extensions.Default.Server и пространство имён Tessa.Extensions.Default.Server.Workflow. Также класс MessageProcessor теперь поддерживает наследование с переопределением виртуальных методов. Это упрощает расширяемость мобильного согласования.
  308. Добавлен контроллер REST API для взаимодействия со схемой данных api/v1/scheme, он заменил контроллер с бинарной сериализацией api/b/Scheme.
  309. Добавлен интерфейс ISlugsGenerator для генерации случайных фраз.
  310. Класс RedisEventSubscriber сделан наследуемым с возможностью переопределить методы подписки, отписки, отправки уведомлений и сериализации аргументов события.
  311. Изменён порядок обработки изменений TaskHistory и TaskHistoryGroups в карточке. Теперь операции выполняются в следующей последовательности: удаление, вставка, обновление. Также добавлена поддержка состояния Modified для коллекции Card.TaskHistoryGroups.
  312. В web-клиенте для всех вью моделей, наследуемых от ControlViewModelBase, добавлено свойство ClassName, которое позволяет управлять css классами контрола.
  313. Добавлен интерфейс IOperationLockingStrategy, с помощью которого можно выполнять действия в эксклюзивной блокировке. Данный интерфейс использует Redis для её удержания, а также создает информационную запись в таблице операций.
  314. В интерфейс ILocalizationService добавлен метод GetNamedEntriesAsync позволяющий получить для заданных имён локализации строки для всех доступных языков.
  315. В контроллере LocalizationController добавлен метод GetNamedEntries для маршрута (GET api/v2/localization/namedEntries) позволяющий вернуть локализацию для всех языков для заданных строк.
  316. Добавлен интефрейс IMaintenanceLocalizationStrategy позволяющий возвращать строки локализации для различных языков с целью их использования при локализации сообщений режима технического обслуживания.
  317. В web-клиенте для ICardModel добавлено свойство header, с помощью которого можно задать содержимое хэдера карточки, расположенного над областью вкладок. Пример установки хэдера можно найти в руководстве разработчика web-расширений.
  318. В web-клиенте для CardToolbarItem добавлено свойство isVisible, чтобы можно было показывать/скрывать кнопки в тулбаре.
  319. В web-клиенте для ViewComponentBase добавлен метод onFilterDialogInitialized, позволяющий модифицировать контролы диалогового окна фильтрации.
  320. В web-клиенте для DateTimeViewModel добавлены следующие свойства: minDate, maxDate, beginDate, highlightBeginDate. minDate, maxDate позволяют устанавливать диапазон дат в календаре. beginDate устанавливает дату, на которой открывается календарь. highlightBeginDate устанавливает подсветку для указанной начальной даты.
  321. В web-клиенте добавлена обработка случая, когда контент версии файла, открытый на чтение, не соотвествует контенту версии на редактирование. Сотруднику будет показано диалоговое окно с предупреждением. Управлять отображением этого диалога можно при помощи флага DeskiFileVersionExtension.showOpenForReadWarningMessage.
  322. В класс DataExtensions добавлены методы расширения InArray и NotInArray для IQueryBuilder, позволяющие более эффективно работать с параметрами массивами для PostgreSQL. Для Microsoft SQL Server данные методы аналогичны вызовам In и NotIn, соответственно. Также для большего удобства работы с InArray и NotInArray был разработан класс DataParameters, позволяющий конструировать итоговый массив параметров DataParameter для методов DbManager.SetCommand и IQueryExecutor.ExecuteNonQueryAsync.
  323. Добавлен интерфейс IFallbackLanguageProvider, выполняющий построение данных о резервных (fallback) языках локализации. Для задания резервного языка в таблице Languages была добавлена колонка FallbackCode, которая может содержать ссылку на один из уже существующих языков системы. Обратите внимание, что задание циклических ссылок (в том числе самих на себя), запрещено. Подробнее о работе с локализацией можно ознакомиться в Разделе “Локализация”.
  324. В результат запроса к представлению ITessaViewResult добавлено поле дополнительной пользовательской информации Info.
  325. В настройки колонок представления добавлен новый параметр, с помощью которого для представления, у которого включены теги, можно изменить положение тегов в таблице.
  326. В desktop-клиенте в интерфейс модели тулбара карточки ICardToolbarViewModel добавлен флаг IsVisible, с помощью которого можно регулировать видимость тулбара, флаг CanHaveTags, указывающий на то, что к карточке могут быть добавлены теги, поле TagsModel для доступа к моделям тегов карточки, а также поле RightTagControl, с помощью которого можно кастомизировать контрол добавления тегов к карточке. Подробнее см. раздел базы знаний Замена контрола добавления новой метки в карточке.
  327. В desktop-клиенте в объект MenuManager, управляющий жизненным циклом контекстного меню, добавлены поля VerticalOffset и HorizontalOffset, с помощью которых можно регулировать отступ меню от объекта.
  328. В desktop-клиенте в объект модели строки данных TableRowViewModel добавлены поля TopContent и BottomContent, с помощью которых можно задать дополнительные контент для размещения над или под строкой.
  329. В desktop-клиенте в контекст текущего выделенного элемента рабочего места добавлено поле дополнительной пользовательской информации Info.
  330. В web-клиенте в интерфейс IGridHandlers добавлен новый обработчик событий onRowTagDropdownContextMenu, который срабатывает при вызове контекстного меню для строки.
  331. В web-клиенте для модели колонки таблицы IGridColumnViewModel добавлен флаг collapseInlineHeader, управляющий видимостью инлайн-заголовка, и флаг disableSelection, который определяет, доступно ли выделение ячеек для данной колонки при выбранном режиме выделения “Ячейка”.
  332. В web-клиенте для модели строки таблицы IGridRowViewModel добавлено поле tags, содержащее модели тегов для данной строки.
  333. В web-клиенте в интерфейс модели тулбара карточки ICardToolbarViewModel добавлен флаг isVisible, с помощью которого можно регулировать видимость тулбара, флаг canHaveTags, указывающий на то, что к карточке могут быть добавлены теги, поле tags для доступа к моделям тегов карточки, а также обработчик clickAddTag, который срабатывает при клике на контрол добавления тега к карточке.
  334. Добавлены интерфейс IStringBuilderProvider и структура AppendInterpolatedStringProviderHandler, которые могут использоваться для создания собственных объектов-построителей строк с методами Append([InterpolatedStringHandlerArgument("")] ref AppendInterpolatedStringProviderHandler handler). Подробнее интерполяция строк описана в MSDN.
  335. Для интерфейса IQueryBuilder добавлены методы Append(ref handler) и Append(formatProvider, ref handler), которые добавляют строку по аналогии с Append(string) или Q(string), но делают это более эффективно при использовании с интерполяцией (handler формируется компилятором): Append($"Value is {value}"). Указание formatProvider позволяет определить, для какой культуры будут форматироваться параметры интерполяции, например: Append(LocalizationManager.EnglishCultureInfo, $"Amount is {amount:F2}").
  336. Добавлен объект IAclGenerationRuleEventSubscriber, который позволяет подписываться на изменение версии правила расчёта ACL, также вызывать событие изменения версии правила расчёта ACL. Он используется для остановки активной обработки операции расчёта ACL, если в момент расчёта версия правила была изменена. Объект также может использоваться для оповещения системы об изменении версии програмного правила расчёта ACL.
  337. Добавлен объект ISmartRoleGeneratorEventSubscriber, который позволяет подписываться на изменение версии генератора умных ролей, также вызывать событие изменения версии генератора умных ролей. Он используется для остановки активной обработки операции перерасчёта умных ролей, если в момент расчёта версия генератора была изменена. Объект также может использоваться для оповещения системы об изменении версии програмного генератора умных ролей.
  338. Расширено API компиляции. Добавлены объекты для создания компиляторов и кэшей, содержащих результаты компиляции: ITessaCompiler<T>, ITessaCompilationObjectCacheCore<TKey, TInstance>, ITessaCompilationObjectCache<TCompilerContext, TKey, TInstance>, ITessaCompilationObjectInMemoryCache<TCompilerContext, TKey, TInstance>. Результаты компиляции объектов системы теперь хранятся в одной таблице CompilationCache. Для доступа к ней можно использовать объект ITessaCompilationRepository. Подробности доступны в руководстве разработчика.
  339. В методы IDbScope.CreateNew(...), кроме перегрузки без параметров, добавлен опциональный параметр string? description, позволяющий передать описание текущего соединения (например, алиас или имя класса). Описание в дальнейшем доступно в свойстве IDbScope.Description и в методе IDbScope.TryGetDescription() (в отличие от свойства, не выбрасывает исключение, когда отсутствует текущий скоуп). При создании подключения посредством ISeparateDbConnectionWorker.CreateScope у созданного подключения устанавливается описание "ISeparateDbConnectionWorker".
  340. Добавлен интерфейс IObjectLockingStrategy, с помощью которого возможно реализовать блокировку на чтение или запись для произвольных объектов с использованием Redis.
  341. Добавлен интерфейс IObjectTransactionLockingStrategy, с помощью которого обеспечивается реализация блокировок на чтение или запись для произвольных объектов с использованием Redis, по аналогии с IObjectLockingStrategy, но с учётом текущей транзакции к базе данных TransactionScopeContext.Current, которая должна быть организована посредством ITransactionStrategy. Блокировки автоматически освобождаются при завершении транзакции. Разрешается использование вложенных блокировок, причём взятие блокировок того же типа не выполняет действий, а взятие блокировки на запись может эскалировать ранее взятую блокировку на чтение.
  342. Все плагины Chronos теперь обязаны поддерживать вежливую остановку, определяемую методом IPlugin.StopAsync. Реализация по умолчанию доступна при наследовании абстрактного класса Plugin.
  343. Web-клиент теперь использует универсальное REST API для всех методов взаимодействия с веб-сервисом. Используйте endpoint /swagger для изучения доступных методов.
  344. Добавлен интерфейс ICardTemplateManager, с помощью которого можно осуществлять копирование карточек и создание карточек по шаблону.
  345. Интерфейсы IExtraViewProvider и IExtraViewListProvider, используемые для динамического создания представлений, теперь могут содержать асинхронный код, а IExtraViewProvider может вернуть null, если представление не должно генерироваться при текущих настройках. Пример использования в тестовом классе Tessa.Extensions.Default.Server.Views.TransientViewExtraProvider.
  346. Изменён интерфейс ITessaViewAccess. Метод GetRoles сделан асинхронным и теперь называется GetRolesAsync, а в качестве возвращаемого значения используется IReadOnlyList<INamedEntry>.
  347. Добавлена возможность зарегистрировать интерфейс IExtraViewListProvider по непустому имени, чтобы предоставить дополнительные представления в методе GetExtraViewsAsync, генерируемые программно.
  348. Со стороны сервера (для веб-сервиса, плагинов Chronos, серверных тестов) добавлена возможность получать из Unity объекты, которые могут использоваться для вызова других сервисов (в т.ч. микросервисов): IHttpClientFactory, IHttpClientPool, IWebProxyFactory, IConnectionSettings (по умолчанию настройки подключения загружаются из app.json).
  349. Для модели TopicModel добавлено свойство ReadByDefault со значением по умолчанию false. При установке значения true топик, созданный из этой модели, будет считаться прочитанным по умолчанию.
  350. В API тестов добавлены атрибуты TestCaseGenericAttribute и TestCaseSourceGenericAttribute, позволяющие указывать типы параметров универсального метода, в отличии от TestCaseAttribute и TestCaseSourceAttribute.
  351. В API серверных (ServerTestBase) или клиентских тестов, выполняемых на специально созданном сервере приложений (HybridClientTestBase), добавлена возможность управления использованием межпроцессой коммуникацией на уровне классов с тестами с помощью свойства EnableInterprocessCommunication.
  352. В API тестов добавлен объект IEventDataCollector, предназначенный для агрегирования информации о событиях.
  353. В API тестов добавлен объект KrStageCommonMethodBuilder, предоставляющий методы для создания и модификации карточки метода расширения.
  354. Добавлены методы Tessa.Platform.ArrayHelper.Create, позволяющие создавать массив, содержащий только значения, отличные от null.
  355. Изменён интерфейс IOperationRepository. В методы StartAsync, CompleteAsync и DeleteAsync добавлен необязательный параметр для передачи типа операции.
  356. При написании тестов появилась возможность писать сценарии с изменением текущего серверного времени. Подробнее смотрите в руководстве разработчика.
  357. Для асинхронных обработчиков событий метод DeferredEventArgs.Defer() теперь возвращает объект IEventDeferral, для которого возможно установить исключение вызовом SetException(ex), чтобы пробросить его из асинхронной части обработчика событий до объекта, инициировавшего вызов обработчиков. Пример: var deferral = e.Defer(); try { ... } catch(Exception ex) { deferral.SetException(ex); } finally { deferral.Dispose(); }.
  358. В web-клиенте для методов класса DeskiManager, содержащих сетевые запросы, добавлена возможность осуществления повторных попыток запросов, если при выполнении предыдущих произошла ошибка.
  359. Метод-расширение InvokeNullableAsync, используемый для вызова асинхронных обработчиков событий, принимающих аргументы-наследники DeferredEventArgs, больше не получает CancellationToken в качестве параметра. Также из всех классов-наследников DeferredEventArgs удалено свойство CancellationToken. Не используйте асинхронную отмену в коде таких обработчиков ввиду отсутствия её корректной обработки с вызывающей стороны.
  360. В конструкторе бизнес-процессов в сценариях изменения уведомления о завершении задания для этапов группы “Маршруты” добавлен параметр task типа CardTask.
  361. В SQL-запросе представлений для оператора #appearance добавлена возможность работы с эскейп-символом \ (\#appearance). Это полезно в случае, если внутри #appearance используются другие операторы (например, #eval(...)).
  362. В класс TestHelper добавлено статическое свойство TestExecutionContext, которое можно использовать в тестах вместо TestExecutionContext.CurrentContext, чтобы избежать получение фейкового контекста.
  363. В web-клиенте обновлены библиотеки react-pdf 6.2.2 и react-virtuoso 4.5.0, используемые для вывода PDF.
  364. В web-клиенте добавлен метод IPreviewerViewModel.modifyNameHeader, используемый для изменения названия заголовка в предпросмотре. Если возвращаемое значение равно null, то заголовок не отображается.
  365. Добавлено пространство имен Tessa.TextRecognition, в котором располагается API для создания и управления операциями OCR. OcrAsyncService выполняет управление операциями, обрабатываемыми службой Chronos. OcrSyncService выполняет управление операциями, обрабатываемыми непосредственно веб-сервисом документов. Примеры использования реализованы в Tessa.Extensions.Default.Console.TextRecognition.
  366. В web-клиенте для инструмента предпросмотра файлов PDF добавлен режим распознавания, в котором имеется возможность выполнять поиск, выделение и копирование текста на странице документа, если в документе PDF имеются текстовые объекты или слой с текстовыми данными, а также распознанные элементы в ходе OCR. Используйте свойство PdfPreviewerViewModel.recognitionMode для управления данным режимом. Используйте свойство PdfPreviewerViewModel.recognizedLayout для управления способом отображения документа PDF (страница с текстом, только текст, только распознанные элементы). Используйте свойство PdfPreviewerViewModel.recognizedCollection для получения коллекции с метаданными по распознанным элементам.
  367. В класс WebProxy добавлен флаг RequestFlags.Background, указывающий, что текущий запрос является фоновым. Его использование приведет к тому, что дата последней активности по сессии обновлена не будет. Это может быть полезно в фоновых задачах, чтобы сессия не была постоянно активна, если приложение открыто, но пользователь с ним не работает.
  368. В объекте ISessionServer изменена сигнатура метода ValidateAndGetSessionAsync: параметр updateLastActivity заменён на параметр requestType, в котором можно указать SessionRequestType.Background, чтобы определить запрос как фоновый, который не обновляет дату активности сессии.
  369. В desktop-клиентах и серверном коде добавлен новый объект контекста SessionRequestTypeContext, с помощью которого можно указать, что запрос является фоновым. Его использование приведет к тому, что дата последней активности по сессии обновлена не будет. Это может быть полезно в фоновых задачах, чтобы сессия не была постоянно активна, если приложение открыто, но пользователь с ним не работает. Пример его использования можно найти в руководстве разработчика в разделе Создание фоновой задачи в расширениях толстого клиента.
  370. Добавлен интерфейс IForumUserNamingStrategy, переопределение регистрации которого позволяет заменить отображаемые имена пользователей, например, для их маскировки по определённым бизнес-правилам. Пример доступен в руководстве разработчика в разделе Изменение имен пользователей в обсуждениях.
  371. В desktop-клиенте в класс RowEventArgs добавлен метод SetWindowTitle для установки заголовка соответствующего окна и его имени для Microsoft UI Automation.
  372. В desktop-клиенте в объект ISessionTokenHolder добавлено поле AuthToken, в котором хранится токен, сериализованный в формате SessionSerializationOptions.Auth. Данное поле заполняется при авторизации клиента и используется в заголовке Tessa-Session дальнейших запросов.
  373. В теле запроса OpenSessionRequest для метода PostOpen у контроллера SessionsController добавлено свойство AuthOnlyToken, с помощью которого можно установить, что токен сессии, возвращаемый запросом, будет сериализован в формате SessionSerializationOptions.Auth.
  374. Все методы аутентификации теперь возвращают заголовок Tessa-Session, в котором хранится токен, сериализованный в формате SessionSerializationOptions.Auth. Данный токен необходимо использовать для последующий запросов к веб-сервисам, требующих авторизации, в одноимённом заголовке запроса.
  375. Изменена сигнатура методов объекта ILoginService. Теперь методы возвращают объект c токеном и токен, сериализованный в формате SessionSerializationOptions.Auth, а параметр options был удален.
  376. Добавлена возможность резолва из Unity-контейнера объекта ICardCache, инвалидация объектов в свойствах Cards и Settings которого всегда выполняется локально без вызова сброса глобального кэша. Для этого необходимо резолвить объект ICardCache по имени CardCacheSettings.Local.
  377. Добавлено пространство имён Tessa.Platform.RefGroups, в котором располагается API для загрузки, управления и перерасчёта групп ссылок и типов групп ссылок.
  378. В расширения ICardGetExtension, ICardDeleteExtension, ICardStoreExtension, ICardGetFileContentExtension и ICardGetFileVersionsExtension добавлен метод BeforeRequestWhenTypeResolved, который вызывается после цепочки методов BeforeRequest и до захвата блокировки или транзакции в момент, когда заполнен тип карточки в запросе и контексте расширения. Более подробно про цепочку расширений можно узнать из руководства разработчика.
  379. В расширения ICardGetExtension и ICardGetFileVersionsExtension добавлены методы AfterAcquireLock и BeforeReleaseLock, которые вызываются сразу после взятия и непосредственно перед освобождением блокировки на чтение карточки соответственно. В методе BeforeReleaseLock будет задан ответ на запрос context.Response с частично указанными свойствами, если загрузка выполнена без ошибок. Более подробно про цепочку расширений можно узнать из руководства разработчика.
  380. Изменён метод ObtainReaderLockAsync объекта ICardLockingStrategy. Теперь он возвращает только признак того, что блокировка была успешно взята. Также добавлен параметр, с помощью которого можно опустить проверку наличия карточки в системе. Это может оптимизировать работу метода, если на момент взятия блокировки известно, что карточка заведомо существует.
  381. Из объекта ICardTransactionParameter удалено свойство CardTypeID.
  382. Изменён метод ExecuteInReaderLockAsync объекта ICardTransactionStrategy. В него добавлен параметр, с помощью которого можно опустить проверку наличия карточки в системе. Это может оптимизировать работу метода, если на момент взятия блокировки известно, что карточка заведомо существует.
  383. В объект ISessionManager добавлены события SessionExceptionOccured и CriticalSessionExceptionOccured, которые срабатывают в случае неудачных попыток открытия сессии.
  384. Изменён интерфейс ISignatureProvider, который теперь использует для подписи и проверки подписи параметры типов Span<byte>.
  385. В обработчике универсальных сателлитов ISatelliteHandler добавлен новый метод PrepareSatelliteForStoreAsync. В данном методе можно изменить карточку сателлита перед сохранением, а также вернуть копию основной карточки, которая будет сохранена в рамках сохранения карточки сателлита.
  386. Добавлена базовая реализация обработчиков сателлитов для заданий TaskSatelliteHandlerBase. В неё вынесены свойства и методы, которые относились сугубо к обработке заданий, а также к обработке файлов в рамках работы с этим сателлитом. Данный тип обработчика рекомендуется использовать для сателлитов заданий, которые поддерживают работу с заданием на клиенте по аналогии с сателлитом WfTaskCard.
  387. В объект ILocalizationService добавлен метод ImportLibrariesAsync, с помощью которого можно произвести импорт списка библиотек локализаций.
  388. В web-клиенте в интерфейсе модели карточки ICardModel добавлено событие stateInitialized, происходящее при инициализации состояния модели карточки.
  389. В desktop-клиенте в интерфейсе формы карточки ICardModel добавлено событие StateInitialized, происходящее при инициализации состояния модели карточки.
  390. В desktop-клиенте добавлен новый метод-расширение CardUIExtensions.ModifyOnStateInitializedAsync, с помощью которого можно задать действие, которое будет выполнено при инициализации состояния модели карточки.
  391. В web-клиенте добавлена функция modifyOnStateInitializedAsync, с помощью которой можно задать действие, которое будет выполнено при инициализации состояния модели карточки.
  392. В модели представлений IFormViewModelBase, IBlockViewModel и IControlViewModel добавлено свойство StateRestoreMode, определяющее режим восстановления формы, блока или контрола. С помощью данного свойства в методах Reopened и Initialized расширений ICardUIExtension можно ограничить восстановление состояния отдельных форм, блоков или контролов при обновлении карточки.
  393. Метод WebProxy.SendAsync получает объект для отправки запроса в параметре content вместо массива parameters. Для обращения к legacy-сервисам, использующим бинарную сериализацию, несколько параметров возможно указать как объект LegacyBinaryContent.
  394. Добавлен объект ICardBundledImportComponent, доступный в Unity, для импорта множества карточек единым запросом к серверу, при этом импортируемые карточки не должны содержать файлы, а также они не должны существовать в системе на момент выполнения операции.
  395. Добавлен метод ICardManager.PrepareCardForBundledImportAsync для подготовки карточки к импорту. Используется в ICardBundledImportComponent.
  396. Изменена сигнатура методов объекта IEDSProvider. Теперь методы GetSignedDocumentAsync, GetToBeSignedAsync и ExtendDocumentAsync ожидают параметр с сертификатом в виде массива байт, а метод ValidateDocumentAsync возвращает объект типа SignatureValidationInfo.
  397. В объект ISignatureFile добавлен метод GetBase64Async, с помощью которого можно получить контент файла в виде строки формата base64. Когда контент необходим в формате base64, использование этого метода более оптимально, чем получение массива байт с его преобразованием к base64.
  398. Добавлен метод-расширение IOExtensions.ReadBase64Async, с помощью которого можно получить контент файла в виде строки формата base64. Когда контент необходим в формате base64, использование этого метода более оптимально, чем получение массива байт с его преобразованием к base64.
  399. В маршрутах в обработчике этапа “Регистрация” изменено поведение при невозможности обработки завершаемого задания. Теперь метод RegistrationStageTypeHandler.HandleTaskCompletionAsync возвращает значение StageHandlerResult.EmptyResult вместо создания исключения.
  400. Освобождение объектов, зарегистрированных в IUnityDisposableContainer, теперь выполняется в порядке, обратном их регистрации.
  401. Таблицы и колонки виртуальной схемы типов диалогов теперь связываются и сопоставляются по ID, а не по наименованию.
  402. Колонки виртуальной схемы типов диалогов при сериализации теперь хранят только необходимую информацию.
  403. В IWorkflowEngineProcessRequest добавлены свойства ProcessDigest и CardID. Первое позволяет задать дайджест процесса, используемый при создании асинхронной операции. Второй параметр позволяет задать идентификатор карточки, для которой создаётся процесс при запуске нового процесса.
  404. В IWorkflowEngineContext добавлено свойство AsyncRequests, в который можно добавить список запросов для асинхронной обработки процесса, отправляемых при успешном завершении обработки текущего процесса.
  405. Все объекты скоупов (scope instance, такие как IInheritableScopeInstance<T> и IScopeContextInstance<T>) теперь реализуют IAsyncDisposable и не реализуют IDisposable. Так, для выполнения кода в сессии пользователя вместо using (SessionContext.Create(...)) используйте конструкцию await using (ранее были допустимы обе конструкции).
  406. В web-клиенте добавлена возможность вызвать методы focus и blur для контролов: “Таблица”, “Представление” и представления в рабочих местах.
  407. В TessaClient изменено поведение делегата CreateDialogFormFuncAsync. Теперь при его вызове без указания параметра typeFilter модель будет строиться только на основании типа диалога, который будет найден по имени, переданному в параметре dialogName. Если в форме диалоге необходимо использовать ещё и типы файлов, то в качестве параметра фильтрации можно передать DialogFormInvoker.FilterDialogWithFiles, а если необходимо использовать и типы заданий, то DialogFormInvoker.FilterDialogWithFilesAndTasks.
  408. В web-клиент в функцию createDialogForm добавлен необязательный параметр typeFilter, с помощью которого можно отфильтровать типы, которые будут учитываться при создании модели диалога. Ранее фильтрация осуществлялась по имени диалога, а также добавлялись все типы заданий и файлов.
  409. В desktop-клиенте в расширение XAML-разметки {ThemeResource} добавлены свойства Opacity (определяет непрозрачность кисти, создаваемой с цветом темы) и Freeze (указывает, что кисть замораживается методом Freeze(), что оптимизирует вывод на экран, но не позволяет использовать её в анимациях с изменением цвета).
  410. Для создания HttpClient с использованием IHttpClientFactory, IHttpClientPool и ITessaPlatformDependencies теперь можно передать минималистичный интерфейс IHttpClientCreationOptions. Его реализует IConnectionSettings, и в Unity по новому интерфейсу также доступен экземпляр IConnectionSettings.
  411. Свойства интерфейса IConnectionSettings, которые не относятся непосредственно к подключению к веб-сервисам (SkipWinAuth, ServerCode), перенесены в объект ISessionManagerSettings (ServerCode переименован в ServerCodeDescription).
  412. В объекте ICardTypeExtensionContext добавлена возможность устанавливать значения свойств CardType и CardTypeName. Также добавлено свойство CardTypeIsVerified, определяющее, является ли тип, указанный в CardType или CardTypeName, корректным в рамках данного запроса (актуально только на сервере).
  413. Добавлена установка актуального типа карточки на сервере в свойствах контекста расширений context.CardType и context.CardTypeName перед выполнением методов AfterRequest (и методов BeforeRequestWhenTypeResolved, где они есть) для расширений на получение версий файлов GetFileVersions, а также на загрузку карточек Get, их сохранение Store, удаление Delete и создание New. Установка производится, если предыдущие расширения не указали ответ на запрос context.Response в обход платформенного компонента, и не было указано свойство context.CardTypeIsVerified = true.
  414. В web-клиенте для контрола “Представление” исправлена подписка на событие viewControlViewModel.onRefreshing.
  415. В объект Validator добавлен метод SetLogExceptions, с помощью которого можно установить необходимость логирования исключений (по умолчанию он включен). Также в методы ErrorException, WarningException и InfoException добавлен параметр omitDetails, при указании которого детали исключения будут опущены.
  416. В классе ListStorage<T> добавлены методы AddByRef, AddItemsByRef, InsertByRef, которые могут использоваться для оптимизации добавления в коллекцию объектов IStorageDictionaryProvider по ссылке, если такие объекты были только что созданы и не будут использоваться вне пределов коллекции, иначе возможны сайд-эффекты. В противном случае используйте методы Add, AddItems, Insert, которые создают безопасные копии добавляемых объектов и их хранилищ.
  417. В объекте IConditionRepairManager изменена сигнатура всех методов. Теперь в них можно передать параметром настройки исправления структуры карточки ICardRepairOptions.
  418. В объект ICardRepairManager изменена сигнатура метода RepairAsync. Теперь вместо отдельных параметров, отвечающих за режим создания карточки и необходимость уведомления об измененных полях, передается объект ICardRepairOptions.
  419. Добавлен объект ICardRepairOptions, с помощью которого можно задать настройки восстановления карточки: режим создания карточки, необходимость уведомления об измененных полях и необходимость записывать в результат валидации только ошибки (т.е. исключить предупреждения).
  420. Объект ICardRepairExtensionContext включен в цепочку наследования ICardRepairOptions. Как следствие, в него был добавлен параметр ErrorsOnly, с помощью которого можно отключать сообщения с предупреждениями, возникающие в процессе восстановления карточки, а также теперь его можно использовать в качестве параметра методов объектов IConditionRepairManager и ICardRepairManager.
  421. Удалены параметры и свойства ServiceType для определения принадлежности сессии к web-клиенту или desktop-клиенту, а также удалены методы-расширения session.IsWebClient(), session.IsDesktopClient(), session.IsNotWebOrDesktopClient(). Используйте идентификатор приложения ISession.ApplicationID для такого разделения: значение ApplicationIdentifiers.WebClient соответствует web-клиенту, значение ApplicationIdentifiers.TessaClient - приложению TessaClient и т.п.
  422. Удалено перечисление ApplicationLicenseType, передаваемое в методы открытия сессии для ISessionServer и ILoginService. Используйте параметр consumeClientLicense или свойство ISessionLoginContext.ConsumeClientLicense, где значение true указывает, что открываемая сессия потребляет конкурентную или персональную клиентскую лицензию. Для уже открытой сессии эта информация по-прежнему доступна в свойстве ISessionToken.LicenseType с указанием потребляемой лицензии (отсутствует, конкурентная, персональная).
  423. Изменён объект IFilterEditorFactory. В метод Create добавлены необязательные параметры, с помощью которых можно передать контекст родительского представления и список параметров, которые были выбраны в диалоге выбора фильтров.
  424. Изменён объект IUIHost. В метод ShowFilterDialog добавлен параметр, с помощью которого можно передать контекст родительского представления.
  425. Изменён объект IViewParameterMetadata. Добавлено поле AutoCompleteMapping, в которое записываются настройки маппинга представления.
  426. Список типов устройств DeviceType можно расширять, используя класс DeviceTypes в C# или аналогичный namespace в web-клиенте.
  427. Токен SessionToken при сериализации в storage (для формата json) теперь указывает перечисления в виде строк в нижнем регистре: это значения свойств LicenseType, LoginType, AccessLevel, DeviceType. Для совместимости с предыдущими версиями в C# также доступна десериализации в числовых кодах (в web-клиенте совместимость не требуется).
  428. В объект ICardFileVersionStrategy добавлен метод DeleteAsync, с помощью которого можно удалить запись о версии файла из базы данных, если эта версия файла не используется как текущая.
  429. Удалено пространство имён Tessa.PdfSharp, объекты из которого использовались в потоковом сканировании, конвертации в pdf и распознавании текста. Вместо PdfSharp теперь используется библиотека iTextSharp.LGPLv2.Core.
  430. Добавлены методы-расширения XElement для получения атрибута AttributeByLocalName и дочернего элемента ElementByLocalName без учёта пространства имён xmlns.
  431. Интерфейс IRoleTypePermissionsManager переименован в ICardTypePermissionsManager. Реализации данного интерфейса используются, если необходимо проверить, включён ли заданный тип карточки в типовое решение.
  432. В API тестов в метод ValidationAssert.HasMessages добавлен параметр inOrder, позволяющий включить проверку следования результатов валидации в соответствии с порядком следования валидаторов.
  433. В API тестов добавлен метод ICardLifecycleCompanion<T>.Export для экспорта карточки.
  434. В API тестов добавлен метод CardLifecycleCompanionExtensions.CreateTemplateAsync для создания шаблона карточки.
  435. В desktop-клиенте добавлен класс NotificationUIObject, аналогичный ViewModel<EmptyModel> без свойства Model и без подписки на изменения свойств модели.
  436. В desktop-клиенте свойство ICardModel.Digest теперь поддерживает уведомление об изменениях через событие INotifyPropertyChanged. Для изменения значения свойства используйте метод SetDigestAsync.
  437. Добавлена система расширения доступных типов аутентификации (типов входа, указываемых в карточке сотрудника). Перечисление UserLoginType преобразовано в класс, доступные по умолчанию типы входа перечислены в классе UserLoginTypes. Для них указаны определяющие поведение флаги UserLoginTypeFlags и опции по изменению текстовых подсказок IUserLoginTypeOptions. Также переименованы типы входа UserLoginType.None в UserLoginTypes.Forbidden, и UserLoginType.Tessa в UserLoginTypes.Internal. Для типа Internal логика аутентификации задаётся в классе InternalAuthenticationService, где её можно переопределить. Пример создания нового типа входа доступен в руководстве разработчика в разделе Создание типа входа для пользователей.
  438. Добавлен REST-метод для удаления карточки, который не использует тело запроса: DELETE /api/v1/cards/{id}?type=id_or_name. Здесь type - опциональный параметр, в который передаётся идентификатор или имя типа карточки (актуально для виртуальных карточек).
  439. Логика обработки операций по конвертации файлов перенесена из Tessa.Extensions.Default.Chronos.FileConverters.FileConverterOperationService в Tessa.Extensions.Default.Server.FileConverters.FileConverterOperationProcessor (реализация интерфейса IFileConverterOperationProcessor). Обработчики были перенесены из Tessa.Extensions.Default.Chronos.FileConverters.Workers в Tessa.Extensions.Default.Server.FileConverters.Workers.
  440. В интерфейсе IFileConverterContext свойства InputFilePath и OutputFilePath заменены на GetInputContentAsync и GetOutputContentAsync. Свойство GetOutputContentAsync может быть переопределено для модификации результата конвертации файла, который будет размещён в карточке кэша файлов. Также в контекст добавлено свойство FinalizationQueue - список из методов обратного вызова, которые вызываются при завершении обработки операции конвертации файла в обратном порядке.
  441. В перечисление FileConverterRequestFlags добавлен флаг ExecuteSynchronously, который указывает, что обработка операции будет производиться в том жем сервисе, где она была создана.
  442. В типы IRoleManager и IRoleManagerService в метод синхронизации заместителей добавлен параметр syncChangedOnly, который определяет, что синхронизация заместителей будет выполняться только для ролей, у которых есть изменения в составе или срок замещения заместителей роли настал или подошёл к концу.
  443. В интерфейс INotificationSendContext были добавлены свойства ModifyExtensionContextBeforeUserCheckActionAsync и ModifyExtensionContextAfterUserCheckActionAsync для возможности передачи функций, позволяющих модифицировать контекст расширений на отправку уведомления INotificationSendExtensionContext до и после определения того, должен ли пользователь получить уведомление.
  444. Добавлен интерфейс контекста расширений на отправку уведомления INotificationSendExtensionContext. Подробнее см. контекст расширений на отправку уведомления.
  445. Добавлен новый тип расширений на отправку уведомлений INotificationSendExtension. Подробнее см. раздел Расширения на отправку уведомлений.
  446. Добавлена возможность отменить отправку уведомления целиком или для отдельных получателей. Подробнее см. раздел Отмена отправки уведомлений.
  447. Если объект WebProxyFactory или WebbiWebProxyFactory (переименован из WebbiProxyFactory) создан без параметра httpClientPool, то пул автоматически создаётся с корректными параметрами подключения и освобождается вместе с объектом. Если указан непустой httpClientPool, то пул не освобождается с объектом.
  448. Методы консольных команд, отмеченные атрибутом [Verb], теперь могут возвращать ValueTask вместо Task.
  449. Для вывода логотипа в консольных командах замените вызов ConsoleAppHelper.WriteLogo(stdOut) на await ConsoleAppHelper.WriteLogoAsync(stdOut).
  450. Добавлена возможность выполнять регистрацию в DI-контейнере веб-приложения web, создавая регистраторы: классы-наследники WebRegistratorBase с атрибутом [WebRegistrator], поиск которых выполняется в сборках расширений, указанных в файлах extensions.xml. В проектном решении рекомендуется их размещать в сборке Tessa.Extensions.Server.Web. Пример в руководстве разработчика в разделе Кастомизация ссылок на файлы web-клиента.
  451. Класс-наследник ClientPathParser, зарегистрированный как синглтон по интерфейсу IClientPathParser в регистраторе с атрибутом [WebRegistrator], позволяет переопределить адреса, используемые web-клиентом для логина, логаута и для редиректа на логин при отсутствии сессии. Пример в руководстве разработчика в разделе Кастомизация ссылок на файлы web-клиента.
  452. В контейнере Unity для сервиса web доступен объект IHttpContextAccessor, посредством которого можно получить доступ к текущему объекту HttpContext.
  453. В методах контроллеров для сервиса web верните результат вызова метода this.ErrorView, чтобы отобразить сообщения в стандартном окне ошибок в браузере.
  454. В метод валидации токена прав доступа IKrTokenProvider.ValidateTokenAsync добавлен новый параметр customValidationAction, через который можно передать метод, выполняющий дополнительную валидацию токена прав доступа. При вызове проверки прав доступа через IKrPermissionsManager метод дополнительной валидации токена можно передать через свойство KrPermissionsCreateContextParams.CustomValidationAction при создании контекста проверки прав доступа.
  455. В web-клиенте у редактора карточек ICardEditorModel удалён нижний тулбар и соответствующее ему свойство bottomToolbar. Кнопки диалогов, настроенных в конструкторе процессов и маршрутах, у которых указан тип “Кнопка нижнего тулбара”, в web-клиенте теперь отображаются на верхнем тулбаре.
  456. В API тестов метод ImportCardsWithFileTemplatesCardLib переименован в ImportCardsWithFilesCardLib. Аналогичным образом переименован предикат для фильтрации карточек с файлами и признак необходимости импорта.
  457. В методы RemoteFileContent.FromFilePathAsync и RemoteFileContent.FromContentAsync добавлен параметр updateSize, позволяющий обновить размер созданного контента сразу после создания. В методе RemoteFileContent.FromStreamAndSizeAsync размер контента теперь устанавливается сразу при создании.
  458. Для объектов ICardStoreDeletionStrategy и ICardStoreExecutionStrategy удалены методы DeleteTaskRolesAsync.
  459. Методы-расширения WhenXyz, используемые при регистрации расширений (такие как WhenCardType и WhenMethod), теперь помимо перечисления возможных значений в виде массива param T[] позволяют указать любую коллекцию IReadOnlyCollection<T>.
  460. В методе ICardMetadataBuilder.BuildAsync добавлен параметр initializeExtensionContextFuncAsync, позволяющий изменить инициализацию контекста расширений по метаинформации.
  461. Добавлено пространство имен Tessa.Platform.Expressions, в котором располагается API по конструированию и обработке выражений. Пример использования данного API можно посмотреть в классе WordPlaceholderDocument.
  462. Метод KrForumPermissionsProvider.CheckSuperModeratorPermissionAsync был переименован в CheckElevatedPermissionsAsync.
  463. Удалены настройки для файловых хранилищ Database и FileSystem из классов CardFileSourceType, FileContentSources, а также удалён метод CardFileSourceSettings.CreateDefault. Аналогичные изменения актуальны для API web-клиента. В тестах используйте поля и методы класса TestCardFileSourceTypes. В коде расширений всегда опирайтесь на текущие настройки ICardFileSourceSettings.
  464. Метод ICardFileSourceSettings.GetDefaultAsync переименован в TryGetDefaultAsync. Метод GetDefaultAsync теперь всегда возвращает файловое хранилище по умолчанию или выбрасывает исключение, если файловые хранилища не настроены в карточке “Настройки сервера”. Аналогичные изменения актуальны для API web-клиента.
  465. Добавлен интерфейс ITwoFactorAuthHandler, который описывает обработчик двухфакторной аутентификации. Реализация данного интерфейса позволяет использовать новые обработчики для новых типов двухфакторной аутентификации. Подробнее см. в примере Создание типа двухфакторной аутентификации.
  466. Добавлен контроллер TwoFactorAuthController для обработки запросов в сеансе двухфакторной аутентификации. Работа с контроллером не требует авторизации и сессионного токена. Для взаимодействия с контроллером используйте ITwoFactorAuthService в web-клиенте.
  467. В методы ILoginService.OpenSessionAsync, ILoginService.OpenSessionWindowsAuthAsync, ISessionServer.OpenSessionAsync, SessionsController.GetOpen и SessionsController.PostOpen добавлен необязательный булевый параметр twoFactorAuthSupport (по умолчанию false), определяющий, что вызывающая сторона поддерживает двухфакторную аутентификацию.
  468. В методы ILoginService.OpenSessionAsync, ILoginService.OpenSessionWindowsAuthAsync, ISessionServer.OpenSessionAsync добавлен необязательный строковый локализуемый параметр loginMethod (по умолчанию null), который используется в качестве уточняющей информации по способу входа в систему при создании записи в истории действий.
  469. В методах ILoginService.OpenSessionAsync, ILoginService.OpenSessionWindowsAuthAsync и ISessionServer.OpenSessionAsync изменён возвращаемый тип на OpenSessionResult, в котором содержится информация о сессионном токене и о типах двухфакторной аутентификации, поддерживаемых пользователем.
  470. Добавлена перегрузка для метода ISessionServer.OpenSessionAsync, которая позволяет открыть сессию по неподписанному сессионному токену.
  471. В классе OpenSessionResponse добавлено свойство Response2fa, которое содержит ответ на обработку запроса двухфакторной аутентификации. Если при открытии сессии для пользователя требуется выполнить двухфакторную аутентификацию, то в поле с токеном будет пусто.
  472. В web-клиенте для интерфейсов ISessionService и ISessionRepository добавлены методы create и изменён возвращаемый тип для методов open.
  473. В API тестов добавлен объект ITestOperationExecutor, предназначенный для выполнения операций. Подробнее см. в документации.

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

  1. В карточке настроек “Р7-Офис / OnlyOffice” поле “Адрес подключения” теперь не указано как обязательное. Если поле пустое, то интеграция с офисом считается ненастроенной.
  2. В web-клиенте при работе с Р7-Офис / OnlyOffice редактором добавлена проверка на доступность API-скрипта. При открытии предпросмотра или открытии нового окна с редактором, если скрипт редактора не был загружен успешно, появляется сообщение об ошибке.
  3. В web-клиенте исправлено расширение на инициализацию Р7-Офис / OnlyOffice. Расширение гарантированно вызывается только один раз.
  4. В web-клиенте исправлен просмотр и редактирование документа в Р7-Офис / OnlyOffice, если файл был ранее переименован.
  5. В web-клиенте исправлено открытие файла в Р7-Офис / OnlyOffice, когда браузер блокировал открытие новой вкладки. Теперь появляется сообщение, что необходимо разрешить работу всплывающих окон.
  6. В web-клиенте исправлена доступность открытия файла в Р7-Офис / OnlyOffice в случае, когда формат файла не поддерживается. Теперь открытие на чтение или редактирование недоступно, если формат файла не поддерживается редактором.
  7. В web-клиенте при работе с редактором Р7-Офис / OnlyOffice добавлена проверка на предмет открытых на редактирование файлов перед закрытием, сохранением и обновлением карточки.
  8. Сообщения о необработанных исключениях в tadmin теперь всегда записываются в stderr, тогда как ранее некоторые исключения могли записываться в stdout.
  9. Исправлена периодическая проверка уведомлений по новым заданиям в TessaClient.
  10. Исправлено удаление хранимых процедур после изменения представлений для СУБД PostgreSQL.
  11. В TessaAdmin исправлена ошибка при выборе нескольких значений через представление в фильтре узла рабочего места. Ошибка воспроизводилась, если в контроле “Список” в диалоге по троеточию выбиралось значение через кнопку множественного выбора.
  12. В редакторе виртуальной схемы типа диалога исправлена ошибка, из-за которой колонки секции не удалялись.
  13. В редакторе виртуальной схемы типа диалога исправлена ошибка, из-за которой можно было добавить колонку с системным именем.
  14. В TessaClient в карточках исправлен вывод необработанных исключений для плитки “Сохранить”.
  15. В конструкторе бизнес-процессов исправлена ошибка сохранения экземпляров процесса через редактор.
  16. В конструкторе бизнес-процессов исправлена ошибка открытия логов экземпляра процесса пользователями, не являющимися администраторами системы, но имеющими доступ.
  17. Исправлена валидация свойства AutoWidthRowLimit в редакторе метаданных представления.
  18. В desktop-клиенте исправлено отображение представлений, если расширение удаляет все кнопки из панели-тулбара (где расположена кнопка обновления таблицы).
  19. В TessaClient исправлены плитки “Выгрузить все данные” и “Выгрузить текущую страницу”, если расширение заменило отображение представления как таблицы.
  20. Оптимизировано потребление памяти при выполнении цепочек расширений.
  21. Исправлено удаление сессии при логауте из web-клиента.
  22. В клиентских тестах исправлена регистрация зависимостей в инициализируемом контейнере.
  23. Исправлены проблемы предпросмотра файлов в desktop-клиенте через обработчики предпросмотра, вызванные некорректным определением разрядности обработчиков. Чаще всего исправленные проблемы вызывались предпросмотром файлов .pdf посредством Adobe Reader.
  24. ITreeItem.LastUpdateTime теперь всегда возвращает время в UTC.
  25. Исправлена проверка времени обновления узла рабочего места в расширении AutomaticNodeRefreshExtension.
  26. В API тестов изменён тип первого параметра метода KrTestHelper.CompleteDialogAsync(CardLifecycleCompanion, ICardFileContainer, string, CardTaskCompletionOptionSettings, CardTask, ISession, CancellationToken) с CardLifecycleCompanion на ICardLifecycleCompanion<T>.
  27. В web-клиенте изменён цвет фона элементов управления в режиме “Только для чтения”.
  28. В web-клиенте уменьшены отступы для текста внутри элемента управления “Текст с форматированием”.
  29. Оптимизировано обращение к кэшу настроек типов карточек и документов IKrTypesCache.
  30. В TessaAdmin исправлена ошибка, из-за которой при отмеченных в диалоге экспорта рабочих мест флажках “Экспортировать используемые представления” и “Экспортировать используемые поисковые запросы” в выгружаемый файл попадали не все используемые представления и запросы.
  31. Исправлена ошибка в команде tadmin ExportWorkplaces, из-за которой при установленных параметрах -v и -s в выгружаемый файл попадали не все используемые представления и запросы.
  32. В API тестов в классах ServerTestBase и HybridClientTestBase исправлена ошибка NRE, если значение свойства IDbScopeContainer.DbFactory равно null. В этом случае подключение выполняется к базе данных, указанной в строке подключения с именем "default". Ошибка воспроизводилась при отсутствии атрибута SetupDbScopeAttribute или его наследника, применённого к классу, содержащему тесты.
  33. В API тестов исправлена ошибка при инициализации значения свойства TestBase.TestConfigurationBuilder, если значение свойства IDbScopeContainer.DbScope равно null. Ошибка воспроизводилась при отсутствии атрибута SetupDbScopeAttribute или его наследника, применённого к классу, содержащему тесты.
  34. В маршрутах исправлена очистка полей секции KrApprovalCommonInfo при создании копии карточки с запущенным процессом. Ошибка затрагивала следующие поля: ProcessOwnerID, ProcessOwnerName, CurrentHistoryGroup, NestedWorkflowProcesses.
  35. В маршрутах в этапе “Типизированное задание” исправлен учёт значения свойства Stage.WriteTaskFullInformation при сохранении информации о завершённом задании в Stage.InfoStorage по ключу KrConstants.Keys.Tasks.
  36. В TessaClient устранено зависание при обновлении узла дерева, содержащего сабсеты с одинаковыми именами.
  37. При перерасчёте заместителей исправлена проблема, когда в ходе потокового перерасчёта заместителей система сперва удаляла некоторые строки с заместителями, а затем их восстанавливала.
  38. В web-клиенте исправлена локализация для заголовка окна предупреждения.
  39. В web-клиенте исправлена ошибка с округлением десятичных чисел большой точности.
  40. В конструкторе бизнес-процессов в действии “Настраиваемое задание” оптимизировано изменение идентификатора варианта завершения настраиваемого задания.
  41. В маршрутах в этапе “Настраиваемое задание” оптимизировано изменение идентификатора варианта завершения настраиваемого задания.
  42. Оптимизирован импорт типов карточек в TessaAdmin.
  43. В файле extensions.xml, который генерируется для Chronos, удалена ссылка на Tessa.Extensions.Server.Web.
  44. Увеличен отступ между колонками в карточке “Настройки электронной подписи”.
  45. Исправлено копирование нативной библиотеки libtessa.so в выходную папку при подключении NuGet-пакета Tessa.Linux.
  46. В web-клиенте исправлена локализация заголовка для контрола “Текст с форматированием”.
  47. Исправлено изменение настроек файловых хранилищ с автоматическим сбросом кэша настроек, т.е. без перезапуска веб-сервисов после импорта или изменения карточки настроек. Ошибка появилась в сборке 3.6.0.
  48. Исправлена проблема отсутствия доступа обычным пользователям к полю “Подразделения” в карточке сотрудника, когда карточки “Сотрудник” и “Подразделение” входят в типовое решение, и на редактирование этого поля выдан доступ.
  49. В desktop-клиенте оптимизировано отображение карточки с большим количеством контролов “Ссылка” и “Список”.
  50. В web-клиенте исправлена ситуация, когда сообщение об ошибке в окне предпросмотра не переносилось на новую строку, а вызывало горизонтальный скролл.
  51. В TessaAdmin оптимизировано отображение списка представлений, узлов рабочих мест, диалогов экспорта/импорта представлений и рабочих мест, а также конструкторов диаграмм desktop-клиента.
  52. В маршрутах в обработчиках этапов “Согласование” и “Подписание” оптимизировано получение списка типов для отзываемых дочерних заданий.
  53. Оптимизировано открытие карточек, добавленных в типовое решение, у которых присутствует большое количество записей в TaskHistory.
  54. В web-клиенте исправлено отображение тулбара в элементе управления “Текст с форматированием” в случае, если недостаточно свободного места по горизонтали. Теперь тулбар переходит в постраничный режим.
  55. В web-клиенте исправлена ошибка, из-за которой сабсеты с одинаковыми именами могли пропадать при обновлении узла.
  56. В маршрутах в параметрах этапа “Типизированное задание” удалена некорректная всплывающая подсказка для поля “Тип задания”.
  57. В desktop-клиенте функция проверки значения ValidationFunc для контрола “Нумератор” теперь функционирует в модальном диалоге.
  58. В desktop-клиенте для контрола “Нумератор” исправлено отображение подсказки, заданной в расширениях, если пользователь выполнил действия с нумератором. Теперь отображается и заданная подсказка, и выполненное действие.
  59. Исправлена рассылка уведомлений об окончании срока действия пароля. Исправление актуально, если в карточке “Настройки сервера” на вкладке “Безопасность” указано непустое значение в поле “Срок действия пароля, дни”.
  60. Исправлена опечатка в методе IViewCardControlInitializationStrategy.InitializeMatadataAsync.
  61. Исправлена регистрация объекта Tessa.Platform.DbScopeSequentialGuidProvider, если в контейнере недоступна зависимость IDbScope.
  62. Для команд tadmin SchemeCompact и SchemeScript исправлено формирование результата для случая, когда подключенная через параметр -include папка включает несколько библиотек схемы.
  63. В desktop-клиенте исправлены ситуации, когда обработчики PropertyChanged на некоторые свойства моделей представлений с интерфейсом IFormViewModel и с его наследниками, такие как свойство SelectedTab, могли запускаться не в потоке UI, что приводило к ошибкам доступа к потоку Dispatcher.
  64. В web-клиенте в контроле “Таблица” исправлено форматирование ячейки типа DateTime с настройкой “Только время”.
  65. В TessaClient устранено зависание при обновлении узла дерева, содержащего сабсеты с одинаковыми идентификаторами.
  66. В TessaClient добавлено логирование и отображение в UI ошибок, возникающих при открытии сабсета.
  67. Исправлены конструкторы объекта CardContentContext, которые требовали наличие необязательного параметра validationResult, отличного от null, хотя документация описывала корректное поведение в случае, когда передавался null. Эта ошибка косвенно приводила к невозможности поменять фон в web-клиенте на нестандартный фон из файла с изображением.
  68. В маршрутах исправлены потенциальные NRE и другие ошибки, вызванные возвратом значения null методами: IKrScope.CreateSecondaryKrSatelliteAsync, IKrScope.GetKrSatelliteAsync, IKrScope.GetMainCardAsync, IKrScope.GetMainCardFileContainerAsync, IKrScope.GetSecondaryKrSatelliteAsync, IKrTaskHistoryResolver.ResolveTaskHistoryGroupAsync, IMainCardAccessStrategy.GetCardAsync и IMainCardAccessStrategy.GetFileContainerAsync.
  69. В web-клиенте исправлено отображение списка заданий в карточке внутри диалога.
  70. Оптимизировано редактирование типов карточек в TessaAdmin.
  71. Исправлена ошибка в конвертации представлений из прежнего формата (exchange) в новый (JSON): флаг Multiple параметра представления теперь, если значение не задано явно, принимает по умолчанию значение “true”.
  72. В методе KrScript.GetMainCardAsync исправлена ошибка NRE. Ошибка возникала, если выполнение осуществляется вне KrScopeContext, и параметр validationResult имеет значение null.
  73. В методе ObviousMainCardAccessStrategy.GetCardAsync исправлена ошибка NRE. Ошибка возникала, если объект был инициализирован с параметром card, равным значению null.
  74. В маршрутах исправлена ошибка потери результатов валидации. Она возникала, например, при загрузке карточки с помощью метода IKrScope.GetMainCardAsync, если при этом происходит ошибка в расширении CardGetExtension в методе AfterRequest.
  75. В desktop-клиентах исправлена прокрутка пальцами на тач-скрине во вкладках карточки, в списке обсуждений, в области с заданиями, в списке выбора этапов маршрутов для добавления и в окнах TessaAdmin.
  76. В web-клиенте исправлена ошибка, приводившая к закрытию диалога создания нового топика после отображения ошибки при сохранении с пустым заголовком.
  77. В web-клиенте исправлена ошибка, приводившая к неправильному позиционированию описания топика, если у карточки есть задания.
  78. Исправлен скролл колесом мыши в различных элементах интерфейса в desktop-приложениях. Ошибка появилась в сборке 3.5.0.
  79. В desktop-клиенте для кнопок “Добавить” и “Удалить” под контролом “Таблица” исправлено изменение размеров, если расширение заменило текст в кнопках на длинный.
  80. Исправлено повторное открытие сессии в desktop-клиенте при близости её срока окончания действия, если приложение не было перезапущено после изменения пароля.
  81. Улучшен вывод сообщений об ошибках в API карточек при обработке исключений ValidationException. Теперь не выполняется их оборачивание в ещё один объект ValidationException.
  82. Исправлены ситуации, когда cancellationToken мог преждевременно отменить откат транзакции при вызовах RollbackTransaction.
  83. При использовании реализации RoleManager для расчёта ролей (вместо текущей реализации AdvancedRoleManager), теперь пересчёт замещений контекстных ролей выполняется в отдельной транзакции, что предотвращает возможные блокировки в базе данных.
  84. Текст html-сообщений форумов очищается на сервере от потенциально опасных html-тегов и атрибутов для противодействия XSS атакам.
  85. Содержимое ссылок на файлы web-клиента /links/html очищается на сервере от потенциально опасных html-тегов и атрибутов для противодействия XSS атакам.
  86. В почтовых уведомлениях о новых сообщениях в обсуждениях исправлен вывод даты/времени сообщений с учётом часового пояса сотрудника.
  87. В команде tadmin ImportUsers исправлено определение временной зоны для сотрудника и подразделения на СУБД PostgreSQL.
  88. Исправлена рассылка почтовых уведомлений по обсуждениям, которая ранее не выполнялась, пока пользователь хотя бы раз не открыл обсуждение в карточке.
  89. В CardStreamStoreStrategy исправлена ошибка NRE в случае, если запрос был отменен посредством CancellationToken.
  90. Исправлен переход web-клиента на страницу логина в случае, если в cookie содержался некорректный токен сессии.
  91. В web-клиенте в обсуждениях теперь выполняется более строгая проверка вставляемого текста и сообщений перед отображением на экране.
  92. В маршрутах исправлена ошибка, из-за которой процесс не завершался. Например, ошибка воспроизводилась при переходе на следующую группу этапов основного процесса, не содержащую выполняемых этапов или исключённую в соответствии с условием построения, если этап “Управление процессом” был расположен во вторичном процессе. Это приводило к тому, что основной процесс не завершался.
  93. В команде tadmin ConvertConfiguration исправлен вывод имени результирующего файла для рабочих мест, представлений и поисковых запросов.
  94. В команде tadmin ConvertConfiguration исправлена конвертация одноимённых поисковых запросов.
  95. В команде tadmin ConvertConfiguration при ошибке чтения файла рабочего места, представления или поискового запроса теперь выводится сообщение о том, что конвертацию данного файла произвести невозможно. Сам файл при этом не удаляется, как было прежде.
  96. В команде tadmin ConvertConfiguration исправлен вывод результирующего сообщения.
  97. В web-клиенте исправлена ошибка, приводившая к тому, что флаг “Модератор” был неактивен в диалоге добавления участников в новом топике до его перезагрузки.
  98. В web-клиенте исправлен неработающий флаг “подписать на уведомления” в диалоге добавления роли в топик.
  99. В редакторе бизнес-процессов исправлена доступность ссылки “Добавить роль “Вычисляемые исполнители”” при заблокированном для редактирования процессе в действиях “Выполнение задачи”, “Согласование” и “Подписание”.
  100. При сборке проектов тестов исправлено копирование в выходную папку файлов: NLog.config, Tessa.Linux, Tessa.Extensions.Server.Web.dll, Tessa.Extensions.Default.Server.Web.dll (и их отладочных символов .pdb).
  101. В web-клиенте функция проверки значения ValidationFunc для контрола “Нумератор” теперь функционирует в модальном диалоге.
  102. В web-клиенте для контрола “Нумератор” исправлено отображение подсказки, заданной в настройках или расширениях, если пользователь выполнил действия с нумератором. Теперь отображается и заданная подсказка, и выполненное действие.
  103. Исправлены скрипты экспорта конфигурации Export.bat и export.sh, расположенные в папке Source. Ошибки появились в сборке 3.6.0.
  104. В web-клиенте исправлено позиционирование панели управления в пустом контроле “Обсуждения” при маленькой ширине экрана.
  105. В SequenceProvider исправлена ошибка при проверке наличия карточки последовательности. Ошибка воспроизводилась, если в системе была карточка последовательности с существующим названием, что было установлено с помощью валидатора “Уникальное поле”.
  106. В карточке “Шаблон бизнес-процесса” исправлена ошибка, которая возникала при работе с таблицей версий бизнес-процесса в ситуации, когда конфигурация системы находилась в режиме запрета изменений.
  107. Исправлено определение кода SQL-ошибки для MSSQL с локализацией, отличной от английского языка. Проблема воспроизводилась при параллельном выполнении операций с карточками, которые приводили к созданию карточек последовательностей.
  108. Исправлена очистка кэша компиляции шаблонов бизнес-процессов при импорте карточек шаблонов бизнес-процессов.
  109. В API тестов исправлена ошибка при формировании полного имени тестового метода при использовании атрибутов: DatabaseTestAttribute и DatabaseTestCaseSourceAttribute. Ошибка приводила, например, к некорректному выполнению тестов в Miсrosoft Visual Studio.
  110. В API тестов исправлено создание строки подключения к базе данных при использовании атрибутов: DatabaseTestAttribute и DatabaseTestCaseSourceAttribute.
  111. В web-клиенте по нажатии стрелок вверх/вниз больше не вызывается выпадающий список, если он уже был отображён.
  112. Исправлено отображение отрицательных десятичных чисел в desktop-клиенте. Актуально для контрола “Десятичное число” и для вывода в представлениях.
  113. Исправлено выполнение тестов при наличии файлов конфигурации с русскоязычными именами и со спец. символами в имени.
  114. В web-клиенте исправлена ошибка, приводившая к тому, что вкладка “Обсуждения” была пустой при установленном флаге “Единственное обсуждение” и отсутствии топиков.
  115. В TessaClient исправлен баг, из-за которого пользователю без прав администратора были недоступны программные представления.
  116. В редакторе бизнес-процессов исправлена ошибка NRE при запуске процесса по несуществующему тайлу.
  117. Исправлена ошибка, которая возникала при сохранении карточки сотрудника без указанного значения в поле “Тип входа в систему” в web-клиенте.
  118. Исправлен сброс кэша типов документов при импорте.
  119. В обсуждениях (форумах) исправлен баг, из-за которого при попытке загрузки некоторых сообщений, добавленных в web-клиенте, в desktop-клиенте появлялась информация об ошибке загрузки сообщения.
  120. В web-клиенте исправлена ошибка в элементе управления “Текст с форматированием”, не позволявшая добавить изображение с помощью кнопки “Вставить изображение”.
  121. В типах условий “По автору”, “По подразделению”, “По типу документа” и “По контрагенту” исправлена проблема, когда при выполнении условия в структуру карточки могла добавиться секция DocumentCommonInfo.
  122. Исправлена работа маппинга представлений: теперь если значение параметра NULL и стоит флажок “Не добавлять параметр для NULL”, другие параметры корректно добавляются.
  123. В web-клиенте исправлена ошибка, приводившая к тому, что иногда при разворачивании блока следующий свёрнутый блок мог частично развернуться и сразу свернуться обратно.
  124. В web-клиенте исправлена ошибка, приводившая к тому, что в свернутом блоке с позиционированием заголовков слева верхняя граница элементов управления не скрывалась до конца.
  125. В web-клиенте исправлена ошибка, приводившая к тому, что некоторые блоки переставали сворачиваться или разворачиваться.
  126. В web-клиенте исправлена ошибка, приводившая к тому, что некоторые блоки не оказывались в указанных в настройке расположения блоков колонках и строках.
  127. В web-клиенте улучшена поддержка настроек расположения блоков и исправлены ошибки, приводившие к некорректному позиционированию блоков.
  128. В API тестов исправлена инициализация локализации. Ошибка приводила к блокировкам при инициализации параллельно выполняющихся тестов, если в этот момент в выполняющемся тесте выполнялось обращение к локализации.
  129. Исправлено параллельное обращение к строкам и полям секций карточки.
  130. В обсуждениях (форумах) исправлен баг, из-за которого при определённых способах форматирования внутри сообщений не отображались изображения.
  131. Исправлена ошибка в миграции ForumSearchMessages, которая возникала в ситуации, когда в имени базы данных использовались специальные символы или пробел.
  132. В обсуждениях (форумах) исправлен дефект, из-за которого в desktop-клиенте некорректно работали форматирование и стилизация текста, а при попытке ответить на сообщение возникала ошибка.
  133. В карточке “Настройки сервера” исправлено значение по умолчанию в поле “Время между попытками входа, чтобы считать их в одной серии попыток”.
  134. Оптимизировано удаление объектов бизнес-процессов, построенных на шаблонах бизнес-процессов. Медленное удаление карточек бизнес-процессов в редких ситуациях могло приводить к возникновению дедлоков при одновременном завершении нескольких процессов.
  135. Исправлена ошибка “Procedure or function has too many arguments specified” для СУБД MS SQL Server при вызове хранимой процедуры посредством указания CommandType.StoredProcedure.
  136. В web-клиенте исправлена ошибка в диалоговом окне “Выбор цвета”, приводившая к отображению неинициализированных пользовательских цветов.
  137. Исправлена ошибка, возникающая при обработке плейсхолдеров представлений с одним или несколькими джоинами к другим секциям.
  138. В web-клиенте в области предпросмотра добавлена поддержка файлов с расширением .sql и .tt.
  139. При создании карточки “Ошибка” скорректирована локализация имён файлов с SQL-запросами.
  140. Исправлено определение файла как измененного в случае его открытия на редактирование через офисный пакет МойОфис и последующего закрытия редактора без каких-либо изменений.
  141. В API тестов исправлена ошибка при создании карточки сотрудника посредством методов Tessa.Test.Default.Shared.Roles.TestRoleHelper.CreateUserAsync, из-за которой не заполнялось поле PersonalRoles.FirstName.
  142. В API тестов исправлена ошибка при проверке результатов валидации с помощью методов ValidationAssert.HasMessages. Ошибка воспроизводилась, когда значение свойства ValidationResultItemValidator.ExpectedCount было отлично от значения по умолчанию.
  143. В API тестов исправлено сообщение об ошибке при неуспешной проверке методами KrAssert.StageHasOrder и KrAssert.SequenceOfStagesIs. Из-за ошибки в сообщении не выводилось название этапа.
  144. В API тестов исправлена ошибка при задании условного выражения группы этапов с использованием метода KrStageGroupBuilder.SetRuntimeCondition. Ошибка приводила к изменению условного выражения, используемого при построении маршрута.
  145. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой вставляемые в сообщение картинки и ссылки всегда добавлялись в конец абзаца.
  146. В web-клиенте исправлена некорректная работа изменения границ области в представлении.
  147. В web-клиенте исправлена ошибка, которая возникала при попытке сохранения карточки более одного раза при наличии файлов, открытых на редактирование в Р7-Офис / OnlyOffice.
  148. В web-клиенте исправлена ошибка в файле service worker sw.js, которая могла приводить к ошибкам в кэшировании запросов и файлов.
  149. В web-клиенте сабсеты в узлах деревьев теперь отображают только уникальные значения.
  150. В web-клиенте для обсуждений добавлена инициализация со стандартными настройками, если настройки не были предоставлены сервером.
  151. В web-клиенте теперь не выводится ошибка в консоль браузера, если отсутствует карточка настроек Р7-Офис / OnlyOffice или адрес API-скрипта не указан.
  152. Исправлена валидация внешних файлов, прикрепленных к карточке, в методе CardManager.ReadExportedRequestAsync.
  153. В web-клиенте исправлена ошибка, приводившая к тому, что при наличии нескольких элементов управления “Обсуждение” и переходе по ссылке на сообщение оно могло открыться в первом элементе управления, а не в том, в котором была нажата ссылка.
  154. В API тестов в клиентских тестах, выполняющихся на специально подготовленном сервере приложений, исправлена ошибка, из-за которой выполнялась повторная инициализация тестового сервера.
  155. В API тестов исправлена ошибка при создании Unity контейнера, используемого в клиентских тестах, выполняющихся на специально подготовленном сервере приложений. Ошибка приводила к некорректной инициализации Unity контейнера при переопределении TestBase.CreateContainerAsync.
  156. Исправлена ошибка в логике построения метаданных при слиянии карточек в процессе импорта. Неправильно строились уровни метаданных слияния по иерархии секций в карточках. Также данная ошибка приводила к тому, что могли выводиться лишние предупреждения с ключом ParentSectionNotExistsInCardType в случаях, когда этого не должно происходить.
  157. В web-клиенте исправлен баг, из-за которого тайл “Создать карточку” оставался виден, даже когда нет доступных для создания карточек.
  158. При закрытии диалога выбора из представления рабочие места помечаются как отключённые IWorkplaceViewModel.IsActive = false.
  159. В API тестов исправлено освобождение ресурсов, которые были зарегистрированы в IUnityDisposableContainer.
  160. StringWidthLimitConverter.Instance теперь возвращает корректный тип конвертера.
  161. В desktop-клиенте исправлена прокрутка пальцами на тач-скрине в области заданий, когда там отображаются сообщения форумов.
  162. В desktop-клиенте исправлена сериализация метаданных поискового запроса.
  163. Исправлена проверка соединения с существующей базой данных для скриптов setup, upgrade, migrate и export (в Windows и Linux вариантах): вместо подключения к БД master/postgres выполняется подключение к БД TESSA. Это позволяет использовать скрипты для учётных записей СУБД, у которых нет доступа к БД master/postgres. Исключением являются скрипты setup в режиме создания базы данных.
  164. В маршрутах в этапе “Создать файл по шаблону” исправлена ошибка при отображении параметров этапа. Ошибка воспроизводилась, когда имя шаблона файла являлось строкой локализации и было задано значение в поле “Имя файла”.
  165. В маршрутах исправлена ошибка при отображении параметров этапов. Ошибка воспроизводилась, если в отображаемом параметре была указана строка локализации, длиной превышающая 30 символов.
  166. Если карточка экспортируется в папку без файла .jcard, то при наличии подпапки с именем файла экспорт завершается с ошибкой.
  167. Исправлены ошибки при синтаксическом анализе строкового представления пути в storage-объекте с помощью метода StoragePathParser.Parse.
  168. Исправлено использование зависимостей IStoragePathParser и IStoragePathResolver в объекте StorageValuesKeeper.
  169. Исправлена ошибка при сериализации объекта с учётом контента, расположенного во внешних файлах, с помощью метода StorageSerializer.SerializeAsync, если имя файла, в котором должен располагаться внешний контент, не имеет расширения.
  170. Исправлена ошибка, из-за которой нельзя было экспортировать карточку, если к ней был прикреплен файл, в названии которого имелись символы, не поддерживаемые файловой системой.
  171. В web-клиенте исправлена ошибка при сохранении карточки с файлом, которая могла приводить к лишнему запросу данных карточки с сервера, даже если сохранение не было успешным.
  172. Исправлены настройки типизированного сериализатора в desktop-клиенте, из-за проблем с которыми у отложенных заданий некорректно сохранялось поле “Отложить до”.
  173. Исправлена ошибка сохранения экземпляра бизнес-процесса в ситуации, когда при запуске бизнес-процесса в его скрипте производился запуск другого процесса, не являющегося подпроцессом.
  174. Исправлена ошибка, из-за которой при открытии карточки из индикатора новых сообщений в базе не обновлялась дата последнего посещения топика пользователем.
  175. Для desktop-клиента исправлен перезапуск предпросмотра средствами внешних приложений в другой разрядности после ошибки E_FAIL в некоторых инсталляциях.
  176. Исключено появление лишней папки ~/.local/share/'tessa\cache' при использовании tadmin на Linux. Вы можете её удалить, если она присутствует на сервере для пользователя, от имени которого запускался tadmin.
  177. В web-клиенте исправлена ошибка, из-за которой шаблоны файлов не обновлялись в клиентском кеше.
  178. В web-клиенте исправлена ошибка, из-за которой супермодератор не мог изменить участников обсуждения.
  179. В маршрутах исправлена ошибка учёта изменения порядка этапов. Ошибка приводила к изменению порядка добавленного вручную этапа при пересчёте несохранённой карточки.
  180. В API тестов исправлена ошибка при добавлении нового этапа при использовании методов: RouteBuilder.AddStage и KrStageTemplateBuilder.AddStage.
  181. В классе KrStageSerializer исправлены NRE, если не была установлена информация по сериализуемым секциям и полям.
  182. В web-клиенте исправлена ошибка, из-за которой при закрытии карточки мог появляться диалог с предложением сохранить карточку, даже когда это не требовалось.
  183. Исправлены ошибки “An item with the same key has already been added” в методе HttpHeaders.ThrowDuplicateKeyException() при логине с Kerberos-аутентификацией и в заголовках, перечисленных в разделе "ResponseHeaders" в файле app.json веб-приложения.
  184. В desktop-клиенте исправлена ошибка при показе изображений в контроле “Текст с форматированием” и в форумах (обсуждениях).
  185. Исправлен запуск плагинов Chronos, конструктор которых ссылается на объекты в библиотеке расширений или в других библиотеках, расположенных в папках, которые подключаются в ProbingPath в app.json.
  186. Исправлено закрытие вкладки или диалога с карточкой посредством свойства ICardEditorModel.ClosePending при отмене переоткрытия или сохранения карточки указанием context.Cancel = true, или при установке свойства CardGetResponse.CancelOpening. При первом открытии карточки и при её создании отмена открытия вкладки реализуется указанием context.Cancel = true (независимо от свойства ICardEditorModel.ClosePending).
  187. При обновлении с платформы версии 3.5.0 в логе tadmin исправлен вывод информационных сообщений вида “Query expected to update one row but updated 0 rows.” при вызове команды tadmin ConvertBson для таблицы Outbox.
  188. В маршрутах исправлена ошибка при выполнении дополнительных сценариев вручную добавленных этапов.
  189. В маршрутах исправлена ошибка, из-за которой не учитывалось значение параметра вторичного процесса “Не отображать сообщение при отсутствии этапов, доступных для выполнения” при запуске процесса с помощью этапа “Создание карточки”.
  190. При подписании файлов в desktop-клиенте исправлено появление ошибки “The process cannot access the file”.
  191. Исправлена ошибка при клонировании Storage-объектов с помощью метода StorageHelper.Clone, из-за которой у типизированного списка после клонирования мог измениться тип данных на object.
  192. В контроле “Текст с форматированием” исправлен отображаемый текст для сплэша, который возникает при добавлении файлов Outlook.
  193. В маршрутах исправлена ошибка при определении значения плейсхолдера #doc_type_id во всех SQL-скриптах, в которых он разрешён. Вместо плейсхолдера #doc_type_id подставляется идентификатор типа документа текущей карточки или значение null, если тип документа не задан для карточки.
  194. В маршрутах исправлена ошибка, из-за которой не заполнялись свойства IKrEventExtensionContext.MainCardType и IKrEventExtensionContext.MainCardDocTypeID при обработке событий типов: “Создание новой карточки”, “Перед сохранением карточки”, “Сохранение карточки”, “Перед созданием задания”, “Перед завершением задания”, “Создание задания”, “Завершение задания”.
  195. Исправлена ошибка NRE при выполнении метода Tessa.Cards.FileSourceForCard.GetSignaturesCoreAsync. Ошибка происходила, например, при выполнении метода IFileSource.GetSignaturesAsync, если тип файла является виртуальным.
  196. В web-клиенте исправлена ошибка в модуле SAML аутентификации, из-за которой IdP сервер не мог проверить подпись логин-запроса.
  197. В web-клиенте исправлена ситуация, когда при мультивыборе значения из представления в фильтре оставалась пустая строка.
  198. Исправлена очистка кэша кнопок шаблонов бизнес-процессов при импорте карточек шаблонов бизнес-процессов.
  199. Реализована корректная работа расширения “Список файлов в представлении” в форме таблицы.
  200. Исправлены ошибки при отмене транзакции в случае возникновения ошибок при: сохранении основной карточки сателлита или первом создании и сохранении сателлита. Ошибка, например, приводила к завершению задания, если оно завершалось из карточки задачи, но при этом происходила ошибка.
  201. Исправлены ошибки, из-за которых не создавалась карточка сателлита при установленном флаге NoLockingMainCard, который управляет отсутствием блокировки основной карточки при создании или изменении сателлита. Ошибка воспроизводилась при создании карточки сателлита задания.
  202. Исправлена ошибка, возникающая при подписке на уведомления карточки, у которой нет дайджеста.
  203. Исправлена ошибка NRE при отправке уведомления, содержащего C# скрипты, сотруднику с правилами уведомлений, содержащих условия.
  204. В API тестов исправлена ошибка при получении информации о процессах, запущенных по карточке с указанным идентификатором. Ошибка затрагивает методы: KrTestHelper.GetWorkflowProcessAsync, KrAssert.HasWorkflowProcessAsync и KrAssert.HasNoWorkflowProcessAsync.
  205. В маршрутах исправлена ошибка, из-за которой этап “Доработка” пропускался, если при переходе в начало текущей группы этапов или на этап “Доработка” выполнялся вторичный процесс, работающий в режиме “Действие” с типом события: “Сохранение карточки” или “Перед сохранением карточки”.
  206. Исправлена передача null вместо объекта карточки в случае формирования тела письма по скрипту, если в INotificationSendContext.GetCardFuncAsync передается метод, возвращающий null.
  207. В конструкторе бизнес-процессов исправлена ошибка, когда подписки по умолчанию у запущенных процессов не обновлялись при импорте карточки шаблона бизнес-процесса.
  208. В desktop-клиенте восстановлена поддержка правил инициализации рабочих мест WorkplaceInitializationRule.
  209. Исправлена проблема при выполнении проверки прав доступа через IKrPermissionsManager, из-за которой при выполнении расчёта или проверки прав доступа дополнительная информация, записываемая в свойство IKrPermissionsManagerContext.Info, также записывалась и в свойство Info контекста расширения, вызвавшего расчёт или проверку прав.
  210. Исправлена проблема, из-за которой при включении типа карточки “Сотрудник” в типовое решение кнопки “Создать копию” и “Создать шаблон” не были доступны обычным сотрудникам, даже если у них был доступ на создание шаблона и копирование карточек в правилах доступа.
  211. В форумах (обсуждениях) desktop-клиента при обновлении форума теперь происходит сброс размера шрифта на значение по умолчанию.
  212. В форумах (обсуждениях) desktop-клиента при вставке текста в поле ввода сообщения гарнитура шрифта теперь заменяется на стандартную.
  213. В форумах (обсуждениях) desktop-клиента при вводе текста в блок, а также в позиции после блока шрифт теперь сохраняет ранее установленные атрибуты.
  214. В форумах (обсуждениях) desktop-клиента при вводе списка шрифт теперь сохраняет цвета и атрибуты.
  215. В форумах (обсуждениях) desktop-клиента установленные по умолчанию цвета в контролах “Цвет текста”, “Цвет выделения текста” и “Цвет блока” изменены на “Нет цвета”.
  216. В форумах (обсуждениях) desktop-клиента при обновлении форума теперь происходит сброс цветов в контролах “Цвет текста”, “Цвет выделения текста” и “Цвет блока”.
  217. В форумах (обсуждениях) desktop-клиента при вставке ссылки теперь применяются все установленные атрибуты шрифта, кроме цвета.
  218. В форумах (обсуждениях) desktop-клиента при обновлении форума теперь происходит сброс размера шрифта в контроле ввода сообщения.
  219. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой после выбора цвета в контроле “Цвет текста”, “Цвет выделения текста” и “Цвет блока” в области ввода текста курсор менял положение.
  220. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при начале ввода первого сообщения в открытом форуме текст терял атрибуты “Подчеркнутый” и “Зачеркнутый”.
  221. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой после отправки сообщения сбрасывались цвета в контролах “Цвет текста”, “Цвет выделения текста” и “Цвет блока”.
  222. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой атрибуты вводимого текста в ряде случаев не соответствовали установленным в контролах “Цвет текста” и “Цвет выделения текста”.
  223. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой атрибуты “Цвет текста”, “Цвет выделения текста”, “Подчеркнутый”, “Зачеркнутый” не применялись при выставлении их перед началом ввода текста в новом сообщении.
  224. В форумах (обсуждениях) desktop-клиента при вставке изображения/ссылки в выделенную область содержимое выделенного блока теперь не сдвигается, а очищается.
  225. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при добавлении цветов в незаполненную целиком пользовательскую палитру после обновления исчезал последний из добавленных цветов.
  226. В форумах (обсуждениях) desktop-клиента исправлена ошибка при отображении спецсимволов в сообщениях (неразрывный пробел, знак copyright и т.п.).
  227. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при открытии ссылки на сообщение в текущем топике и наличии нескольких вкладок с обсуждениями для отображения сообщения всегда выбиралась первая вкладка, а не та, в которой была нажата ссылка.
  228. В форумах (обсуждениях) desktop-клиента в диалоге вставки внешней ссылки исправлена ошибка, из-за которой при вводе длинного адреса либо заголовка ссылки кнопки диалога скрывались под нижней границей окна и становились недоступны для нажатия.
  229. В форумах (обсуждениях) desktop-клиента атрибуты вводимого текста теперь по умолчанию всегда соответствуют атрибутам символа, находящегося перед курсором, и не зависят от предыдущей позиции курсора.
  230. В форумах (обсуждениях) desktop-клиента отключены кнопки “Ответить” и “Редактировать” для сообщений с информацией об ошибке.
  231. В форумах (обсуждениях) desktop-клиента исправлено исключение, возникавшее при попытке скопировать в буфер обмена сообщение с информацией об ошибке.
  232. В форумах (обсуждениях) desktop-клиента исправлена ошибка, которая возникала при чтении сообщения, содержащего символы < и &.
  233. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при вставке в начале сообщения нового блока свойство “цвет выделения текста” применялось к фону всего блока, а не к подложке текста.
  234. В методе Tessa.Platform.IO.TempFile.AcquireFolder(string) исправлена ошибка, из-за которой возвращаемый объект управлял не временной папкой, а папкой, указанной в параметре.
  235. Исправлена ошибка, из-за которой в реализации интерфейса Tessa.Platform.IO.ITempFolder по умолчанию временная папка не удалялась, если была создана не при создании временного файла через Tessa.Platform.IO.ITempFolder.AcquireFile(string).
  236. Оптимизировано использование типов диалогов посредством API в TessaClient и в конструкторах представлений и карточек в TessaAdmin.
  237. Исправлены утечки памяти и ошибки NRE, связанные с использованием типов диалогов в desktop-клиенте.
  238. В конструкторе бизнес-процессов в действии “Таймер” исправлена доступность поля “Условие остановки таймера” в ситуации, когда процесс не был заблокирован на редактирование.
  239. В web-клиенте исправлена ошибка в элементе управления “Текст с форматированием”, приводившая к некорректному расчету высоты и ширины вставляемых изображений, если они меньше максимально разрешенного размера.
  240. В web-клиенте в обсуждениях исправлена ошибка, приводившая к уменьшению размера шрифта ссылок в сообщении после редактирования.
  241. В web-клиенте в контроле автокомплита исправлен ручной ввод.
  242. В web-клиенте исправлена ошибка, приводившая к тому, что кнопка “Развернуть” не отображалась в элементе управления “Текст с форматированием”, если включен режим “Только для чтения”.
  243. В web-клиенте исправлен баг, приводивший к появлению изменений в структуре карточки после открытия, если в ней есть элемент управления “Текст с форматированием” и из него были удалены изображения перед предыдущим сохранением.
  244. Исправлено формирование обратных ссылок в письмах мобильного согласования.
  245. Исправлена обработка пустого заголовка Content-Encoding при обработке ответов на запросы от Exchange Web Services. Исправление соответствует версии библиотеки Microsoft.Exchange.WebServices.NETStandard 2.0.0-beta2.
  246. В web-клиенте исправлено отображение длинного наименования карточки в диалоге при подтверждении удаления карточки.
  247. В API тестов исправлена ошибка в методе TestCardHelper.RepairCardRowOrders, из-за которой не устанавливалось состояние CardRowState.Modified при изменении поля, содержащего порядковый номер.
  248. В методе KrProcessSharedHelper.RepairStorageRowsOrders исправлена ошибка, приводившая к изменению поля Order, а не указанного в параметре orderField.
  249. В маршрутах исправлена ошибка при одновременном удалении и пропуске этапа.
  250. В маршрутах в шаблоне этапов “Возврат на доработку” исправлена локализация названия этапа “Управление процессом” при использовании локализации, отличной от русского языка.
  251. В конструкторе бизнес-процессов в таблице с кнопками исправлена проблема, когда в списках “Состояния” и “Доступно ролям” не удалялись дубли.
  252. В конструкторе бизнес-процессов исправлена проблема, когда положение контролов для редактирования расширений кнопки было некорректным, если в редакторе расширения кнопки использовалось несколько вкладок.
  253. Оптимизирована работа плагина асинхронной обработки бизнес-процессов.
  254. Кнопка “Копировать” в окне со списком загруженных расширений и патчей теперь копирует в буфер обмена информацию по патчам.
  255. Исправлены значения констант: DefaultCardTypes.KrStageCommonMethodTypeName и DefaultCardTypes.KrStageTemplateTypeName. Они содержали неправильные имена типов карточек.
  256. В API тестов исправлена ошибка, возникающая при удалении временного файлового хранилища во время инициализации тестов.
  257. Оптимизирована загрузка типов карточек для СУБД MS SQL Server.
  258. Исправлена регистрация ряда расширений для классов Registrator в методах InitializeExtensions, тогда как она должна выполняться в методе RegisterExtensions.
  259. Исправлены возможные ошибки с неосвобождаемыми блокировками на запись карточки и на запись настроек сотрудника из-за отмены запроса по CancellationToken.
  260. Исправлен скрипт миграции для версии 3.4.0, в котором не добавлялась секция TaskCommonInfo для заданий типа KrUniversalTask, используемых в этапах маршрутов “Настраиваемое задание”. Ошибка приводила к тому, что карточка с заданием этого типа переставала открываться. Актуально при обновлении с версии 3.3.1 или более ранней.
  261. Исправлена ошибка, которая возникала при импорте карточки, когда прикрепленные файлы присутствуют только в сателлитах, но не в самой карточке.
  262. Исправлена отправка почты посредством Exchange, если в настройке NoticeMailer.ExchangeFrom указана пустая строка. В этом случае используется настройка NoticeMailer.ExchangeUser в соответствии с документацией.
  263. В web-клиенте исправлена работа фильтров представления с decimal типом.
  264. В web-клиенте исправлена ошибка, из-за которой не очищался контрол выбора даты/времени.
  265. В маршрутах исправлена ошибка, из-за которой этап, добавленный с помощью метода IKrScript.AddStageAsync или IKrScript.GetOrAddStageAsync, изменял порядок после пересчёта маршрута.
  266. Исправлена ситуация, когда в топике форумов (обсуждений) пользователь мог видеть кнопку “Подписаться” вместо кнопки “Отписаться”, если он включён в участники обсуждения и через роль (посредством API), и как сотрудник.
  267. Исправлена обработка ошибок при отправке уведомлений по новым сообщениям в обсуждениях.
  268. Оптимизирован поиск отписавшихся от обсуждений пользователей в некоторых сценариях.
  269. Исправлена возможность заменить зависимость IForumProviderStrategy в регистраторе расширений на сервере. Ранее зарегистрированная зависимость в контейнере Unity игнорировалась платформенными расширениями.
  270. Асинхронный пересчёт участников при некоторых действиях в обсуждениях теперь выполняется посредством IBackgroundServiceQueue, что гарантирует их корректное завершение при остановке веб-сервиса.
  271. Исправлена ошибка, когда при экспорте карточки поверх уже имеющейся в экспортируемом файле происходило лишнее обновление информации.
  272. В процессе работы плагина конвертации файлов каждый период обслуживания теперь пересоздаются все объекты API и выполняется повторное чтение настроек из базы данных. Это предотвращает проблемы, когда изменённые настройки файловых хранилищ не актуализировались в Chronos, если он не перезапускался и не был настроен сброс кэшей посредством Redis. Период указывается в app.json в настройке FileConverter.MaintenancePeriod, по умолчанию это 1 час.
  273. В конструкторе бизнес-процессов в действии “Настраиваемое задание” в таблице “Варианты завершения” исправлена проблема, из-за которой можно было добавить вариант завершения с неуникальным идентификатором.
  274. В маршрутах в этапе “Настраиваемое задание” в таблице “Варианты завершения” исправлена проблема, из-за которой можно было добавить вариант завершения с неуникальным идентификатором.
  275. В web-клиенте исправлена ошибка при SAML аутентификации, которая вызывала постоянные переходы на окно логина.
  276. Устранена ошибка, из-за которой в контроле “Представление” не учитывалась сортировка, указанная в представлении.
  277. В desktop-клиенте в контролах “Ссылка” и “Список” исправлено применение настройки “Расширенная локализация” при наличии настройки “Формат поля”.
  278. Исправлена ошибка, возникающая при попытке изменить участника обсуждения с типом “Роль” в ситуации, если права супермодератора не были запрошены в карточке, хотя фактически они есть.
  279. В схеме данных исправлена ошибка, когда при работе с файловой схемой данных при изменении имени или библиотеки программных объектов (функции, процедуры, миграции) старые файлы *.ms.sql и *.pg.sql этих объектов, при их наличии, не удалялись.
  280. В web-клиенте исправлена ошибка, из-за которой выполнялись браузерные команды при многократном нажатии горячих клавиш карточки.
  281. В web-клиенте исправлена проверка обновления Deski, где мог предлагаться даунгрейд на старую версию Deski в качестве обновления.
  282. Оптимизировано обращение к кэшам локализации, карточек и представлений сервером приложений.
  283. В API тестов исправлена ошибка ArgumentOutOfRangeException при удалении временного файлового хранилища. Ошибка возникала, если был снят флаг, разрешающий удаление временной базы данных (SetupTempDbAttribute.RemoveDatabase = false), и режим удаления временного файлового хранилища (TestBase.RemoveFileStorageMode) был установлен как RemoveFileStorageMode.Auto.
  284. В обсуждениях (форумах) desktop-клиента исправлена установка цвета шрифта и цвета выделения текста при добавлении пункта списка в поле ввода сообщения.
  285. В обсуждениях (форумах) desktop-клиента исправлена установка атрибутов шрифта при вставке ссылки в поле ввода сообщения.
  286. В форумах desktop-клиента при вставке текста из буфера обмена в поле ввода сообщения теперь происходит обнуление отступов абзацев.
  287. Для команд и скриптов tadmin исправлена загрузка сборок, указанных в настройке ProbingPath в файле app.json.
  288. Оптимизирована конвертация файлов (например, для предпросмотра в формате PDF) при наличии большого количества файлов в базе данных.
  289. Исправлена конвертация файлов (например, для предпросмотра в формате PDF), если она выполняется для непоследней версии файла.
  290. В команде tadmin PackageApp сообщение “Failed to load assembly, falling back to default alias and name” выводится на уровне логирования Warn вместо Error, поскольку оно не является критичной ошибкой.
  291. В desktop-клиенте исправлено скрытие основной вкладки карточки (без алиаса) флажком “Скрыть”, и исправлена ошибка IndexOutOfRangeException, если скрыта одна из вкладок левее основной.
  292. Исправлена передача параметров пейджинга при выполнении представления для ссылочных параметров фильтрации.
  293. В web-клиенте исправлена ошибка в элементе управления “Текст с форматированием”, приводившая к тому, что изображения в тексте отображались поверх тулбара, если элемент управления находился в режиме чтения.
  294. В web-клиенте исправлена ошибка, в некоторых ситуациях приводившая к невозможности сохранить карточку, если в элемент управления “Текст с форматированием” было добавлено изображение и удалено до сохранения карточки.
  295. В web-клиенте исправлена ошибка, из-за которой у сотрудника оставались права доступа на редактирование карточки после её передачи на следующий этап, на котором у сотрудника нет права на редактирование.
  296. В web-клиенте исправлена ошибка при обращении к свойствам tableType и rowSortingType класса CardSection.
  297. В web-клиенте исправлена ошибка, из-за которой не заполнялась колонка “Настройки” в таблице “Кнопки бизнес-процесса”.
  298. В desktop-клиенте для контрола “Представление” исправлена работа флага “Разрешить прокрутку”.
  299. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой при вводе сообщения и при копировании текста из внешнего источника не сохранялись переходы строки.
  300. В desktop-клиенте улучшено выравнивание вкладок карточки и контрола “Вкладки” для настройки размера шрифта Windows, отличного от 100%.
  301. В web-клиенте исправлена ошибка, приводившая к бесконечному пересчёту календаря.
  302. В desktop-клиенте улучшено качество отображения картинок в контроле “Текст с форматированием” и в форумах (обсуждениях).
  303. В web-клиенте исправлена ошибка, при которой не удавалось загрузить файл по полученной ссылке.
  304. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой в пустом сообщении после выбора цвета выделения текста и нажатия одной из следующих кнопок: Жирный, Курсивный, Подчеркнутый, Зачеркнутый, либо смены размера шрифта, фон контрола ввода сообщения менял цвет на ранее выбранный.
  305. В плагинах расчёта ACL и умных ролей исправлена проблема, когда при возникновении ошибки при перерасчёте система запускала новый перерасчёт для большего числа записей, чем было запрошено изначально, добавляя в список записей дубли.
  306. В web-клиенте исправлен баг в обработке удаленных изображений при редактировании сообщения, который приводил к включению названий удаленных изображений в служебное сообщение и давал возможность отправить пустое сообщение.
  307. Исправлена ошибка при расчёте ACL в ситуации, когда расчёт добавляет большое число записей, но при этом не удаляет никаких записей.
  308. В desktop-клиенте в форумах (обсуждениях) исправлен интервал между абзацами при вставке текста из буфера обмена в контрол ввода сообщения.
  309. В web-клиенте добавлен фон для панели вложений в элементе управления “Текст с форматированием”.
  310. В web-клиенте исправлена ошибка перехода, которая могла возникать при выходе из системы с включённой SAML аутентификацией.
  311. В web-клиенте в элементе управления “Текст с форматированием” исправлена ошибка в некоторых ситуациях, делавшая невозможным вставку в текст после удаления ссылки.
  312. В desktop-клиенте в контроле “Таблица” исправлена проблема, когда при уменьшении ширины колонки содержимое ячеек этой колонки перекрывало соседние ячейки.
  313. В desktop-клиенте при добавлении или замене файла, недоступного для чтения, теперь выводится понятное сообщение об ошибке. Ранее при добавлении файла выводилась низкоуровневая ошибка, а замена для такого файла не выполнялась без сообщений.
  314. В web-клиенте исправлена ошибка в колонке “Флажок” элемента управления “Таблица представления”, приводившая к тому, что область вокруг флажка не реагировала на нажатие левой кнопки мыши.
  315. В web-клиенте исправлена ошибка, из-за которой не скрывалась вкладка “Карточка”.
  316. В web-клиенте исправлена ошибка, из-за которой не работала сортировка для вкладки “Карточка”.
  317. В web-клиенте исправлена ошибка, приводившая к некорректному отображению фона у списков в элементе управления “Текст с форматированием”.
  318. Исправлена ошибка отправки уведомлений в ситуации, когда в теле или заголовке уведомления используются методы для получения данных из плейсхолдеров.
  319. В web-клиенте исправлена ошибка, из-за которой при добавлении валидатора “Непустая секция” на табличную секцию контрол “Таблица” не отмечался как обязательный.
  320. В web-клиенте реализована корректная работа расширения “Список файлов в представлении” в форме таблицы.
  321. Исправлена десериализация объекта токена сессии SessionToken из XML в части дат Created и Expires. Теперь для дат корректно указывается DateTimeKind.Utc.
  322. При закрытии сессии вызовом ISessionManager.CloseAsync теперь очищается текущий токен ISessionTokenHolder.SessionToken, он более не будет передаваться с последующими запросами к веб-сервису.
  323. Улучшена обработка ошибок в Tessa Applications при невозможности подключиться к серверу.
  324. Исправлено отображение плитки “Создать файл по шаблону” при выборе папки в дереве рабочего места.
  325. В web-клиенте исправлена ошибка при открытии диалога “Настройки уведомлений по карточке”, если у карточки не был указан формат дайджеста.
  326. В web-клиенте исправлена ошибка, из-за которой при запрете на редактирование секции, поля помечались как обязательные к заполнению.
  327. Для контрола “Представление” в режиме отображения файлов карточки исправлен автоматический расчёт размеров колонок. Актуально в desktop-клиенте.
  328. Исправлено масштабирование изображений во встроенном предпросмотре PDF в desktop-клиенте, используя Ctrl+колесо мыши.
  329. Исправлено добавление в карточку колонок беззнаковых целых типов: UInt16, UInt32, UInt64. Колонки в карточке функционируют аналогично знаковым типам.
  330. Исправлено значение свойства IFilePagingControlModel.PreviewPath для модели области предпросмотра IFilePreviewModel.PagingControl в desktop-клиенте.
  331. Исправлена ошибка, из-за которой кнопки “Создать копию” и “Создать шаблон” были недоступны обычным сотрудникам, если тип карточки “Сотрудник” не включён в типовое решение.
  332. Исправлено обновление версии конфигурации системы при изменении схемы.
  333. В web-клиенте в элементе управления “Представление” исправлена ошибка, приводившая к отображению только что удаленных строк.
  334. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой после вставки в контрол ввода сообщения содержимого из MS Word либо сообщения форума через буфер обмена после вставленного фрагмента в текст добавлялась пустая строка.
  335. В web-клиенте исправлена ошибка, из-за которой в таблице “Кнопки бизнес-процесса” в колонке “Есть условие” отображалось некорректное значение.
  336. В web-клиенте исправлена проблема, из-за которой при включении типа карточки “Сотрудник” в типовое решение кнопки “Создать копию” и “Создать шаблон” не были доступны обычным сотрудникам, даже если у них был доступ на создание шаблона и копирование карточек в правилах доступа.
  337. В web-клиенте исправлена ошибка, из-за которой кнопки “Создать копию” и “Создать шаблон” были недоступны обычным сотрудникам, если тип карточки “Сотрудник” не включён в типовое решение.
  338. В web-клиенте исправлена ошибка, приводившая к тому, что после удаления нескольких строк в элементе управления “Представление” оставшиеся строки не отображались.
  339. В карточке Автомобиль (Car) при указании раздела справки в панели инструментов отображается тестовая кнопка.
  340. В web-клиенте исправлена ошибка, из-за которой при добавлении нескольких этапов (созданных из шаблонного) в маршрут, созданный этап не сохранял свою позицию.
  341. В web-клиенте исправлена ошибка, из-за которой при открытии “Печатной версии листа согласования” в списке версий по клику на контекстное меню “Открыть на чтение в папке”, в ней появлялся полный лист согласования.
  342. Исправлено отображение элементов LeftItems и RightItems во вью модели CardViewControlViewModel для контрола “Представление” в desktop-клиенте.
  343. В web-клиенте исправлено отображение кнопки “В работу” в задаче, в скрытых по умолчанию действиях.
  344. В Tessa Applications при переименовании алиаса сервера теперь переименовывается папка в кэше. Если при этом изменяется путь к серверу, то папка с приложениями удаляется.
  345. В web-клиенте исправлено отображение значений Да/Нет в карточке “Правила доступа” в таблице “Список условий”.
  346. В web-клиенте убрана неактуальная полоса прокрутки для карточек в диалоговом окне, если места для отображения содержимого достаточно.
  347. В web-клиенте исправлена ошибка с копированием переименованного файла в буфер обмена.
  348. Исправлен текст подсказки и предупреждения для плитки “Заполнить временные зоны” в карточке настроек “Временные зоны”.
  349. В web-клиенте исправлена ошибка с сохранением поисковых запросов, при которой запросы не отображались при последующих обновлениях страницы до выхода с последующим логином.
  350. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, возникавшая в контроле ввода сообщения при ответе после нажатия Backspace на позиции, следующей за цитируемым фрагментом.
  351. В логе веб-сервиса исправлено условие выдачи предупреждения “Insert ActiveBatch failed”, которое ранее записывалось в лог при успешной вставке.
  352. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание”, работающих в режиме параллельной отправки заданий, исправлена ошибка, приводившая к отсутствию сигнала завершения действия при завершении последнего из заданий. Ошибка воспроизводилась, если хотя бы одно из отправленных заданий было удалено, например, с помощью сигнала удаления заданий (DeleteTask).
  353. В web-клиенте исправлена ошибка, приводившая к неправильному определению ориентации документа в предпросмотре PDF.
  354. Исправлена ошибка при нажатии кнопки “Добавить обсуждение” для контрола “Обсуждение” в предпросмотре карточки TessaAdmin.
  355. Исправлены ошибки при выполнении скрипта tadmin Script ConvertSearchQueries в процессе обновления с версии платформы 3.5.0 и более ранней.
  356. В desktop-клиенте и командах консольного приложения tadmin исправлена ошибка, возникавшая при попытке импорта поискового запроса в формате exchange для обратной совместимости с пустым значением параметра TemplateCompositionID.
  357. В web-клиенте исправлена ошибка, приводившая к тому, что при переходе по ссылке из элемента управления “Текст с форматированием” или из текстового поля в элементе управления “Обсуждения” ссылка приводилась к нижнему регистру.
  358. В desktop-клиенте исправлено открытие списка сообщений по двойному клику из списка топиков, которое приводило к нескольким одинаковым запросам к серверу.
  359. В web-клиенте исправлено открытие топиков, которое теперь выполняется не по двойному, а по одиночному клику, как и в desktop-клиенте.
  360. В поиске по обсуждением исправлено удаление некоторых специальных символов, введённых пользователем.
  361. Исправлено выполнение скриптов обновления Upgrade.bat/upgrade.sh, если в карточках приложений указаны доступные роли.
  362. В desktop-клиенте при отображении карточек в диалоге исправлена доступность кнопок тулбара “Копировать ссылку” и “Удалить”.
  363. В web-клиенте убрано выделение текста ячейки по двойному клику на строке представления (таблицы).
  364. Исправлена ошибка получения сертификата издателя при работе с подписями.
  365. Исправлено завершение заданий из мобильного согласования. Ошибка воспроизводилась в случае, если мобильное согласование было включено для типа карточки, не включающего в себя секцию DocumentCommonInfo или её поля FullNumber и Subject.
  366. Исправлена загрузка строк локализации при публикации приложения TessaAppManager посредством параметра командной строки /publish.
  367. При публикации приложений посредством параметра командной строки /publish более не используется кэш метаинформации в папке %LocalAppData%\tessa\cache.
  368. Исправлено использование цвета заданий по умолчанию в “Моих настройках”. Теперь задания окрашиваются в этот цвет, если в окне “Мои настройки” у пользователя не задан цвет для соответствующей функциональной роли (исполнителя, автора). Если пользователь видит задание как заместитель, то проверяется наличие цвета для заместителя и цвета без замещения, и при отсутствии обоих цветов задействуется цвет задания по умолчанию.
  369. Оптимизирована массовая вставка строк посредством API IBulkInsertExecutor.
  370. В web-клиенте исправлено поведение определения другой открытой вкладки: по клику нотификации - осуществляется переход, при закрытии или игнорировании - загрузка приложения.
  371. В web-клиенте установлена минимальная ширина контрола “Кнопка” по умолчанию для соответствия desktop-клиенту.
  372. В web-клиенте исправлена ошибка, из-за которой при перезагрузке приложения использовались закешированные пользовательские настройки в представлениях рабочего места, а не актуальные данные настроек.
  373. Исправлена ошибка, приводившая к тому, что не сохранялась первая строка многострочного комментария при завершении задания дополнительного согласования.
  374. Исправлена редкая ошибка “Collection was modified”, возникающая при рефреше карточки с одновременным открытием боковой панели в desktop-клиенте.
  375. В web-клиенте исправлена ошибка, из-за которой не работал пункт контекстного меню “Скрыть столбец”, после применения пункта “Сбросить настройки” в представлении рабочего места.
  376. Исправлена проверка доступа к карточке сателлита, не доступной для загрузки на клиент, при запросе карточки с клиента по её идентификатору.
  377. Оптимизировано взаимодействие с базой данных при конвертации файла посредством IFileConverter.ConvertFileAsync. Теперь соединение с базой данных не будет удерживаться до завершения конвертации.
  378. В web-клиенте в представлении “Участники” в контроле “Обсуждение” исправлена работа контекстных меню (“Изменить” и “Удалить”). Теперь если у пользователя нет прав супермодератора, то будет предложено рассчитать их. Поведение команд идентично поведению соответствующих плиток в представлении.
  379. Исправлена конвертация файлов с флагом IgnoreCacheBeforeConversion. Ранее этот флаг игнорировался и контент файла выдавался из кэша без создания новой операции конвертации.
  380. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлены ошибки при отправке уведомлений.
  381. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой при делегировании задания не учитывались параметры: “Редактировать карточку” и “Редактировать любые файлы”. В действии “Согласование” дополнительно не учитывался параметр “Отключить автоматическое согласование”.
  382. В обсуждениях (форумах) исправлена ошибка, из-за которой топик мог быть доступен пользователю только для чтения, когда у пользователя есть права на отправку сообщений.
  383. При проверке подписей исправлено ошибочное отображение иерархии сертификатов.
  384. Исправлено отображение кавычек в окне отображения информации о проверке подписей.
  385. В web-клиенте исправлена ошибка в обсуждениях приводившая к визуальному отсутствию пустых строк и удалению идущих друг за другом пробелов.
  386. Для веб-сервиса убрана поддержка создания операции конвертации со стороны клиента.
  387. В web-клиенте исправлено появление второй полосы прокрутки при предпросмотре офисных документов.
  388. Для контролов “Ссылка” и “Список” исправлен маппинг представления на поля карточки для случаев, когда контрол привязан к карточке задания.
  389. Исправлен импорт карточки временных зон поверх уже имеющейся.
  390. В TessaAdmin исправлена ошибка, когда при выборе столбца для привязки элемента управления, наименование группы для таблиц всегда отображалось как “(без группы)”.
  391. Исправлено исключение, возникавшее при компиляции шаблона файла в том случае, когда модуль компиляции не мог выстроить синтаксическое дерево.
  392. Исправлена ошибка, возникавшая при попытке добавить или отредактировать запись в контроле представления со скрытой колонкой.
  393. В маршрутах исправлена ошибка, приводившая к ошибочному определению наличия изменения положения этапов.
  394. В web-клиенте исправлено отображение вложенных блоков в стандартной вкладке “История заданий”.
  395. В desktop-клиенте исправлены ошибки, возникавшие при сохранении или закрытии карточки с контролами “Представление” или “Список” без предварительного открытия вкладки с соответствующими контролами.
  396. Оптимизировано отображение типов диалогов в конструкторе представлений и конструкторе виртуальной схемы.
  397. Исправлена неизменность объекта SessionToken, которому в конструкторе передан параметр seal = true.
  398. В редакторе бизнес-процессов в действии “Диалог” исправлена ошибка, из-за которой не учитывался параметр “Текст кнопки в задании”.
  399. Для приложений Tessa Applications исправлена редкая ошибка FileNotFoundException при обращении к именованному каналу посредством класса PipeClient.
  400. Исправлена ошибка, возникающая при проверке прав доступа к карточке с выделением номера при создании карточки в ситуации, когда доступ к полям номера карточки запрещён через расширенные настройки правил доступа.
  401. Исправлен двойной клик по значению DefaultSortColumns в конструкторе представлений.
  402. Исправлена ошибка, из-за которой при отправке уведомлений через INotificationManager правила уведомлений сотрудника обрабатывались в некорректном порядке.
  403. В web-клиенте исправлена ошибка применения настроек внешнего вида строк в таблицах.
  404. В системе исправлена проблема с наличием лишнего доступа на изменение карточек-сателлитов из клиента.
  405. В web-клиенте исправлена ошибка несоответствия времени выбранного для параметра в фильтре его отображению в таблице над представлением.
  406. В web-клиенте исправлена некорректная инициализация контрола “Обсуждение”, если контрол находился на скрытой/неактивной вкладке.
  407. В маршрутах исправлена работа этапа “Пересчёт маршрута”. Ошибка воспроизводилась в случае, когда после этапа “Доработка”, с выставленным параметром “Управлять видимостью этапа”, следовал этап “Пересчёт маршрута”.
  408. Исправлена возможная ошибка DllNotFoundException при открытии окна сканирования.
  409. В desktop-клиенте исправлено определение языка пользователя при генерации виртуального файла для предпросмотра с конвертацией в PDF.
  410. Оптимизированы проверки прав доступа и отображение сообщений об ошибках доступа в запросах, связанных с обсуждениями.
  411. Исправлена невозможность снять флаг “Использовать обсуждения” в настройках типового решения для типа карточки или типа документа, если он был ранее установлен для лицензии, в которой есть модуль “Форумы и обсуждения”, а в текущий момент этого модуля в лицензии нет.
  412. Улучшена обработка ошибок в API тестов.
  413. Исправлено определение подписывающего сертификата при импорте.
  414. При проверке подписей учитывается подтверждённая дата подписи или текущее время.
  415. В web-клиенте добавлены всплывающие подсказки для кнопок в обсуждениях.
  416. В web-клиенте исправлена ошибка, из-за которой контрол “Выбор цвета” блокировался при изменении прозрачности.
  417. В web-клиенте для CardTypeSectionColumn.defaultValue исправлено преобразование типов при десериализации.
  418. В настройках расширения на узел дерева RefSectionExtension исправлены заголовки диалогов для добавления строк в таблицы.
  419. В web-клиенте исправлена ошибка, из-за которой не работало расширение AutomaticNodeRefreshExtension на узле рабочего места.
  420. Оптимизировано создание источника файлов IFileSource, используемого при создании файлового контейнера ICardFileContainer.
  421. При подписании файла электронной подписью пользователю не выводится ошибка после отказа ввода пин-кода.
  422. В web-клиенте исправлен баг, приводящий к некорректной работе поиска и фильтров при копировании в них полей из элементов управления “Ссылка” и “Список”.
  423. В web-клиенте исправлена ошибка, из-за которой в контроле “Ссылка” при получении нового значения из кода расширения отображалось неактуальное старое значение.
  424. Исправлена команда tadmin CheckService: если параметр -timeout задан как 0 (по умолчанию), то таймаут подключения соответствует бесконечному, как указано в описании параметра. Ранее использовался таймаут из конфигурационного файла, который был определён как 40 минут.
  425. Оптимизирована производительность сервисов и приложений, связанная с логированием на уровне Trace.
  426. Исправлена ошибка, возникавшая при генерации шаблона файла после импорта карточки шаблона файла на уже существующую карточку, если у импортируемой карточки есть изменения в файле шаблона.
  427. Оптимизировано выполнение представлений для СУБД PostgreSQL.
  428. При обновлении схемы данных исправлена проблема, из-за которой некорректно выводилась ошибка сохранения схемы данных в ситуации, когда ошибка вызывала поломку транзакции к базе.
  429. В TessaAdmin исправлена ошибка при добавлении в диалог маппинга для контролов “Ссылка”, “Список”, “Список файлов”, “Представление”.
  430. Исправлена ошибка в команде tadmin ConvertCards, возникающая, когда целевая директория при конвертации карточек совпадает с исходной.
  431. В desktop-клиенте исправлена ошибка при попытке сохранить файл из сообщения топика на диск, при помощи перетаскивания drag&drop.
  432. В web-клиенте исправлен текст сообщения об ошибке “Не удалось найти тип документа с ID {0}”.
  433. В web-клиенте исправлена ошибка в контроле “Нумератор”, из-за которой нельзя было задавать номер карточки вручную после редактирования порядкового номера.
  434. В форумах (обсуждениях) исправлена ошибка при попытке ответить на сообщение, содержащее в себе только приложенные файлы.
  435. Исправлена работа ограничения “Максимальный размер файла для загрузки в систему” в карточке настроек сервера.
  436. Оптимизировано открытие карточки, добавленной в типовое решение, в случае, если в ней отсутствуют виртуальные файлы.
  437. Исправлена локализация строк для системы контекстной справки в случае, когда строка локализации содержала вложенную строку локализации.
  438. Исправлен сброс кэша виртуальных файлов при изменении карточек шаблонов файлов.
  439. При сохранении карточек виртуальных файлов сброс кэша теперь происходит вне открытой транзакции.
  440. В web-клиенте исправлена ошибка, приводившая к отсутствию индикации статуса “Архивировано” для архивированных топиков форумов (обсуждений).
  441. В desktop-клиенте для контрола “Представление” исправлен вывод ошибки при указании некорректного алиаса параметра CardID.
  442. В web-клиенте в форумах (обсуждениях) исправлена ошибка, не позволяющая изменить отображаемое имя внешней ссылки в сообщении.
  443. Исправлены ошибки, связанные с использованием локального кэша метаинформации в консольном приложении tadmin. Теперь в консольных приложениях локальный кэш не используется.
  444. Исправлено зависание сервера приложений при изменении конфигурации системы. Проблема воспроизводилась при перезапуске сервера приложений в случае, если для рабочего процесса был выдан тот же идентификатор, какой он был до перезапуска, и не был настроен сброс кэшей посредством Redis. Это актуально для Docker контейнеров, где для рабочего процесса всегда указывается идентификатор равным 1.
  445. В конструкторе бизнес-процессов исправлены потенциальные NRE, вызванные возвратом значения null методами: IWorkflowEngineCardsScope.GetCardAsync, IWorkflowEngineCardsScope.GetFileContainerAsync, IWorkflowEngineCardsScope.GetCardForSendTasksAsync, IWorkflowEngineContext.GetTaskAsync, IWorkflowEngineContext.SendTaskAsync.
  446. В desktop-клиенте исправлена ошибка, из-за которых при добавлении нового параметра в поисковый запрос во время нахождения в узле данного запроса имелась возможность удалить последний добавленный параметр из наложеннего фильтра, а также нельзя было сбросить фильтр после применения запроса вне данного узла.
  447. Исправлены возможные утечки памяти в TessaClient при использовании сканирования и предпросмотра.
  448. В форумах (обсуждениях) исправлено удаление дубликатов строк в таблице FmUserStat, из-за которых дублировались сообщения в почтовых уведомлениях.
  449. Исправлена ошибка, которая в редких ситуациях могла приводить к возникновению дедлоков при одновременном завершении нескольких заданий.
  450. В API тестов исправлена ошибка, из-за которой при возникновения ошибки во время обработки списка отложенных действий в PendingActionsProvider, объект оставался запечатанным и содержащим запланированные действия.
  451. В API тестов исправлено удаление временных внешних ресурсов (база данных, файловое хранилище и т.д.), если они не были удалены при завершении предыдущего запуска тестов.
  452. В API тестов в методе PendingActionsProviderExtensions.RegisterPendingActionsProducer исправлена ошибка, приводившая к частичной потере результатов валидации.
  453. В API тестов исправлена ошибка удаления карточек при параллельном выполнении на уровне тестов.
  454. В web-клиенте для элемента управления “Текст с форматированием” исправлена ошибка, из-за которой в некоторых ситуациях было невозможно вставить ссылку в текст с первого раза.
  455. В web-клиенте исправлена ошибка, приводившая к изменению значений контролов “Дата и Время” при потере фокуса.
  456. В web-клиенте значения колонок “Дата и Время” в представлениях теперь отображаются с учетом параметра TreatValueAsUtc.
  457. Исправлена ошибка, из-за которой при сохранении карточки с клиента проверка флагов запроса на сохранение DoesNotAffectVersion и ForbidStoringHistory не выполнялась.
  458. В TessaAdmin в редакторе типов карточек исправлена локализация всплывающей подсказки для незаполненных обязательных полей.
  459. В приложениях TessaClient и TessaAdmin исправлена загрузка сборок, указанных в настройке ProbingPath в файле app.json.
  460. В desktop-клиенте исправлена работоспособность контрола “Текст с форматированием” в форме редактирования строки таблицы.
  461. В приложении TessaClient исправлена утечка памяти при перетаскивании файла drag&drop.
  462. В desktop-клиенте в модели представления контрола “Нумератор” исправлено свойство Number, теперь оно корректно возвращает целое число Int64.
  463. В приложении TessaClient исправлена иконка курсора при обновлении и сохранении карточки.
  464. Исправлена доступность поля ввода номера страницы в панели пейджинга представления при изменении свойства IPagingSource.OptionalPagingStatus.
  465. В форумах (обсуждениях) исправлена ошибка, приводившая к некорректному открытию топика из представлений “Мои обсуждения” и “Последние обсуждения”, расположенного на вкладке, отличной от стандартной.
  466. В web-клиенте исправлена ошибка ввода спецсимволов в поле поиска элементов управления “Таблица”, “Представление”.
  467. В web-клиенте исправлена ошибка, позволяющая пользователю, не обладающему правами администратора, видеть папку “Общие запросы” при сохранении поисковых запросов в представлениях.
  468. При чтении JSON в системе увеличена максимально допустимая глубина вложенности до 128, что исправило, например, чтение типов карточек с вложенными контролами “Контейнер” и “Вкладки”, и чтение рабочих мест с большой вложенностью узлов.
  469. В API тестов исправлена выдача предупреждения “Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware. Failed to determine the https port for redirect.”.
  470. Исправлена сортировка значений в представлении VatTypes (“Типы НДС”) для PostgreSQL.
  471. Оптимизировано выполнение расширения KrCardGetExtension для карточек, не входящих в типовое решение.
  472. Исправлена ошибка, возникающая при нажатии на кнопку “Отложить” в задании, когда в нём есть файловый контрол.
  473. В конструкторе бизнес-процессов в действиях “Задание” и “Группа заданий” исправлена ошибка, из-за которой не учитывался параметр “Сохранять файлы после завершения диалога”.
  474. В редакторе бизнес-процессов в действиях “Задание” и “Группа заданий” исправлена ошибка NRE при инициализации задания диалога при открытии карточки. Ошибка воспроизводилась, если задание диалога не было взято в работу.
  475. В маршрутах в этапе “Диалог” и в редакторе бизнес-процессов в действиях “Диалог”, “Задание” и “Группа заданий” исправлена ошибка при отображении скрытого задания диалога.
  476. Учтена ситуация при формировании подписи, когда метка времени может быть выдана на время в недалеком будущем, что могло приводить к формированию невалидных подписей уровня XLT1.
  477. При проверке подписей учитывается информация, содержащаяся во вложенных атрибутах, что могло влиять на проверку подписей уровня XLT1.
  478. В desktop-клиенте исправлена ошибка, возникавшая при попытке обновить элемент управления “Представление” с пустым содержимым.
  479. В desktop-клиенте исправлено некорректное формирование документа в элементе управления “Текст с форматированием”, при изменении размера шрифта.
  480. Оптимизировано получение типа документа для карточки.
  481. В методе KrComponentsHelper.CheckKrComponentsAsync исправлена ошибка, из-за которой не обрабатывался флаг KrComponents.UseForum.
  482. Оптимизировано выполнение расширений KrCheckGroupBoundariesStoreExtension и KrCheckStageRowModifiedStoreExtension для карточек, у которых не включены маршруты документов.
  483. Оптимизирован SQL-скрипт, генерируемый с помощью команды tadmin SchemeScript.
  484. Для контрола “Представление” с расширением “Представление истории заданий” исправлено отображение длинного текста с прокруткой в окне “Запись в истории заданий”.
  485. В web-клиенте исправлена ошибка в контроле “Дата”, из-за которой при нажатии кнопки выбора даты пропадало все содержимое страницы в мобильной версии.
  486. Исправлена проблема одновременной инициализации объекта шаблона бизнес-процесса из нескольких потоков. Из-за неё в потоках, осуществивших инициализацию объекта первыми, могла возникнуть ошибка отсутствия узла бизнес-процесса, хотя фактически узел в процессе существовал.
  487. Оптимизирована загрузка метаинформации представлений и рабочих мест.
  488. В web-клиенте исправлена некорректная работа при объединении документов в Word для списка версий в файловом контроле.
  489. В web-клиенте в карточке “Правило расчёта ACL” в таблице “Триггеры” исправлено формирование значений в столбце “Настройки”.
  490. Исправлено функционирование мьютексов в Linux при отмене ожидания по cancellationToken. Мьютексы могут использоваться при сбросе глобального кэша в web-сервисе и Chronos, а также при запуске дочерних процессов Chronos.
  491. В Tessa Applications исправлена ошибка, не позволяющая ввести логин и пароль при добавлении первого сервера.
  492. Исправлено отображение записи из истории действий по импорту карточки в режиме SmartMerge при наличии в ней отложенных заданий.
  493. Для мобильных браузеров отключено определение ранее открытой вкладки из-за некорректного поведения во встроенных браузерах.
  494. В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой некоторые сообщения, отправленные в основном из web-клиента, не отображались из-за невозможности определить стиль, что пользователю выводилось как ошибка загрузки, а в логах записывалось исключение NullReferenceException.
  495. В маршрутах в этапе “Настраиваемое задание” исправлена ошибка, из-за которой задание не содержало вариантов завершения, указанных в настройках. Ошибка воспроизводилась, если в типе задания KrUniversalTask был выставлен флаг “Автоматически брать в работу” или в объекте задания был указан флаг CardTaskFlags.AutoStart.
  496. В конструкторе бизнес-процессов в действии “Настраиваемое задание” исправлена ошибка, из-за которой задание не содержало вариантов завершения, указанных в настройках. Ошибка воспроизводилась, если в типе задания KrUniversalTask был выставлен флаг “Автоматически брать в работу” или в объекте задания был указан флаг CardTaskFlags.AutoStart.
  497. В desktop-клиенте добавлена необходимая логика для выгрузки содержимого при закрытии диалоговых окон для предотвращения потенциальных утечек памяти.
  498. В представлении “Мои задания” (MyTasks) в сабсете “По роли” исправлена ошибка счетчика, возникавшая после переименования роли.
  499. Оптимизировано потребление памяти для просмотра файлов PDF/TIFF.
  500. В форумах (обсуждениях) исправлено отображение сообщений, отправленных удалёнными или несуществующими сотрудниками, и исправлено формирование логотипа по имени сотрудника, указанному в сообщениях.
  501. В TessaAdmin исправлена ошибка инвалидации кэша для типов карточек после изменения схемы.
  502. В TessaAdmin исправлена ошибка, при которой в маппинге полей карточки не было видно таблиц и их колонок, если таблица не является секцией какого-либо типа карточек.
  503. Исправлено возможное выполнение методов расширений TileExtension.InitializingGlobal дважды при запуске TessaClient. Теперь соответствующий метод гарантированно выполняется ровно один раз.
  504. В desktop-клиенте в форумах (обсуждениях) исправлена отрисовка панели инструментов при нехватке места. Кнопка “Отправить” отображается всегда, а остальная часть тулбара прокручивается колесом мыши.
  505. В web-клиенте исправлена ошибка, из-за которой в файловом контроле при группировке файлов по циклам согласования могло отображаться некорректное число файлов.
  506. В маршрутах в этапах “Согласование” и “Подписание” исправлена ошибка, из-за которой учитывалось значение комментария, заданного на форме варианта завершения “Запросить комментарий”, при завершении задания с вариантом завершения “Запросить дополнительное согласование”.
  507. В редакторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой учитывалось значение комментария, заданного на форме варианта завершения “Запросить комментарий”, при завершении задания с вариантом завершения “Запросить дополнительное согласование”.
  508. В API тестов исправлено потенциальное NRE при выполнении метода WeProcessInstanceLifecycleCompanion.SendSignal, если переданный в конструкторе объект CardLifecycleCompanion не содержал карточки.
  509. В API тестов в методе KrAssert.HasNoTask исправлена ошибка, из-за которой не работала проверка на отсутствие указанного типа задания в карточке.
  510. В TessaClient исправлено выбрасывание исключения ObjectDisposedException при обращении к методу IFileContent.EnterLockAsync. В частности, ошибка воспроизводилась в виде диалога с сообщением The semaphore has been disposed в случае, если при загрузке файла для предпросмотра, карточка была обновлена.
  511. В web-клиенте исправлен баг, из-за которого скрытые этапы маршрута не выделялись серым цветом.
  512. В web-клиенте исправлена ошибка доступа к Deski при сохранении отредактированной копии файла.
  513. В web-клиенте исправлена ошибка, приводившая к зависанию панели тайлов при использовании тайла “Создать файл по шаблону”.
  514. Оптимизирован запуск TessaClient и web-клиента в части инициализации рабочих мест.
  515. В web-клиенте на мобильных устройствах исправлена обработка ошибки во время открытия карточки, когда другие рабочие места переставали быть доступны для пользователя.
  516. В web-клиенте исправлена ошибка, из-за которой пункт контекстного меню “Активировать” в таблице маршрутов был доступен всегда.
  517. В конструкторе бизнес-процессов оптимизирована загрузка карточек сателлитов.
  518. В web-клиенте исправлена ошибка, не позволявшая выгружать диаграммы посредством тайлов “Выгрузить все данные” и “Выгрузить текущую страницу”.
  519. Исправлена поддержка кодов серверов ServerCode, содержащих нестандартные символы для ссылок, например, русскоязычный текст.
  520. В web-клиенте исправлена ошибка в контроле “Дата и время”, из-за которой нельзя было устанавливать дату вручную на мобильных устройствах.
  521. Общие оптимизации производительности для серверных компонентов и desktop-приложений.
  522. Оптимизировано получение основного сателлита с помощью метода IKrScope.GetKrSatelliteAsync.
  523. Исправлено избыточное создание основного сателлита для новой основной карточки при расчёте возможности полного пересчёта процесса.
  524. В форумах (обсуждениях) исправлена ошибка, не позволяющая супермодератору сохранить или открыть файл из обсуждения, если он не входит в список участников топика.
  525. В web-клиенте исправлена ошибка, приводившая к некорректной работе анимации контекстного меню в браузере Mozilla Firefox.
  526. При загрузке карточки больше не загружается информация о кнопках локальных вторичных процессов маршрутов в случае, если карточка загружается в серверных расширениях.
  527. Стратегия перерасчёта замещений DeputiesSyncStrategy теперь кэширует стандартный логгер, используемый при отсутствии логгера в запросе.
  528. Оптимизирована проверка прав при сохранении карточки с измененными файлами.
  529. WorkflowEngineStoreExtension не будет создавать очередь действий с Workflow при каждом сохранении карточки.
  530. Card.RemoveAllButChanged будет обнулять поля Card.Files и Card.Tasks в случае, если не было изменений. Это актуально для методов Card.TryGetFiles и Card.TryGetTasks, которые возвращают null в случае, если эти поля не были заданы.
  531. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, когда обычный участник топика мог добавить модератора в участники этого топика.
  532. В desktop-клиенте для элемента управления “Текст с форматированием” исправлена ошибка, которая в некоторых случаях приводила к некорректному определению наличия изменений в карточке.
  533. При загрузке карточки документа проверка наличия ознакомления будет пропущена в случае, если карточка загружается в серверных расширениях.
  534. Оптимизировано создание карточек ролей при условии, что заполнены поля Roles.TimeZoneID и Roles.CalendarID.
  535. Оптимизировано потребление памяти в классе Tessa.Cards.ComponentModel.CardLoader, используемом при загрузке данных карточки.
  536. В web-клиенте исправлена ошибка, приводившая к закрытию окна диалога поисковых запросов при удалении запроса.
  537. В web-клиенте исправлена ошибка, из-за которой активированные этапы маршрута выделялись серым цветом.
  538. В web-клиенте исправлена ошибка отображения блока с настройкой “Заголовки слева” внутри элемента управления “Контейнер”.
  539. В редакторе схемы данных убрано автоматическое удаление ссылочной колонки при удалении этой колонки из первичного ключа.
  540. В редакторе схемы данных исправлена ошибка создания и изменения внешнего ключа таблицы в ситуации, когда автоматически сформированное имя внешнего ключа оказывалось слишком длинным.
  541. В web-клиенте исправлена ошибка, приводившая к отсутствию расчёта положения вложенных уровней контекстного меню.
  542. Оптимизирована сериализация в Typed Json для Guid и IDictionary<string, object>.
  543. Исправлен запуск web-клиента, если у одного из рабочих мест, доступных пользователю, указана настройка “Где отображать узел”, равная “Tessa Client”.
  544. В конструкторе бизнес-процессов исправлено название сохраняемых в историю действий объектов.
  545. В обработчике шаблонов бизнес-процессов исправлена ошибка получения задания по идентификатору, возникающая в ситуации, если обработка процесса идёт вне сохранения карточки.
  546. При сохранении карточки сотрудника добавлена очистка пробелов из начала и конца значения поля E-mail.
  547. Оптимизировано первое сохранение карточек, использующих проектные номера.
  548. В конструкторе бизнес-процессов блокировки на обработку экземпляров бизнес-процессов теперь хранятся не в таблице WorkflowEngineProcessesLocks, а в Redis.
  549. В конструкторе бизнес-процессов снятие блокировок на обработку экземпляров бизнес-процессов теперь происходит при завершении транзакции.
  550. В web-клиенте исправлена ошибка, приводившая к отсутствию ограничения высоты ячеек колонки “Результат” вкладки “История заданий”.
  551. В методах ICardEditorModel.CreateCardAsync и ICardEditorModel.OpenCardAsync исправлена ошибка, из-за которой нельзя было заменить модель представления с помощью параметра cardModelModifierActionAsync.
  552. Исправлена ошибка в экспорте карточек, при которой могли быть потеряны данные, если экспортируемая карточка перезаписывала существующую.
  553. В команде tadmin ConvertCards исправлена ошибка, при которой могли быть потеряны данные, если конвертируемые файлы перезаписывали существующие.
  554. В desktop-клиенте исправлена ошибка при загрузке карточки настроек, к которой приложено большое количество файлов. Например, если к карточке “Настройки электронной подписи” приложить 30 файлов сертификатов.
  555. Исправлено получение метаинформации по карточкам настроек из кэша, если единственным изменением в карточке было добавление файла. Например, к карточке “Настройки электронной подписи” был добавлен файл сертификата.
  556. В маршрутах и редакторе бизнес-процессов исправлена ошибка, из-за которой не обрабатывался параметр “Имя диалога (для расширений)” этапа и действия “Диалог”.
  557. В конструкторах классов CardEditorCreationContext и CardEditorOpeningContext исправлена передача значения параметра cancellationToken в базовый класс.
  558. Исправлена ошибка, из-за которой в метаданных представления настройка SelectionMode не работала.
  559. Восстановлена работоспособность сворачивания и разворачивания групп в древовидном представлении при использовании режима выделения “Ячейка”.
  560. В desktop-клиенте для контрола “Представление” исправлено выполнение представления в контексте UIContext, что позволяет обращаться к текущей карточке из клиентского перехватчика представления, задействованного в контроле.
  561. Исправлен механизм увеличения номера версии конфигурации при сохранении и удалении системных типов карточек, влияющих на метаинформацию, когда ранее версия могла не увеличиваться, несмотря на то, что сохранение или удаление было выполнено.
  562. В web-клиенте исправлены отступы блоков, вложенных в список, и шрифт моноширинного блока в элементах управления “Текст с форматированием” и “Обсуждения”.
  563. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, приводившая к появлению лишних переносов строки, при копировании многострочного текста из web-клиента.
  564. В desktop-клиенте в форумах (обсуждениях) и элементе управления “Текст с форматированием” исправлено некорректное определение размера шрифта в текущей позиции курсора.
  565. В маршрутах в этапе “Задача” исправлена ошибка, из-за которой не завершался этап при отзыве задания верхнего уровня, если в параметрах этапа был установлен флаг “Вернуть после завершения”.
  566. В конструкторе бизнес-процессов в действии “Выполнение задачи” исправлена ошибка, из-за которой не завершалось действие при отзыве задания верхнего уровня, если в параметрах действия был установлен флаг “Вернуть после завершения”.
  567. В desktop-клиенте отступ области с заданиями в карточке привязан к положению начала контента под вкладками (актуально, когда вкладки скрыты или занимают несколько строк).
  568. В конструкторе бизнес-процессов оптимизировано удаление процесса при завершении обработки.
  569. В web-клиенте исправлено использование параметров фильтрации представлений, у которых в схеме данных указан тип Decimal или Currency.
  570. Блокировки на чтение и запись правил доступа теперь хранятся не в таблице KrPermissionsSystem, а в Redis.
  571. Оптимизировано выполнение расширения KrCheckStageRowModifiedStoreExtension.
  572. В маршрутах исправлена проверка наличия изменений в этапах вложенного процесса.
  573. В маршрутах оптимизирована проверка порядка следования этапов.
  574. Исправлена локализация имён виртуальных файлов, приложенных к отправляемому письму. В типовом решении это актуально для файла “Лист согласования”.
  575. Исправлена логика отображения пункта меню “Создать файл по шаблону” файлового контрола по аналогии с соответствующей плиткой из левой панели.
  576. В web-клиенте в тулбаре диалоговых окон исправлены ссылки на карточки.
  577. В web-клиенте исправлена ошибка в работе заданий, в которых был добавлен контрол “Список файлов”.
  578. В web-клиенте исправлена ошибка, приводившая к отсутствию отступов между некоторыми контролами.
  579. В web-клиенте исправлена ошибка, приводившая к игнорированию настройки “Заголовки слева” в блоках карточки.
  580. В web-клиенте в контроле “Список файлов”, добавленном на форму задания, исправлена некорректная группировка по категориям копий файлов.
  581. В контроле “Список файлов” добавлен сброс фильтров при добавлении нового файла.
  582. В web-клиенте пункт файлового контрола “Добавить версию” переименован в “Заменить”.
  583. В TessaAdmin в редакторе локализации исправлена работа кнопки “Обновить все библиотеки локализации с сервера”.
  584. В контроле “Представление” исправлено некорректное отображение выделенных ячеек.
  585. В маршрутах в этапе “Задача” исправлена передача названий сохраняемых объектов в историю действий.
  586. В конструкторе бизнес-процессов для действия “Выполнение задачи” исправлена передача названий сохраняемых объектов в историю действий.
  587. В маршрутах добавлена строка локализации для ключа сообщения о результате валидации DefaultValidationKeys.RecalcWithChanges.
  588. В маршрутах исправлена ошибка, из-за которой происходило некорректное выполнение процесса. Ошибка воспроизводилась, если перед запуском процесса маршрут был пересчитан и изменён в карточке документа, после чего шаблон этапов был удалён или исключён по условию.
  589. Оптимизировано выполнение расширения KrStagePermissionsNewGetExtension при получении информации о шаблонах этапов.
  590. В маршрутах исправлена ошибка, из-за которой можно было изменять параметры этапа созданного по шаблону, если это было запрещено в шаблоне или группе этапов.
  591. Исправлено сообщение об ошибке при попытке удаления сателлита по запросу с клиента.
  592. Исправлена ошибка сериализации KrToken при проверке прав на доступ к представлению “История заданий”.
  593. Исправлено удаление карточки, содержащей задание, назначенное на удалённую роль.
  594. В конструкторе бизнес-процессов в действии “Согласование” исправлена ошибка при изменении отображаемого порядка следования согласующих после добавления или удаления дополнительных согласующих.
  595. В конструкторе бизнес-процессов в действии “Согласование” исправлено удаление дополнительных согласующих при удалении основных согласующих.
  596. В desktop-клиенте добавлено обнуление свойства ICardModel.ClosingRequest при закрытии диалога с карточкой.
  597. В desktop-клиенте при первом сохранении карточки, для которой был выделен номер, теперь не отправляется запрос на дерезервирование номера.
  598. В web-клиенте исправлена ошибка, приводившая к некорректному отображению описания колонок диаграмм.
  599. Исправлена возможность скопировать тип диалога в TessaAdmin через контекстное меню на типе.
  600. Исправлена ошибка, возникающая при отображении элемента управления “Представление” и приводящая к исключению в случае, если в выводимом представлении было некорректно задано отображаемое имя колонки.
  601. Во всплывающей подсказке (popup) контролов “Ссылка”, “Список” и ссылочных параметров фильтрации в представлениях исправлен вывод колонок типа Time, содержащих только время.
  602. В web-клиенте в элементе управления “Текст с форматированием” исправлен ряд ошибок, предотвращавших корректный ввод текста при работе с программной клавиатурой в Android.
  603. В маршрутах исправлено некорректное определение того, был ли изменён порядок для вручную добавленного этапа. Ошибка воспроизводилась, если после добавления этапа, перед изменением его порядка, не выполнялось сохранение карточки.
  604. В таблице ActionHistory исправлен индекс по колонкам ApplicationID+Modified.
  605. В маршрутах исправлена ошибка В маршруте отсутствуют этапы, выполняемые при запуске процесса (вторичный процесс "<Название вторичного процесса>", ID ="<Идентификатор вторичного процесса>"). при запуске асинхронного локального вторичного процесса. Ошибка воспроизводилась, если процесс содержал этапы, и во всех из них был установлен флаг “Не показывать в маршруте”.
  606. В маршрутах исправлена ошибка при загрузке карточки, если при её выполнении были исключены секции (CardGetRestrictionFlags.RestrictSections).
  607. Расширение WorkflowTilesNewGetExtension не будет пытаться получить список тайлов WorkflowEngine при создании карточки файла.
  608. При перезапуске сервиса Chronos в Linux исправлено освобождение объектов синхронизации, некорректно освобождённых на предыдущем запуске, что могло приводить к зависанию.
  609. Оптимизирована регистрация ряда серверных расширений в IUnityContainer.
  610. Исправлено выполнение методов расширений ***Finally (например, ICardStoreExtension.AfterRequestFinally), где методы последующих классов расширений перестают выполняться, когда срабатывает токен отмены операции context.CancellationToken.
  611. Исправлено параллельное открытие нескольких диалоговых окон из объекта IAdvancedCardDialogManager, запрошенного из Unity.
  612. В файлах app.json для Chronos и веб-сервиса исправлен парсинг необязательных настроек AdSync.Port, AdSync.TimeoutMilliseconds, AdSync.ConnectionAttemptCount, AdSync.ConnectionAttemptIdle, а также для группы LDAP исправлен парсинг настроек ConnectionAttempt и ConnectionAttemptIdle.
  613. Оптимизировано обращение к свойству ConfigurationObject.DataProvider, выполняемое при открытии соединения к базе данных.
  614. Оптимизировано выполнение цепочек расширений посредством IExtensionExecutor<TExtension>, когда к объекту невозможны одновременные обращения из разных потоков (нитей выполнения).
  615. Исправлено сохранение результата валидация с ошибками при компиляции скриптов различных объектов системы. Проблема могла привести к некорректному выполнению некоторых скриптов в ситуации, когда их компиляция не была выполнена из-за ошибки в скрипте.
  616. Исправлена ошибка, из-за которой обращения к свойствам CardTask.Card и CardFile.Card в расширениях ICardStoreExtension.BeforeRequest для удаляемых заданий и файлов приводило к ошибкам валидации вида Значение свойства 'ID' не задано.
  617. Удален флаг .forumExportCardTemplate, ранее проставлявшийся при экспорте карточек в Card.Info.
  618. При открытии вкладки “Обсуждения” в карточке больше не делается запрос на получение топиков в случае, если карточка ни разу не была сохранена.
  619. Исправлена работа параметров DataProtectionCertificateFile и DataProtectionCertificatePassword в файле app.json сервиса web.
  620. В редакторе схемы данных исправлена ошибка, из-за которой редактирование колонки становилось невозможным, если длина её имени превышала 128 символов.
  621. В desktop-клиенте в форумах (обсуждениях) и в контроле “Текст с форматированием” исправлена ошибка, приводившая к тому, что при копировании текста из Microsoft Word некоторое форматирование могло не сохраняться.
  622. В desktop-клиенте в маршрутах исправлена ошибка KeyNotFoundException при сохранении карточки, для которой разрешены маршруты, если она была загружена с исключением всех секций (CardGetRestrictionFlags.RestrictSections).
  623. Исправлена ошибка, из-за которой сортировка в Tessa Applications на вкладках “Серверы” и “Приложения” отличалась от сортировки в контекстном меню на иконке в таскбаре.
  624. В desktop-клиенте оптимизирована работа представлений, показывающих большое количество строк.
  625. В desktop-клиенте в форумах (обсуждениях) и элементе управления “Текст с форматированием” исправлена ошибка, приводившая к тому, что внесенные в полноэкранном режиме изменения не сохранялись.
  626. В таблице SequencesInfo исправлен индекс по колонке Name для PostgreSQL.
  627. Исправлены почтовые уведомления о необходимости скорого изменения пароля, когда за раз пользователю могло быть отправлено более одного письма.
  628. Исправлена локализация текста во всплывающих уведомлениях при запуске TessaClient о необходимости скорого изменения пароля.
  629. В форумах (обсуждениях) исправлена ошибка, приводившая к некорректному поведению при попытке изменить самого себя в списке участников.
  630. В web-клиенте в элементе управления “Текст с форматированием” исправлена ошибка, которая приводила к некорректной вставке текста, содержащего xml-подобную разметку, и добавлена возможность вставить содержимое буфера обмена как текст с помощью сочетания клавиш Ctrl+Shift+V.
  631. В desktop-клиенте оптимизирована отрисовка кнопок на тулбарах при сохранении и обновлении карточки.
  632. Оптимизирован запрос на проверку прав доступа для СУБД PostgreSQL.
  633. Оптимизирован расчёт замещений для СУБД PostgreSQL.
  634. В web-клиенте исправлена ошибка, из-за которой при обновлении обсуждений введенный текст не сохранялся.
  635. В web-клиенте при первом сохранении карточки, для которой был выделен номер, теперь не отправляется запрос на дерезервирование номера.
  636. В маршрутах исправлена ошибка, из-за которой можно было удалить или активировать этап, расположенный в активной части процесса. Ошибка воспроизводилась для этапов, у которых был установлен флаг “Разрешён пропуск”.
  637. Исправлен текст ошибки при попытке сохранить карточку ICardEditorModel.SaveCardAsync, если объект ICardModel не содержит корректно инициализированный объект FileContainer. Ранее возникала ошибка NRE.
  638. В web-клиенте исправлена ошибка при редактировании файла через Deski, из-за которой файл мог сохраниться с неправильным размером.
  639. В desktop-клиенте добавлено автоматическое разворачивание активного окна при клике на заблокированные модальными диалогами окна.
  640. В редакторе бизнес-процессов исправлена ошибка ArgumentNullException при загрузке редактора или запуске процесса. Ошибка возникала, если в действии “Старт процесса” не был указан “Запускающий сигнал”.
  641. В web-клиенте исправлена ошибка, приводившая к отсутствию реакции скролла представлений на нажатие клавиш “вверх” и “вниз”.
  642. В web-клиенте исправлена ошибка, приводившая к некорректному отображению некоторых изображений вертикальной ориентации в режиме предпросмотра: адаптация изображения происходила только в горизонтальном направлении.
  643. В web-клиенте исправлена ошибка в обновлении значений ячеек в контроле ‘Таблица’.
  644. В web-клиенте исправлена ошибка в отображении параметра “Отображаемое имя диалога” для этапа и действия в локальном и глобальном диалоге.
  645. В web-клиенте исправлена ошибка, приводившая к отсутствию возможности скролла “рукой” области предпросмотра PDF-файлов в continuous режиме.
  646. Исправлена проблема в логике распознавания сервисных гиперссылок для “Обсуждений”, которая приводила к неработоспособности других гиперссылок, содержащих в строке Uri ключевые слова, используемые в сервисных гиперссылках для “Обсуждений”.
  647. В TessaAdmin в редакторе рабочих мест исправлена ошибка при автоматическом выборе пункта меню в момент открытия режима просмотра рабочего места.
  648. В web-клиенте исправлена ошибка, приводившая к отсутствию вертикальных отступов для контролов горизонтальных блоков.
  649. В desktop-клиенте исправлена проблема, когда часть заголовка была закрыта иконкой сортировки по колонке.
  650. В desktop-клиенте в представлениях рабочих мест и контроле “Представление” исправлено определение позиции строк “Загрузка данных” и “Нет данных для отображения” в ситуации, когда высота заголовка таблицы отличается от стандартной.
  651. В web-клиенте исправлена ошибка, из-за которой не открывалась ссылка, указанная для контрола “Метка”.
  652. В web-клиенте исправлена ошибка, из-за которой в карточке задания не отображались прикрепленные файлы.
  653. В web-клиенте текст ошибки при превышении максимально допустимого размера изображения вынесен в строку локализации.
  654. Оптимизировано получение данных из календарей при вычислении плановых сроков завершения задач.
  655. Для контрола “Представление” в desktop-клиенте исправлено восстановление колонок после изменения или сброса группировки: ранее колонки всегда добавлялись в конец, а теперь их положение соответствует тому, как они указаны в метаинформации или же в сохранённом для пользователя порядке.
  656. Исправлено использование локализации в плагинах Chronos по умолчанию: если не задано иначе, то язык и настройки форматирования устанавливаются для английского языка, а не в соответствии с языком ОС, на которой запущен Chronos.
  657. Исправлена ошибка, из-за которой в редакторе типов карточек в настройках маппинга представления нельзя было выбрать в качестве поля карточки колонку с идентификатором, ссылающуюся на таблицу с типом “Перечисление”.
  658. В карточке настроек “Типовое решение” исправлена локализация названия типа этапа “Согласования” в таблице “Настройки этапов маршрута” для языка интерфейса, отличного от русского.
  659. В Tessa Applications исправлена возможная ошибка The wait completed due to an abandoned mutex при обработке ссылок tessa://tessaclient....
  660. В web-клиенте исправлена ошибка, из-за которой не работала подсветка полей представления при указании для строки #appearance цвета в 6-значном формате (#A62231) в тексте запроса.
  661. Теперь взятие блокировки на запись для сохраняемой карточки выполняется вне зависимости от наличия изменений и флага CardStoreRequest.AffectVersion.
  662. В маршрутах и конструкторе бизнес-процессов исправлена загрузка и сохранение сателлитов. Теперь загрузка и сохранение сателлитов выполняется в блокировке на основную карточку.
  663. В desktop-клиенте исправлена ошибка, из-за которой при нажатии на кнопку очистки значений в контролах “Ссылка” и “Список” фокус сбрасывался на родительский блок, что могло привести к незапланированному скроллингу карточки в ситуации, когда заголовок блока был вне поле зрения. Теперь после нажатия кнопки очистки значений фокус устанавливается на сам контрол.
  664. В desktop-клиенте в контролах “Ссылка” и “Список” исправлена проблема вызова события ValueDeleted при удалении элемента из контрола через контекстное меню или кнопку очистки значения.
  665. Для desktop-клиента и консольного приложения tadmin оптимизировано потребление памяти при отправке запросов к серверу приложений.
  666. В маршрутах исправлена ошибка, приводившая к потере результатов валидации из IKrScope.ValidationResult. Ошибка возникала, если при запуске процесса происходила ошибка загрузки сателлита с информацией о процессе.
  667. Исправлено создание дублирующих экземпляров IUnityContainer при инициализации сервиса web. Это могло приводить к зависанию сервиса при большом количестве параллельных запросов.
  668. Исправлена ошибка при запуске TessaClient или TessaAdmin из Tessa Applications 3.4.0 с текстом: System.TimeoutException: The operation has timed out.
  669. Исправлено предупреждение в логах Can't resolve assembly "Microsoft.SqlServer.Server" для консольной утилиты tadmin.
  670. Исправлено использование метода DeferredEventArgs.Defer в различных обработчиках событий для серверного API и desktop-клиента, где в качестве экземпляра события передавалось значение DeferredEventArgs.Empty.
  671. Исправлена работа кнопки “Сброс настроек” в диалоге “Мои настройки”. Теперь для всех настроек устанавливаются значения по умолчанию.
  672. В диалоге импорта карточек из библиотеки (в TessaClient или TessaAdmin) исправлена ошибка NotSupportedException, которая могла возникать после того, как в диалоге сначала открыта существующая библиотека карточек, а потом в неё добавлен файл.
  673. В desktop-клиенте в методе копирования стиля текста TextStyleViewModel.Set исправлено копирование оформления текста.
  674. В диалоге импорта карточек из библиотеки (в TessaClient или TessaAdmin) исправлен диалог выбора пути при сохранении библиотеки в случае, если редактируется уже существующая библиотека карточек.
  675. В диалоге импорта карточек из библиотеки (в TessaClient или TessaAdmin) исправлена ошибка NotSupportedException, которая могла возникать, если в диалоге сначала открыть существующую библиотеку карточек, в которую были добавлены несуществующие файлы, после чего в диалоге подтверждения на удаление карточек с отсутствующими файлами нажать “Да”.
  676. При расчёте заместителей исправлена ошибка, из-за которой замещения могли завершаться на день раньше, чем было настроено. Проблема возникала при использовании СУБД Postgres.
  677. Оптимизировано время выполнения для цепочек расширений при вызове метода IExtensionExecutor.ExecuteAsync (и методов-расширений, таких как ExecuteWithExceptionCheckAsync).
  678. В TessaAdmin для контрола выбора типа значения исправлена сортировка при быстром поиске по заглавным буквам.
  679. В web-клиенте исправлена ошибка, приводившая к невозможности использовать быстрый поиск в мобильной версии приложения на операционной системе Android.
  680. Исправлена ошибка, приводившая к NRE, при указании несуществующего параметра в маппинге контрола “Представление”.
  681. В web-клиенте в контроле “Текст с форматированием” можно установить флаг через расширение на растягивание высоты контрола по его контенту.
  682. В web-клиенте исправлена ошибка, приводившая к некорректному отображению пейджинга представлений на операционной системе iOS.
  683. В обработчике шаблонов бизнес-процессов исправлена ошибка, когда при сохранении карточки в ходе обработки процесса сообщения с уровнем Info и Warning не возвращались в результате обработки процесса и не выводились пользователю.
  684. В web-клиенте в элементе управления “Текст с форматированием” исправлена ошибка, приводившая к некорректному отображению контрола при большом количестве вложений.
  685. Исправлены опечатки в названиях классов, методов, параметров темы, строк локализации и других объектов: Pallete -> Palette.
  686. В web-клиенте исправлена ошибка, приводившая к некорректному отображению даты кэширования метаинформации: ранее время отображалось в utc формате, теперь в локальном.
  687. В файле app.json веб-сервиса включение конфигурационных файлов app-*.json теперь выполняется позже, чем файлов patch*.json и localization.json, что позволяет изменять в них строки локализации и информацию по патчам.
  688. Исправлена ошибка, возникающая при выполнении команды tadmin MigrateFiles, когда система неуспешно пыталась разрешить зависимости, связанные с компиляцией. Также исправлены другие ошибки, предотвращавшие использование команды.
  689. В desktop-клиенте исправлена ошибка, из-за которой некоторые фотографии, снятые на мобильные устройства, при загрузке в программу оказывались перевернуты.
  690. При импорте карточек в процессе объединения изменений SmartMerge с карточкой в системе исправлена проблема, когда исправление карточки вызывалось дважды: один раз для импортируемой карточки и один раз для существующей карточки в системе, что могло привести к двойным сообщениям об исправлении карточки. Теперь исправление выполняется только для импортируемой карточки.
  691. Механизм исправления карточек теперь также восстанавливает тип секции, если он был указан неверно.
  692. Оптимизирована работа типов условий, теперь для них не создаются фиктивные типы карточек, которые загружались на клиент.
  693. В клиенте исправлено восстановление исходного порядка строк при отмене удаления строки в обработчике события GridViewModel.RowInvoked.
  694. Исправлена ошибка отображения блоков в форме, когда блоки могли визуально накладываться друг на друга.
  695. В web-клиенте исправлена ошибка, приводившая к сдвигу текстового слоя в контроле расширенного редактирования текста RichText при выделении.
  696. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой указывался некорректный вариант завершения в истории заданий при завершении задания с вариантом “Запросить комментарии”.
  697. Исправлена ошибка, которая приводила к тому, что при импорте карточки её исправление выполнялась дважды, если такая же карточка находится в корзине.
  698. В web-клиенте исправлена ошибка контролов “Ссылка” и “Список” в диалоге настройки параметров фильтрации представлений. Кнопка выбора из автокомпилта остается доступной, даже если настройка AutocompleteInfo не была задана в настройках контрола.
  699. В web-клиенте исправлена возможность скачивания Deski в случае, если язык пользователя отличается от русского или английского. Теперь в таких случаях будет возвращаться Deski для английского языка.
  700. Переделана логика формирования записей замещения для динамических и метаролей. Теперь в таблицу с настройками замещения роли добавляются только записи, относящиеся к сотрудникам, входящим в эту роль.
  701. Исправлена ошибка, из-за которой в процессе сохранения карточки с удалением файла при возникновении ошибки сохранения содержимое файла могло быть удалено.
  702. В TessaAdmin в редакторе типов карточек исправлена локализация параметра “Максимальная высота” для английского языка.
  703. В маршрутах исправлена ошибка, из-за которой при пропуске этапа не сохранялась информация об изменённых параметрах или порядке следования в маршруте. Ошибка воспроизводилась, если пропуск этапа выполнялся после изменения его параметров и/или порядка следования.
  704. В маршрутах исправлена ошибка, приводившая к изменению порядка следования этапов при одновременном пропуске нескольких этапов.
  705. В маршрутах исправлена ошибка, из-за которой при пропуске этапа изменялось положение добавленного вручную этапа. Ошибка воспроизводилась, если перед пропуском этапа карточка содержала добавленный вручную этап с изменённым порядком следования.
  706. В desktop-клиенте исправлена инициализация свойства RowEventArgs.CancellationToken.
  707. В маршрутах исправлена локализация списка сотрудников, которые согласовали/не согласовали документ в случае, если роль, на которую было отправлено задание согласования, названа строкой локализации.
  708. В маршрутах исправлена локализация названий этапов в дайджесте заданий в случае, если этап назван строкой локализации.
  709. В web-клиенте исправлена работа флага Localizable для колонок представления.
  710. Исправлена генерация шаблонов файлов в ситуации, когда файл был создан с помощью “МойОфис Таблица”.
  711. Исправлена замена плейсхолдеров в колонтитулах .xslx файлов.
  712. В web-клиенте метод ApplicationExtension.finalize теперь корректно вызывается при логауте из приложения.
  713. В desktop-клиенте исправлена ошибка при повторном создании карточки по шаблону с помощью тайла “Создать карточку”. Ошибка воспроизводилась, если до этого карточка по шаблону была создана по двойному клику ЛКМ по строке представления в рабочем месте “Пользователь - Шаблоны”.
  714. В desktop-клиенте исправлено выравнивание текста в контроле “Текст с форматированием”.
  715. В маршрутах и в конструкторе бизнес-процессов исправлена ошибка, из-за которой следующий диалог не открывался автоматически, если текущий перед завершением был закрыт. Ошибка воспроизводилась, если для следующего диалога был установлен “Режим открытия диалога” “Всегда”.
  716. В маршрутах и в конструкторе бизнес-процессов улучшено управление кнопками, расположенными на тулбаре в расширении для модели представления карточки диалога (CardUIExtension). Если необходимо, например, отобразить кнопку на тулбаре только для карточки, открытой во вкладке, то при её добавлении следует проверить условие ICardUIExtensionContext.DialogName is null.
  717. В методе CardTaskDialogHelper.SetFileContentToInfoAsync исправлена возможная потеря результатов валидации.
  718. В маршрутах и в конструкторе бизнес-процессов улучшена обработка ошибок, которые могли произойти при отображении карточки в диалоге.
  719. В web-клиенте исправлено вычисление имени рабочей области с карточкой. Ошибка воспроизводилась при задании отображаемого имени карточки с помощью параметра displayValue в методах createCard и showCard.
  720. В маршрутах и в конструкторе бизнес-процессов в desktop-клиенте исправлено создание пустых строк коллекционных и древовидных секций карточки диалога с временем жизни “Задание” (ICardModel.SectionRows). Ошибка воспроизводилась при открытии сохранённой карточки диалога.
  721. В web-клиенте исправлена ошибка при выборе размера шрифта в обсуждениях на мобильных устройствах.
  722. В desktop-клиенте в форумах (обсуждениях) и в контроле “Текст с форматированием” исправлена ошибка, из-за которой у скопированной ссылки не снимался атрибут Зачеркнутый.
  723. Исправлено скрытие копий файлов, созданных в процессе согласования документа, в контроле файлов. Ошибка возникала в случае, если оригинальный файл отсутствовал.
  724. В web-клиенте исправлена ошибка, приводившая к отсутствию переноса текста в заголовках представлений.
  725. В контроле “Представление” при использовании расширения “Таблица в представлении” с настроенной колонкой с флагом исправлена ошибка определения доступа на редактирование флага.
  726. В desktop-клиенте исправлена проверка электронных подписей файлов. Теперь сообщение “Проверка подписи” всегда показывается только один раз, вне зависимости от количества подписей.
  727. Оптимизированы потребление памяти и сетевой трафик при загрузке метаинформации, содержащей большое количество типов карточек, включённых в типовое решение.
  728. В desktop-клиенте в маршрутах и в конструкторе бизнес-процессов исправлена ошибка, из-за которой в карточку диалога с временем жизни “Задание” добавлялась вкладка, содержащая информацию из окна редактирования содержимого поля в отдельном окне. Ошибка воспроизводилась, если карточка диалога была сохранена перед открытием окна редактирования поля в новом окне.
  729. В web-клиенте исправлено отображение информации о сертификате при проверке штампа времени у сертификата, после использования ЭП для подписания файлов.
  730. В окне просмотра подписей исправлено отображение названия подписанта для случая многозначных отличительных имён (multi-valued relative distinguished names).
  731. В web-клиенте выбор сертификата для подписания из хранилища теперь происходит по хеш-значению.
  732. В обработчике шаблонов бизнес-процессов исправлена проблема, когда при асинхронной обработке процесса не записывалась ошибка о том, что шаблон процесса заблокирован на редактирование.
  733. В расширении “Список файлов в представлении” исправлена локализация для колонки “Категория”.
  734. Теперь настройки доступа на подписание, которые указаны в карточке, учитываются при добавлении новых файлов к карточке.
  735. В маршрутах и конструкторе бизнес-процессов исправлен доступ к контексту основной карточки IUIContext в расширении для модели представления карточки диалога ICardUIExtension. Теперь доступ к родительскому контексту можно получить через свойство IUIContext.Parent.
  736. Оптимизирован формат сериализации jtype для типов карточек.
  737. В web-клиенте в текстовом контроле в карточке исправлена ошибка, которая приводила к лишним изменениям в структуре карточке.
  738. Для сервисов web и chronos оптимизировано потребление памяти при сохранении файлов.
  739. В web-клиенте исправлена ошибка, из-за которой не учитывался порядок отображения тайлов вторичных процессов.
  740. В desktop-клиенте исправлен deadlock при использовании асинхронного кода в обработчике события RowEditorClosing по закрытию диалога редактирования строки в контроле “Таблица” и в контроле “Представление” с расширением “Таблица в представлении”.
  741. При редактировании строки в таблице контрола “Представление” больше не происходит избыточного обновления всего контрола.
  742. Исправлена запись дайджеста в историю действий при добавлении или удалении статических ролей и подразделений в карточке сотрудника.
  743. Исправлено скрытие вкладок контрола “Вкладки” расширенными правами доступа. Актуально для web-клиента и desktop-клиента.
  744. В маппинге контролов “Ссылка”, “Список”, “Список файлов” и контрола “Представление” с расширением “Список файлов в представлении” исправлено объединение нескольких значений одного и того же параметра по логике “ИЛИ”. Ранее значения добавлялись как параметр дважды, что определяло логику объединения “И”.
  745. В маршрутах в этапе “Диалог” исправлена ошибка NRE при задании контента файлу, расположенному в карточке диалога с временем жизни “Запрос”, с помощью метода SetFileContent. Ошибка воспроизводилась при задании контента файлу, добавленному в сценарии диалога.
  746. В конструкторе бизнес-процессов исправлена ошибка NRE при задании контента файлу, расположенному в карточке диалога с временем жизни “Запрос”, с помощью метода SetFileContentAsync. Ошибка воспроизводилась при задании контента файлу, добавленному в сценарии диалога или в сценарии варианта завершения диалога.
  747. В API тестов в методе KrTestHelper.InitializeDialogCard исправлена ошибка, из-за которой не загружалась существующая карточка диалога с временем жизни “Карточка”.
  748. В конструкторе бизнес-процессов в действиях “Задание” и “Диалог” исправлена ошибка, из-за которой в карточке диалога с временем жизни “Запрос” или “Задание” не сохранялись файлы и изменения, если они вносились в сценариях: “Сценарий сохранения”, “Сценарий валидации”, “Сценарий обработки варианта завершения диалога”.
  749. Исправлена ошибка, из-за которой не сохранялся файловый сателлит после автоматического переноса файлов, имеющих флаг FileSatelliteHelper.FileSatelliteFileKey, если карточка, в которой они изначально находились, не имела изменений.
  750. В desktop-клиенте при открытии диалогового окна выбора из контролов “Ссылка” и “Список”, а также при вызове IUIHost.ShowViewAsync из списка отображаемых представлений скрываются те, которые, хотя и подходят по RefSection, но содержат параметры фильтрации с именами, указанными в маппинге, имеющие несовместимый тип значения. Например, в маппинге для параметра TypeID указано целое число, а в представлении параметр TypeID является уникальным идентификатором. Ранее такие представления отображались, а при их выборе выводилась ошибка.
  751. В конструкторе бизнес-процессов исправлено отображение прогресса во всплывающем окне при открытии шаблонов процессов.
  752. В маппинге контрола “Представление” исправлено объединение нескольких значений одного и того же параметра по логике “ИЛИ”. Ранее добавлялся только последний параметр из списка маппинга.
  753. В desktop-клиенте для контрола “Флажок” исправлено отображение всплывающей подсказки, если контрол доступен только для чтения.
  754. Оптимизировано потребление памяти при создании и проверке токена безопасности KrToken.
  755. Исправлено добавление контекстных ролей в качестве участников топика. При добавлении такой роли в качестве участников добавляются сотрудники, которых возвращает указанная контекстная роль на момент её добавления.
  756. В маршрутах в этапах “Согласование” и “Подписание” исправлена ошибка, из-за которой задание “Запрос комментария” не было доступно заместителям.
  757. В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой задание “Запрос комментария” не было доступно заместителям.
  758. В web-клиенте в форумах (обсуждениях) теперь работает переход по ссылке на цитируемое исходное сообщение в сообщении-ответе.
  759. В web-клиенте исправлена ошибка вычисления положения перекрывающихся элементов интерфейса, приводившая к их некорректному отображению и наложению друг на друга.
  760. Исправлена логика подсветки полей ввода логина и пароля в Tessa Applications при редактировании данных сервера. В случае, если поле “Логин” заполнено, а поле “Пароль” пустое, то подсвечивается только поле “Пароль”, и наоборот, если поле “Пароль” заполнено, а поле “Логин” - нет, то будет подсвечено только поле “Логин”. Если оба поля пустые, подсвечиваться они не будут.
  761. В web-клиенте исправлена ошибка, приводившая к отправке настроек PersonalRolesVirtual.Settings при сохранении карточки пользователя.
  762. Web-клиент теперь не делает запрос к серверу приложений для получения Digest при загрузке карточек в случае, если Digest уже содержится в карточке.
  763. В карточке “Последовательность” таблица “Интервалы” по умолчанию отсортирована по возрастанию начала интервала, а таблица “Зарезервированные номера” по возрастанию зарезервированного номера.
  764. Расширение типов карточек “Сортировка строк” теперь сортирует строки таблиц только для клиентских запросов на загрузку карточки.
  765. В маршрутах в этапе “Диалог” теперь используется заголовок типа карточки в качестве заголовка диалога в случае, если “Отображаемое имя диалога” не задано.
  766. В конструкторе бизнес-процессов в действии “Диалог” теперь используется заголовок типа карточки в качестве заголовка диалога в случае, если “Отображаемое имя диалога” не задано.
  767. Исправлено скрытие окна консоли Deski в Windows при автозапуске и по созданным ярлыкам на рабочем столе и в меню “Пуск”, если консолью по умолчанию выбрано приложение Windows Terminal. Это актуально для Windows 10/11, причём в Windows 11 это поведение по умолчанию.
  768. В web-клиенте исправлена локализация тултипов кнопок тулбара удаленных карточек и карточек шаблонов.
  769. Исправлен сброс кэша контекстных ролей при импорте.
  770. Исправлен сброс кэша карточек настроек при импорте.
  771. В web-клиенте исправлена ошибка, из-за которой для decimal полей могло неправильно устанавливаться значение по умолчанию при создании пакета карточки.
  772. В web-клиенте было исправлено положение заголовков контролов в блоке при активном флаге “Заголовки слева”.
  773. В web-клиенте исправлен порядок вывода патчей в окне “О программе”: патчи теперь отсортированы по дате, как и в desktop-клиенте и странице /check.
  774. В desktop-клиенте исправлена работа группировки по циклу согласования при использовании контрола “Предпросмотр файлов”.
  775. Оптимизирована обработка web-сервисом запросов, проверяющих сессию. Информация по активности сессии обновляется в Redis, а обновление значения в базе данных выполняется реже.
  776. В desktop-клиенте в форумах (обсуждениях) и контроле “Текст с форматированием” исправлено применение стилей к тексту, которое могло приводить к разнице в отображении между desktop- и web-клиентом.
  777. Исправлена работа тайла “Создать несколько карточек” в шаблоне карточек.
  778. В web-клиенте исправлено описание условий в правилах уведомлений сотрудников и правилах доступа.
  779. В desktop-клиенте для контролов “Ссылка” выпадающий список теперь всегда показывается над кнопкой выпадающего списка.
  780. Исправлена обработка ошибок, возникающих при получении карточки с помощью функции INotificationSendContext.GetCardFuncAsync.
  781. Исправлена локализация описания и заголовка топика в форумах (обсуждениях). В базе данных они теперь хранятся в нелокализованном виде.
  782. В web-клиенте в форумах (обсуждениях) исправлено отображение курсора при наведении на вложенное в сообщение изображение.
  783. В web-клиенте в контроле “Текст с форматированием” в режиме редактирования контекстное меню для вложенного файла больше не содержит пункт “Скачать”.
  784. В desktop-клиенте в контроле “Текст с форматированием” кнопки “Редактировать” и “Развернуть” больше не закрывают панель вертикальной прокрутки.
  785. В web-клиенте в форумах (обсуждениях) исправлена ошибка, которая в некоторых случаях приводила к уменьшению размера поля для ввода после отправки сообщения.
  786. В web-клиенте изменено сообщение в уведомлении браузера о ранее открытой вкладке.
  787. В web-клиенте исправлено использование некорректной строки локализации для ключа CardValidationKeys.ErrorOccuredAfterSavingCardWithIncrementedVersion.
  788. В web-клиенте в маршрутах в этапе “Подписание” исправлена ошибка, из-за которой при изменении состояния флага “Не возвращать на доработку” не изменялась видимость элементов управления: “Вернуть при отказе” и “Вернуть после подписания”.
  789. Исправлено вычисление временной зоны для получателей уведомлений в INotificationRoleAggregator. Теперь, в случае незаполненного смещения временной зоны у получателя, будет взято смещение временной зоны по умолчанию.
  790. В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, приводившая к некорректному расчету количества страниц в топике после выхода из режима поиска.
  791. При проверке подписи исправлена ошибка обработки, которая возникала при отсутствии ответа от OCSP-сервиса.
  792. В desktop-клиенте в форумах (обсуждениях) при наведении мышью на системное сообщение больше не отображается тултип со служебной информацией.
  793. В плагине RoleSchedulerPlugin исправлена ошибка, из-за которой он мог на время очистить состав динамических ролей в ситуации, когда при запросе списка динамических ролей возникала ошибка подключения к серверу баз данных.
  794. В desktop-клиенте исправлена ошибка, возникающая при попытке скопировать файл или версию файла в буфер обмена в ситуации, когда содержимое файла недоступно пользователю.
  795. В типизированном сериализаторе json исправлена десериализация типов массивов List<bool> с сохранением типа. Ранее десериализация выполнялась в тип List<object>.
  796. В маршрутах исправлена ошибка, из-за которой нельзя было использовать одинаковые алиасы у элементов управления в разных типах карточек настроек этапов. Пример создания UI обработчика типа этапа в руководстве разработчика.
  797. В web-клиенте в маршрутах исправлена логика пользовательского интерфейса в параметрах этапов: “Диалог”, “Задача” и “Настраиваемое задание”.
  798. В web-клиенте для контрола “Представление” исправлено некорректное отображение скрытых параметров.
  799. В web-клиенте исправлена ошибка, приводившая к тому, что значение маппинг-параметров не отображалось в диалоге фильтрации, если у параметра не было описано “AutocompleInfo” или “DropdownInfo”, но присутствовал “RefSection”.
  800. В web-клиенте исправлена ошибка при создании результатов валидации с помощью метода ValidationResult.fromError. Проблема приводила к созданию объектов, не содержащих информации о переданном объекте с информацией об ошибке.
  801. В desktop-клиенте исправлена работа контрола “Ссылка”. Теперь, если ввести значение, а потом его стереть, то при вызове выпадающего списка, в случае, если ему нечего вернуть, в поле ввода не произойдёт подстановка последнего удалённого символа с пробелом.
  802. В маршрутах исправлена ошибка при первом сохранении карточки, созданной по шаблону, в которой перед этим был вручную пропущен этап.
  803. В маппинге контрола “Представление” исправлено дублирование значений параметра, задаваемого с помощью поля “Алиас параметра CardID”.
  804. Исправлена ситуация, когда плагин мобильного согласования, соединённый с почтовым сервером по протоколу IMAP, мог обрабатывать удалённые письма.
  805. При получении писем мобильного согласования, отправленных с email адресов, для которых отсутствует соответствующий сотрудник в справочнике, теперь логируется ошибка.
  806. В конструкторе бизнес-процессов в скриптах условий кнопок исправлена ошибка, возникающая в ситуации, когда директива #using использовалась на первой строке условия.
  807. В конструкторе бизнес-процессов в скриптах условий кнопок исправлена работоспособность свойства Container.
  808. Исправлен метод FileHelper.AddHtmlIEBrowserCompatibilityMeta, который не выполнял действий по добавлению тега совместимости для браузера, используемого при предпросмотре файлов, когда включён санитайзинг в свойстве ICardModel.IsHtmlSanitizingEnabled = true. По умолчанию санитайзинг отключён.
  809. В web-клиенте исправлена ошибка, из-за которой могла не работать сортировка по первой колонке в таблице.
  810. В TessaAdmin в редакторе представлений исправлена ошибка, которая возникала при попытке перегрузки для представления параметров SelectionMode и Paging.
  811. В desktop-клиенте исправлена ошибка при использовании контрола “Текст с форматированием” в строках таблиц.
  812. В desktop-клиенте исправлена прокрутка вкладок карточек и рабочих мест с использованием колеса мыши и кнопок со стрелками по краям. Ранее прокрутка могла выполняться слишком резко в начало или в конец, минуя вкладки, которые в середине.
  813. Исправлено поведение валидатора “Уникальное поле” при использовании функций “Исправить” и “Исправить всё”. Теперь такой валидатор корректно удаляется из типа, при наличии ошибок в нём.
  814. Исправлена ошибка вызова очистки валидаторов и расширений из неправильного потока при использовании функций “Исправить” и “Исправить всё” на типе, где уже был загружен интерфейс для редактирования/добавления валидаторов.
  815. Исправлена обработка ошибок на сервере при логине.
  816. В маршрутах исправлена ошибка, из-за которой этапам из вложенных процессов устанавливалось неверное состояние. Ошибка воспроизводилась при переходе с текущего этапа назад по маршруту на этап, расположенный перед этапами из вложенных процессов.
  817. В web-клиенте исправлена ошибка “Не удалось обратиться к Deski”, которая могла возникать при объединении и сравнении документов в Word.
  818. Исправлена отписка от событий в RedisEventSubscriber, которая могла не выполняться при вызове метода UnsubscribeAsync, и выполняться для всех каналов, а не только для используемого, при вызове метода DisposeAsync.
  819. Исправлены возможные ошибки при получении карточек настроек из кэша ICardCache вне пользовательской сессии.
  820. Оптимизирована авторизация пользователей при открытии сессии с использованием Redis.
  821. В desktop-приложении исправлена ошибка, которая могла приводить к деактивации текущего диалогового окна после закрытия сплеша, если было открыто несколько диалоговых окон.
  822. В маршрутах исправлено поведение тайла “Вернуть документ на доработку”. Теперь он выполняет переход на начало текущей группы этапов, а не на группу этапов “Согласование”.
  823. В маршрутах исправлена ошибка, из-за которой состояние этапов не устанавливалось равным “Не запущен”, при возврате на доработку с помощью тайла “Вернуть документ на доработку”. Ошибка воспроизводилась для этапов расположенных между началом текущей группы и этапом “Доработка”, на который был выполнен переход после согласования этапа “Согласование” с установленным флагом “Вернуть после согласования”.
  824. В маршрутах в этапе “Управление процессом” исправлена ошибка, из-за которой не начиналось повторное выполнение группы этапов, если при переходе в начало текущей группы этапов не изменялся текущий активный этап. Ошибка воспроизводилась, если этап располагался во вторичном процессе, управлял основным процессом и работал в режиме “Переход в начало текущей группы”.
  825. В маршрутах в этапе “Управление процессом” исправлена ошибка, из-за которой не выполнялся пересчёт группы этапов на которую выполнялся переход. Ошибка воспроизводилась, если этап располагался во вторичном процессе, управлял основным процессом и работал в режиме “Переход на группу” текущего активного этапа.
  826. В маршрутах в этапе “Ветвление” исправлена ошибка при переходе в начало текущей группы этапов. Ошибка воспроизводилась при переходе в начало текущей группы этапов с помощью этапа “Управление процессом”, который был расположен во вторичном процессе и управлял основным процессом.
  827. Исправлен метод Card.RemoveAllButChanged, он по ошибке удалял строки TaskHistory и TaskHistoryGroups, которые имели состояние Modified или Deleted.
  828. В маршрутах исправлена ошибка при сохранении карточек шаблона этапов и вторичного процесса, созданных в результате копирования или создания по шаблону.
  829. В web-клиенте исправлена ошибка, из-за которой не выполнялось автоматическое открытие диалога. Ошибка воспроизводилась, если в карточке было задание, не содержащее параметров диалога.
  830. При сохранении диалога “Мои замещения” исправлено отображение имени объекта в истории действий.
  831. В web-клиенте исправлена ошибка в контролах “Ссылка” и “Список”, из-за которой нажатие Tab не переводило фокус на другой элемент.
  832. В настройках узлов рабочих мест в представлениях исправлена работоспособность маппинга параметров на родительское представление в ситуации, когда в родительском представлении используется режим выделения “Ячейка”, а в настройках маппинга дочернего представления используются только параметры, ссылающиеся на значения родительского представления.
  833. В desktop-клиенте исправлено отображение списка параметров дочернего представления в ситуации, когда в родительском представлении используется режим выделения “Ячейка”, а в настройках маппинга дочернего представления есть параметры, ссылающиеся на значения родительского представления.
  834. Исправлена работа класса CacheableLocalizationService при возврате строк локализации для заданной культуры, ранее в результат могли попасть строки не только запрашиваемой культуры, но и других кэшированных культур. Улучшено использование кэшированной информации.
  835. Исправлена проблема с заполнением даты изменения версии шаблона бизнес-процесса при импорте карточки “Шаблон бизнес-процесса”. Это могло привести к ошибке при компиляции или выполнении скриптов версии шаблона бизнес-процесса в ситуации, когда в импортируемой карточке дата изменения версии процесса была меньше, чем дата изменения версии в базе, а в настройке EnableInterprocessCache из файла конфигурации app.json web-сервера было установлено значение false.
  836. Исправлена ошибка “DROP DATABASE cannot be executed within a pipeline” при удалении базы данных для СУБД PostgreSQL, начиная с поздних патчей Postgres 11 и старше: 11.19, 12.14, 13.10, 14.7, 15.2. Ошибка воспроизводится при выполнении тестов API TESSA, использующих БД, а также команды tadmin DropDatabase и команды tadmin CreateDatabase с ключом -c.
  837. В web-клиенте исправлена ошибка в представлениях и таблицах, из-за которой событие выделения работало неправильно.
  838. В web-клиенте добавлено отображение вертикальных и горизонтальных разделений рабочих мест в соответствии с настройками TessaAdmin.
  839. В web-клиенте исправлена работа TableRowViewModel, не позволяющая управлять выводимыми данными.
  840. В web-клиенте исправлена ошибка с переименованием файла и последующим сохранением карточки, ему присваивалось старое имя.
  841. Актуализированы примеры web-расширений, а также обновлена соответствующая документация.
  842. В web-клиенте исправлена ошибка, приводившая к обнулению дефолтной сортировки по колонкам при переходе между представлениями с добавленной группировкой.
  843. В web-клиенте исправлены ошибки в работе платформы, которые приводили к утечкам памяти.
  844. В web-клиенте изменён способ установки тем приложения. Теперь после смены темы приложение перезагружается (аналогично обновлению вкладки браузера). Это исправило проблемы применения стилей.
  845. В web-клиенте исправлена ошибка, приводившая к обновлению detail-представления при нажатии на уже выделенной строке соответствующего представления.
  846. В web-клиенте исправлена ошибка, из-за которой в контроле “Представление” не учитывалась настройка высоты.
  847. В web-клиенте в карточке “Правило доступа” исправлена ошибка, приводившая к некорректному формированию описания для условий.
  848. Исправлено получение контента файлов на сервере для карточек с типом “Административный”: теперь необязательно иметь административную сессию.
  849. Сертификаты, которые добавлены в доверенные, не будут проверяться на отзыв при подписании или проверке подписи. Также они будут считаться последними в цепочке.
  850. В web-клиенте исправлена ошибка, приводившая к дублированию параметра, заданного в поле “Алиас параметра CardID”.
  851. В web-клиенте исправлена ошибка, приводившая к невозможности открытия карточки типа диалог при добавлении комплексной колонки в виртуальную схему с использованием ссылки на системную таблицу.
  852. В приложении SchemeEditor исправлен фильтр “Все библиотеки” для одной из выбранных схем.
  853. В web-клиенте исправлена ошибка в файловом контроле, из-за которой операция вставки файлов из буфера обмена добавляла файлы с неправильными именами.
  854. При генерации шаблонов файлов убран вывод лишней ошибки “Действие доступно только для администратора” в ситуации, когда при генерации шаблона файла была ошибка его генерации или доступа к шаблону.
  855. Исправлена обработка плейсхолдера info в ситуации, когда в качестве данных для его расчёта использовался список значений. Теперь плейсхолдер корректно обрабатывает списки и может выводить несколько значений через разделитель, задаваемый настройкой форматирования separate by.
  856. В web-клиенте исправлена ошибка, из-за которой в контроле “Обсуждения” не учитывалась настройка “Всегда отображать в полный размер”.
  857. Оптимизировано выполнение представлений с постраничным отображением для PostgreSQL.
  858. В конструкторе представлений оптимизирован выбор из списков для типов и перечислений.
  859. Оптимизирована периодическая очистка удалённых в корзину карточек, а также их отображение в представлении.
  860. Оптимизировано выполнение большинства представлений для PostgreSQL, где для них теперь сразу вызываются запросы SELECT без создания хранимых функций. В метаинформации для них указан флаг TreatAsSingleQuery.
  861. В маршрутах в карточке “Группа этапов” исправлена сортировка в полях: “Роли” и “Типы”.
  862. В web-клиенте исправлена ошибка, приводившая к невозможности закрыть диалоговое окно выбора из представления в полноэкранном режиме.
  863. В web-клиенте, в карточке сотрудника исправлен баг при попытке редактирования поля “Статические роли”.
  864. Оптимизирован запуск плагинов Chronos с настройкой DisallowConcurrency.
  865. Исправлена возможная рассинхронизация списка дочерних процессов плагинов в хост-процессе Chronos, используемых при остановке хоста, если происходит одновременный запуск плагинов с флагом DisallowConcurrency.
  866. В web-клиенте для контрола представления с файловым расширением было изменено поведение предпросмотра файлов. Теперь файлы, которые требуют конвертации, доступны для предпросмотра только после сохранения изменений в карточке.
  867. В web-клиенте убрано предупреждение о некорректном формате даты при добавлении файла в файловый контрол.
  868. В web-клиенте исправлена ошибка с показом цепочки сертификатов для сертификатов с кавычками в названии.
  869. Исправлен резолв именованных и опциональных зависимостей Unity в конструкторах контроллеров.
  870. Исправлена ошибка плейсхолдера {f:... trim}, из-за которой не происходило удаление пробелов в начале и конце значения.
  871. В web-клиенте исправлены избыточные обращения к серверу приложений в случае, если пользовательская сессия истекла.
  872. В web-клиенте исправлена ошибка, из-за которой при копировании карточки до её сохранения не отображались тайлы бизнес-процессов и вторичных процессов.
  873. В TessaAdmin в редакторе представлений изменён контрол для ввода описания, а также добавлен автоматический перенос слов на новую строку.
  874. В web-клиенте исправлена ошибка, приводившая к некорректному отображению текстовых файлов в кодировке “windows-1251” в режиме предпросмотра.
  875. Исправлена конвертация в PDF посредством LibreOffice после выполнения процесса обслуживания в плагине FileConverterPlugin. Период обслуживания определён в настройке FileConverter.MaintenancePeriod в app.json Chronos, по умолчанию через час после запуска плагина, и далее каждый час.
  876. Исправлена обработка временных зон при добавлении в почтовое уведомление файла, созданного по шаблону. Формирование файла происходит в контексте сессии получателя с использованием информации о настроенных для сотрудника календаре и смещении временной зоны.
  877. В web-клиенте исправлена ошибка, приводившая к отсутствию отображения области предпросмотра для файловых контролов с незаданным алиасом.
  878. В web-клиенте исправлен баг с отображением верхней панели в окне просмотра структуры карточек.
  879. В web-клиенте исправлено отображение колонок в представлениях, в метаинформации которых указаны одновременно и локализация (флаг Localizable), и ограничение на длину (поле MaxLength). Например, в колонке “Результат” представления “Завершённые мной”.
  880. В TessaAdmin исправлена возможная ошибка Index was outside the bounds of the array при отладке представления для СУБД PostgreSQL.
  881. В web-клиенте исправлен показ информации об отзыве сертификатов.
  882. Оптимизированы активные операции, сообщающие прогресс своей выполнения (проценты). Теперь прогресс операций сохраняется в Redis.
  883. Исправлена ошибка, из-за которой при нажатии кнопки отмены или кнопки закрытия в диалоге с временем жизни “Задание” оставались добавленные, но не сохраненные файлы.
  884. В методе CardStreamGetStrategy.GetFileContentAsync исправлена ошибка, из-за которой возвращаемая функция getContentFuncAsync не выбрасывала исключение, если при получении контента файла произошла ошибка.
  885. В Tessa Applications оптимизировано скачивание приложений и проверка наличия файлов в кэше при обновлении.
  886. В Tessa Applications при обновлении приложений прогресс-бар отображается сразу же при клике по приложению, которое нуждается в обновлении, а заполняться начинает после анализа файлов в кэше, которые не требуется скачивать.
  887. В API тестов в методе TestBase.GetNextRandomFixtureNameAsync исправлена ошибка, из-за которой не учитывались значения параметров в параметризованных классах с тестами.
  888. В web-клиенте в форумах (обсуждениях) исправлена возможная ошибка, из-за которой при открытии топика не происходил автоматический скролл до последнего сообщения.
  889. В web-клиенте исправлена ошибка master-detail представлений, позволяющая добавлять новую строку при отсутствии выбранной строки в родительском представлении.
  890. В маршрутах и конструкторе бизнес-процессов в этапе “Задача” и действии “Исполнение задачи” исправлена ошибка, из-за которой не учитывалось переназначенное задание при определении условия завершения этапа процесса.
  891. В маршрутах в этапе “Ветвление” исправлена ошибка, из-за которой не выполнялась локализация имени этапа из вторичного процесса в карточке документа в таблице “Этапы маршрута”.
  892. В web-клиенте устранена проблема, приводящая к циклической выдаче ошибки, при потере соединения с сервером, после попытки перейти на другую страницу представления.
  893. Оптимизировано получение первой доступной для взятия в работу операции посредством метода IOperationRepository.StartFirstAsync. Информация о таких операциях теперь содержится в Redis, что снижает нагрузку на СУБД.
  894. В API тестов исправлена генерация имён ITestNameResolver.GetFixtureNameAsync, которая редко могла приводить к ошибке DecoderFallbackException.
  895. Исправлена работа расширения AutomaticNodeRefreshExtension по автоматическому обновлению узла рабочего места. Ранее расширение работало с интервалом времени вдвое больше заданного.
  896. В Tessa Applications исправлена ошибка, приводившая к незакрытым сессиям на сервере приложений.
  897. В API тестов исправлена ошибка, из-за которой в клиентских тестах, выполняемых на специально подготовленном сервере приложений, неправильно вычислялся код сервера приложений.
  898. В web-клиенте исправлена ошибка, приводившая к некорректному отображению имени текстового файла для структуры у вновь созданной несохраненной карточки.
  899. В web-клиенте исправлена ошибка копирования файлов из карточек заданий в основную карточку: при сохранении карточки скопированный файл исчезал из категории “Файлы карточки” и возвращался в свою предыдущую категорию без последующего добавления в основную карточку.
  900. При возникновении ошибок в процессе сохранения карточки из-за некорректного типа объекта в методе CardMetadataHelper.CoerceBeforeSaving теперь выводится подробная информация о секции, поле и значении, которое не удалось преобразовать.
  901. В методах ICardRepository и ICardStreamServerRepository для объектов, выполняемых без расширений, необработанные исключения (кроме OperationCanceledException) теперь всегда добавляются в response.ValidationResult, как и для объектов с расширениями. Ранее такие исключения выбрасывались наружу методов.
  902. В моих настройках больше не отображается вкладка “История заданий” в случае, если для карточки сотрудника была разрешена отправка заданий.
  903. В TessaClient исправлена возможная ошибка NRE при попытке изменения свойства IsReadOnly у контрола представления с расширением “Таблица в представлении” (CardViewControlViewModel) из расширения CardUIExtension.
  904. Исправлено отображение параметров при экспорте данных из представления в HTML.
  905. Отмена клиентского запроса на экспорт данных из представления теперь корректно отменяет генерацию файла с данными на сервере приложений.
  906. В web-клиенте исправлено некорректное поведение при перемещении выделенного текста в поля карточки, если в карточке имеется файловый контрол.
  907. Исправлена ошибка преобразования форматов при сохрании карточки, которая могла происходить если в строковое поле ввести значение даты в формате yyyy-MM-ddThh:mm:ss.sssZ.
  908. В web-клиенте исправлена ошибка, приводившая к отсутствию диалогового окна выбора категорий при создании файлов в файловых контролах и контролах представлений, использующих категории.
  909. В desktop-клиенте исправлено возможное зависание автообновления представления при использовании расширения AutomaticNodeRefreshExtension.
  910. В TessaAdmin и SchemeEditor исправлена ошибка при удалении физической колонки из комплексной.
  911. Оптимизирована работа фоновых задач, связанных с обсуждениями, получением уведомлений по новым заданиям и автоматическому обновлению представлений. Теперь, если время жизни сессии истекло, не будет постоянных фоновых обращений к серверу. Также указанные фоновые задачи не будут открывать отдельные сессии (тип приложения “Tessa Client - уведомления”) и обновлять даты последних активностей по ним, что снижает нагрузку на сервер. Пример создания подобных расширений можно найти в руководстве разработчика в разделе Создание фоновой задачи в расширениях толстого клиента.
  912. В web-клиенте обновлены некорректно работающие хоткеи, которые перехватывались браузером и приложениями видеодрайверов, для следующих операций: создание шаблонов в карточках - Ctrl+Alt+T, поставить задачу - Ctrl+Alt+R, восстановление карточки из удаленных - Ctrl+Alt+Z.
  913. Для desktop-клиента исправлена установка имени AutomationName, используемого в Microsoft UI Automation, для дочернего диалового окна, открываемого при создании или редактировании строки CardRowFormViewModel в контроле “Таблица” и “Представление” с расширением “Таблица в представлении”.
  914. Исправлена ошибка, когда при замене плейсхолдеров для текстовых документов (.txt, .xml, .html) при замене строковых плейсхолдеров не выполнялись скрипты “Перед заменой плейсхолдера” и “После замены плейсхолдера”, а также не выполнялись методы BeforePlaceholderReplace и AfterPlaceholderReplace расширений IPlaceholderReplaceExtension.
  915. В web-клиенте для элемента управления “Ссылка с автодополнением” была исправлена ошибка, приводившая к неккоректному вводу при включенном ручном вводе.
  916. Исправлена ошибка, из-за которой для зарегистрированной карточки выделение нового номера пунктом меню в контроле “Нумератор” происходило из проектной последовательности.
  917. Исправлена обработка context.Info в уведомлениях. Теперь данные, записанные в context.Info из тела уведомления, не исчезают к моменту выполнения кода шаблона уведомления.
  918. В web-клиенте для кнопок тулбара карточек исправлена ошибка применения свойств foregroundColor и backgroundHoverColor.
  919. В web-клиенте исправлена ошибка, из-за которой скрытые вкладки карточки могли оставаться видимыми даже после обновления карточки.
  920. В диалоге “Мои настройки” исправлено скрытие вкладки “Мои настройки” в случае, если в типе карточки сотрудника скрыта основная вкладка.
  921. В web-клиенте в области предпросмотра карточек удалено контекстное меню “Cвернуть/Развернуть все блоки”: теперь при нажатии на правую кнопку мыши появляется дефолтное контекстное меню браузера.
  922. В web-клиенте исправлено положение диалоговых окон с ошибками. Теперь они всегда располагаются поверх других диалогов.
  923. В desktop-клиенте в контроле “Текст с форматированием” исправлена ошибка, возникающая при включении нумерованного и ненумерованного списка в ситуации, когда список создаётся в блоке.
  924. В web-клиенте исправлено поведение расширения AutomaticNodeRefreshExtension при использовании в нескольких узлах одновременно.
  925. Исправлена ошибка, из-за которой в представлениях при выводе суммы обрезалась десятичная часть. Ошибка возникала при использовании СУБД MS SQL Server и SQL-функции платформы FormatAmount для форматирования выводимого значения.
  926. В tadmin чтение аргументов команды выполняется независимо от языка и региональных параметров. Актуально, например, когда в качестве аргументов команды используются числа с плавающей точкой. Используйте единый разделитель . для таких значений.
  927. Исправлена ошибка при обращении к строкам табличной секции карточки из серверного расширения CardGetExtension метода AfterRequestFinally в случае, если для запроса указано сжатие CardGetRequest.CompressionMode.
  928. Оптимизировано кэширование шаблонов файлов на сервере в части определения настроек и проверок доступа. Реализован кэш настроек по шаблонам из БД в памяти сервера, и его автоматический сброс при изменении карточек шаблонов.
  929. Исправлена ошибка при работе со службой каталогов NetIQ eDirectory, приводившая к невозможности аутентификации через учетную запись LDAP.
  930. В модуле синхронизации с AD/LDAP исправлена ошибка синхронизации со службой каталогов NetIQ eDirectory.
  931. Оптимизировано вычисление хеш-сумм посредством объектов ISignatureProvider.
  932. В web-клиенте исправлено отображение измененного имени файла при его открытии на редактирование и при открытии в диалоговом окне предпросмотра.
  933. В web-клиенте исправлена работа пунктов “Обьединить с текущим в Word” и “Сравнить в Word” контекстного меню файла при использовании отредактированных файлов.
  934. В desktop-клиенте для элемента управления “Текст с форматированием” в диалоге сохранения прикрепленного файла исправлен фильтр.
  935. Исправлена ошибка при работе с универсальными сателлитами, когда тип сателлита не имел обработчика и не использовал флаг IgnoreStoreExtensions.
  936. Оптимизирован импорт библиотек локализации.
  937. В desktop-клиенте исправлено вычисление видимости вложенных тайлов в тайле правого меню “Создать карточку”.
  938. Оптимизирован импорт библиотек локализации командой tadmin ImportLocalization.
  939. Исправлена ошибка при конвертации файлов с использованием API IFileConverter, из-за которой некорректно определялась возможность конвертации файла, если не было задано ограничений в поддерживаемых типах конвертируемых файлов.
  940. Исправлена ошибка создания нового сотрудника, возникающая, если в настройках нового сотрудника заданы настройки уведомлений.
  941. Исправлено отображение ошибок в логах на Linux при конвертации файлов в PDF через unoconv (например, для предпросмотра в web-клиенте).
  942. Оптимизирована конвертация файлов в PDF через unoconv (например, для предпросмотра в web-клиенте).
  943. Для Tessa Applications исправлено редактирование основного сервера, при котором логин/пароль одного пользователя заменяется на другого, в настройках которого задан иной язык интерфейса. Например, у исходного пользователя - русский язык, а у заменяемого - английский язык.
  944. Исправлена десериализация типизированных json, содержащих массивы с пустыми элементами.
  945. Исправлена ошибка, из-за которой состояние блоков и контролов, располагаемых внутри контрола “Вкладки” или “Контейнер”, некорректно восстанавливалось при обновлении карточки.
  946. В отладке представлений TessaAdmin исправлена сортировка в таблице с результатами, которая не изменялась после выполнения представления с другими настройками сортировки.
  947. В отладке представлений TessaAdmin размер страницы по умолчанию теперь определяется из свойства метаинформации PageLimit. Ранее он всегда задавался как 20.
  948. Исправлена ситуация, когда при завершении задания с диалогом возникала ошибка, например, серверная валидация завершения задания, то после закрытия диалога задания следующее сохранение карточки приводило к открытию этого диалога.
  949. В web-клиенте исправлена ошибка, из-за которой в контроле “Список” не учитывался порядок popup-элементов.
  950. Исправлено название метода businessCalendarService.calendarAddWorkingDaysToDateExact в API web-клиента.
  951. В desktop-клиенте в контроле “Представление” исправлена ошибка, из-за которой при наличии включённой группировки по одной из колонок, если какая-либо свёрнутая группа уходила из области видимости контрола, а потом возвращалась в неё, эта группа разворачивалась.
  952. Исправлена ошибка, из-за которой при завершении обработки мобильного согласования путём остановки сервиса Chronos обработка письма прерывалась, но обрабатываемое письмо всё равно могло быть удалено.
  953. В web-клиенте исправлена ошибка, приводившая к некорректной работе расширения AutomaticNodeRefreshExtension при использовании на верхнем уровне - применительно к рабочему месту, содержащему все узлы во вкладке.
  954. В TessaAdmin в разделе “Локализация” в диалоге редактирования локализованной строки снято ограничение на длину локализованного значения.
  955. Рабочая директория приложения-помощника web-клиента Deski на устройствах с Windows теперь располагается по пути %LocalAppData%\tessa\deski\.deski_data независимо от папки, в которую выполняется установка, если директория не была указана при запуске deski.exe с помощью параметра командной строки -dir.
  956. В desktop-клиенте исправлено поведение при сортировке имен файлов в файловых контролах и представлениях. Теперь в обоих случаях сортировка имен файлов зависит от текущего выбранного языка пользователя.
  957. При установке Deski через msi-инсталлятор теперь очищается папка .deski_data от предыдущей инсталляции, что предотвращает потенциальные проблемы при обновлении.
  958. В desktop-клиенте в контроле “Текст с форматированием” исправлена ошибка вставки текста, содержащего несколько вложенных блоков.
  959. В desktop-клиенте в контроле “Текст с форматированием” исправлена ошибка, из-за которой при вставке блоков, скопированных через кнопку “Копировать сообщение”, у них появлялся лишний отступ.
  960. Вызов обработчиков TransactionScopeContext выполняется в порядке, обратном добавлению.
  961. В web-клиенте в форумах (обсуждениях) для участников обсуждения исправлена видимость кнопок “Подписаться” и “Выйти из участников” в ленте сообщений.
  962. Исправлена логика обработки ошибок, которые могут возникать при парсинге содержимого контрола “Текст с форматированием”.
  963. В маршрутах и конструкторе бизнес-процессов в этапах и действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой при запросе дополнительных согласований, начиная со второго уровня вложенности, не выполнялась проверка полей: “Исполнители”, “Длительность, рабочие дни” и “Комментарий”.
  964. В web-клиенте исправлена ошибка, из-за которой настройка “Предпросмотр файлов посредством Р7-Офис / OnlyOffice” не применялась для контролов “Обсуждения” и “Предпросмотр файлов”.
  965. Для СУБД PostgreSQL исправлена ошибка, приводившая к потере нескольких часов от результата функции CalendarAddWorkingDaysToDateExact, а также возможная некорректная работа функций CalendarGetFirstQuantStart и CalendarGetLastQuantEnd в случаях, когда рабочие интервалы календаря граничат с полночью.
  966. В расширении типа карточки “Очистка связанных полей” исправлено сообщение об ошибке, которое возникало при попытке открыть редактор выбора очищаемой колонки, не выбрав перед этим отслеживаемую колонку.
  967. При открытии карточки теперь загружают данные только контролы “Представление”, видимые пользователю, т.е. находящиеся на текущей вкладке карточки.
  968. При создании нового параметра представления теперь по умолчанию проставляется флаг Multiple.
  969. Исправлена ошибка переноса содержимого прикрепленных к карточке файлов, которая могла возникать при копировании карточки с файлами.
  970. В web-клиенте в контроле “Таблица” исправлена ошибка, приводившая к некорректной сортировке по числовым значениям.
  971. В desktop-клиенте в контроле “Текст с форматированием” исправлена ошибка, возникающая при попытке добавления блоков в текст, если к отдельным частям выделенного текста применены разные настройки форматирования.
  972. В web-клиенте исправлена ошибка с выбором сертификата при наличии нескольких сертификатов с одинаковым именем.
  973. При формировании подписи уровня XLT1 необходимые сертификаты для подписанта и метки времени вставляются в пакет подписи независимо.
  974. Исправлена ошибка, когда файлы, добавленные в диалоге со временем жизни диалога “Задание”, сохранялись в основной карточке, а не в диалоге.
  975. В редакторе схемы данных исправлена ошибка, возникающая при попытке задать пустое значение для записи таблицы с типом “Перечисление” в ячейке, допускающей значение null.
  976. Оптимизирован импорт карточек при установке системы скриптами Setup.bat/setup.sh.
  977. Оптимизировано подписание больших файлов.
  978. В web-клиенте для диалогового окна “Этапы маршрута” добавлен заголовок, описывающий тип текущего этапа.
  979. Исправление появление в логах ошибки Couldn't unsubscribe from Redis channel по причине Cannot access a disposed object. Это не влияло на валидность закрытия соединения.
  980. При экспорте представлений, рабочих мест и библиотек карточек файлы записываются в кодировке UTF-8 с BOM, как и для других объектов конфигурации. Ранее использовалась кодировка UTF-8 без BOM.
  981. Исправлено некорректное отображение значений имени ссылочных колонок и их типов данных, когда соответствующие значения менялись у ссылаемой колонки.
  982. Исправлено возможное подвисание плагина асинхронной обработки процессов WorkflowEngineAsyncPlugin в ситуации, когда процесс создавал асинхронную задачу, например, при обработке асинхронной связи между узлами, а затем продолжал выполнение других синхронных узлов.
  983. Исправлена проблема сохранения ошибок в экземпляре процесса при завершении обработки процесса Workflow Engine с ошибкой.
  984. Исправлены возможные ошибки получения доверенных сертификатов из карточки настроек при проверке электронной подписи.
  985. Исправлено дублирование номеров в последовательности в случае возникновения ошибок после завершения транзакции при первом сохранении карточки.
  986. В маршрутах и конструкторе бизнес-процессов исправлена ошибка, из-за которой в задании “Доработка” не сохранялся комментарий к новому циклу согласования, если к карточке был приложен несохранённый файл.
  987. Для СУБД PostgreSQL исправлено выполнение представлений внутри транзакции, если при создании хранимой функции для представления произошла ошибка в SQL.
  988. В web-клиенте исправлен показ подписей для версий файла.
  989. При запуске TessaAdmin теперь не выполняется загрузка содержимого всех неактивных вкладок.
  990. Исправлена ошибка, которая могла возникать при чтении строковых объектов в pdf-файле с помощью метода PdfSharp.PdfReader.Open, если строка имела кодировку Unicode. Актуально для модуля потокового сканирования при использовании конвертера PdfToBmpConverter.
  991. Оптимизирована загрузка схемы на клиент. Актуально для TessaAdmin и консольных команд импорта/экспорта схемы.
  992. Исправлено расширение KrSecondaryProcessMetadataExtension, благодаря чему из шаблона больше не добавляются уже имеющиеся в типе секции и колонки, что ранее приводило к тому, что в метаинформации типа появлялись дублированные элементы.
  993. В web-клиенте исправлена ошибка, приводившая к некорректной работе ссылочных контролов при активированных настройках ручного ввода и задержки поиска: после окончания ввода и мгновенном нажатии на клавишу Enter значение контрола менялось на предыдущее.
  994. Исправлена невозможность удалить из корзины карточку, у которой в базе не заполнено поле Deleted.Card. Такое могло происходить, если при миграции карточек с бинарного формата на формат JSON не производилась миграция для карточек в корзине.
  995. В web-клиенте исправлена ошибка, приводившая к некорректной работе ссылочных контролов с активированной настройкой ручного ввода: при использовании медленного интернет-соединения после окончания ввода и мгновенном нажатии на клавишу Enter значение контрола менялось на значение из предыдущего запроса.
  996. В desktop-клиенте исправлена работа горизонтальной прокрутки при использовании тачпадов или иных устройств, поддерживающих горизонтальную прокрутку.
  997. В web-клиенте исправлен диалог указания категории при добавлении файлов. В контролах “Список файлов” и “Представление” с расширением “Список файлов в представлении”, для которых указаны флаги “Использовать категории” и “Запретить файлы без категорий”, и не указан флаг “Запретить добавлять категории вручную”, заблокирована кнопка ввода пустой категории, которая была аналогична выбору “Без категории” в списке.
  998. У объекта подключения к базе данных DbManager исправлена версия конструктора, использующая подключение DbConnection в качестве параметра. Теперь передаваемое подключение к базе корректно завершает работу/возвращается в пул подключений при вызове метода DisposeAsync у DbManager. Проблема была актуальна только в тестах и консольных операциях, использующих подключение к базе данных напрямую.
  999. В desktop-клиенте исправлено обновление представлений по F5 или тайлу “Обновить”. Теперь всегда обновляется и узел дерева, и таблица.
  1000. Из таблицы KrStages удалён избыточный индекс ndx_KrStages_RowID.
  1001. Исправлены проблемы при расчёте доступа к файлам по правилам доступа.
  1002. В desktop-клиенте исправлена позиция открытия контекстного меню элементов управления “Список”, “Ссылка” и “Строка” с типом строки “Расширенный”.
  1003. Исправлено формирование карточек ошибок из плагина конвертации файлов. Теперь дополнительное описание корректно формируется для карточек ошибок.
  1004. В маршрутах исправлена ошибка “An item with the same key has already been added.” при получении сателлита основного процесса с помощью метода IKrScope.GetKrSatelliteAsync.
  1005. В API тестов в методе PendingAction.SetInfo исправлена ошибка при задании значения null, из-за которой старое значение свойства PendingAction.Info не удалялось.
  1006. В маршрутах исправлена ошибка, из-за которой при задании нового значения свойству Stage.SettingsStorage свойства Stage.Settings и Stage.Author возвращали неактуальные значения.
  1007. В маршрутах исправлена ошибка, из-за которой неправильно определялось положение SQL исполнителей этапов при задании роли “SQL исполнители”.
  1008. В маршрутах исправлена ошибка, из-за которой после копирования карточки документа, содержащей маршрут, после пересчёта маршрута этапы изменяли своё положение. Ошибка воспроизводилась, если после копирования карточка не была сохранена.
  1009. В маршрутах исправлена ошибка, из-за которой не восстанавливался изменённый пользователем порядок этапов, заданный в шаблоне этапов, после снятия флага “Можно перемещать”.
  1010. В маршрутах исправлена ошибка, из-за которой при установке флага “Все этапы нередактируемые” в группе этапов изменённые параметры и/или положение этапов не восстанавливались в соответствии с шаблоном этапов.
  1011. Исправлена ошибка при параллельном обращении к свойствам, возвращающим dynamic-обёртку над Storage-хранилищем в объектах: Card, CardInfoStorageObject, ConfigurationObject, InfoStorageObject, ValidationInfoStorageObject, WorkflowEngineSignal и WorkflowStorageBase.
  1012. Оптимизирована отправка заданий на контекстную роль.
  1013. В таблице DocumentCommonInfo удалён избыточный индекс по колонке PartnerName.
  1014. Из типов заданий “Дополнительное согласование” и “Комментирование” удалено поле, хранящее роль, на которую было назначено родительское задание. Информация обо всех ролях, на которые назначено родительское задание, может быть получена из него напрямую, т.к. в случае создания заданий “Дополнительное согласование” и “Комментирование” - родительское задание не завершается.
  1015. Оптимизированы настройки для временных баз данных, создаваемых для автотестов, при использовании с СУБД MS SQL Server.
  1016. В TessaClient исправлены внутренние отступы в кнопках на тулбаре.
  1017. В редакторе виртуальных схем для комплексной колонки больше не доступны таблицы, которые используются для типов “Файлы” и “Задания”.
  1018. В desktop-клиенте исправлен отступ, отображаемый у флажков для списка “Ссылочные колонки” в редакторе виртуальной схемы и для контрола карточки “Представление” с расширением “Таблица в представлении” и указанной настройкой “Колонка флажка”.
  1019. Оптимизировано отображение списка представлений в TessaAdmin.
  1020. Исправлена ошибка на рабочих местах, из-за которой, при переходе в узел со связкой master-detail представлений, не отображались колонки detail-представления, если в master-представлении не было автоматического выделения первой строки или данных в самом представлении.
  1021. В web-клиенте исправлена ошибка в карточке “Сотрудник”, возникающая при изменении значения контрола “Тип входа в систему” при включенном автозаполнении задействованных полей.
  1022. Исправлена загрузка карточки сателлита сотрудника при первом входе в систему. Это могло проявляться в некорректном автоматическом определении языка и настроек форматирования в web-клиенте.
  1023. Доработан кэш бизнес-процессов. Добавлен глобальный кэш, обеспечивающий сброс текущего кэша с объектами версий бизнес-процессов, а также других экземпляров кэша, которые могут располагаться в других процессах.
  1024. При создании карточки группы маршрутов больше не отправляется избыточный запрос на получение шаблонов.
  1025. Исправлена ситуация, когда инвалидация глобального кэша при использовании Redis могла выполняться параллельно в другом потоке с небольшой задержкой, из-за чего последовательное чтение из кэша сразу после инвалидации могло вернуть предыдущее значение.
  1026. Исправлена ошибка “The statement terminated. The maximum recursion 100 has been exhausted before statement completion.” при завершении задания “Задача”. Ошибка воспроизводилась при использовании СУБД MS SQL Server, когда в истории заданий уровень вложенности записи по завершаемому заданию превышал 100.
  1027. В API тестов в PersonalRoleBuilder исправлено получение и задание временной зоны.
  1028. Исправлена обработка файлов формата tif/tiff в ходе потокового сканирования. Метод сжатия tiff-изображений изменён с JBIG на DEFLATE.
  1029. Исправлено открытие карточек в диалоге посредством IAdvancedCardDialogManager с указанным свойством ShowCardOptions.ShowOnlyFirstTab. Теперь вкладки не появляются в диалоге после рефреша или сохранения открытой карточки. В web-клиенте это класс advancedCardDialogManager и свойство DialogOptions.showOnlyFirstTab соответственно.
  1030. Исправлено расширение представлений OpenInModalDialogOnDoubleClickExtension, которое не учитывало указание в запросе на открытие карточки её типа, полученного из свойств CardType или CardTypeColumn в референсе представления, связанного с двойным кликом по строке (первый референс, для которого включены флажки IsCard и OpenOnDoubleClick). Это актуально для представлений с виртуальными карточками, которые не могут корректно открываться без задания типа карточки.
  1031. Для расширения представлений OpenInModalDialogOnDoubleClickExtension исправлена настройка “Открыть первую вкладку без заголовка”. Теперь при её использовании вкладки не появляются после рефреша или сохранения открытой карточки.
  1032. В web-клиенте исправлено скрытие контролов заданий по настройкам доступа для заданий.
  1033. В web-клиенте для пользователя без прав администратора возвращена возможность добавить к рабочему месту сохраненный запрос из категории “Общие запросы”.
  1034. В web-клиенте в карточках исправлено отображение блоков при включённом расположении блоков с настройкой высоты блоков.
  1035. В web-клиенте исправлено растягивание некоторых контролов внутри блоков с включённой настройкой “Растягивать по вертикали” у блоков.
  1036. В web-клиенте исправлено отображение предупреждения об отсутствии лицензии на модуль “Форумы и обсуждения” в карточках настроек “Тип документа” и “Типовое решение”.
  1037. Оптимизировано перечисление пустых объектов ListStorage<T> и DictionaryStorage<TKey, TValue>.
  1038. В web-клиенте исправлена ошибка, из-за которой контрол “Десятичное число” мог некорректно валидировать значение.
  1039. При загрузке конфигурационных файлов extensions.xml пространство имён xmlns теперь игнорируется.
  1040. Исправлена ошибка, из-за которой в контроле “Список файлов” во всплывающей на файле подсказке могла отображаться некорректная информация о дате и времени его изменения.
  1041. В команде tadmin ImportUsers исправлен импорт из файла csv, если не указан файл с подразделениями в параметре -sd.
  1042. В команде tadmin ImportUsers исправлен импорт сотрудников с типом входа “Пользователь LDAP”.
  1043. В TessaAdmin на вкладке “Карточки” при сбросе фильтра теперь сохраняется выделение на типе или группе типов.
  1044. В TessaAdmin исправлена доступность кнопок обновления и сохранения типов, когда предыдущий запрос ещё выполняется. Предотвращена возможность повторного нажатия на кнопки.
  1045. В TessaAdmin исправлен предпросмотр с расширениями для типа карточки PersonalRole.
  1046. В TessaAdmin добавлена локализация подсказки для поля “Имя ссылки” в диалоге по настройке маппинга представления с типом поля “Ссылка”.
  1047. Исправлен алгоритм установки временной зоны из родительского подразделения при сохранении карточки сотрудника с установленным флагом “Наследовать временную зону”.
  1048. В web-клиенте исправлена ошибка, из-за которой в карточке в контроле “Таблица” невозможно было осуществить переход на страницу, с которой был начат поиск по таблице. Также теперь после сброса фильтра происходит возврат на ту страницу, с которой был начат поиск.
  1049. В web-клиенте исправлена проверка на возможность ручного ввода в контролах с автокомплитом. Ранее отображалась ошибка в консоли браузера при попытке закрыть выпадающий список без выбора элемента.
  1050. В web-клиенте исправлена множественная отправка одного сообщения при использовании комбинации клавиш Ctrl+Enter.
  1051. В web-клиенте исправлено обновление представления после удаления операций из представления “Активные операции”.
  1052. В web-клиенте исправлен доступ к полю “Временная зона” в карточке типа “Статическая роль”, если установлен флаг “Наследовать временную зону”.
  1053. Предотвращено создание карточек ошибок при выполнении представления, если при исполнении его SQL-запроса произошла асинхронная отмена (например, пользователь закрыл вкладку браузера). Проблема воспроизводилась при использовании СУБД MS SQL Server.
  1054. Исправлена ошибка InvalidCastException при входе в систему, если у пользователя имеются поисковые запросы, мигрированные с предыдущих версий системы, у которых в колонке SearchQueries.TemplateCompositionID указано значение NULL.
  1055. В представлениях исправлена работа фильтров “Содержит”, “Начинается с” и “Оканчивается на” при использовании символов \, %, [, ] и _.
  1056. В представлениях фильтры “Равен” и “Не равен” теперь не учитывают регистр при использовании СУБД PostgreSQL.
  1057. В карточке “Временные зоны” исправлено вычисление значения смещения OffsetTime для записи в БД, если смещение отрицательное.
  1058. В web-клиенте исправлена локализация настроек в таблице “Этапы маршрута” для этапа маршрута “Создать файл по шаблону”.
  1059. В web-клиенте в маршрутах исправлена ошибка, из-за которой в параметрах этапов не работала ссылка “Добавить роль “Вычисляемые исполнители”. Ошибка воспроизводилась при настройке параметров этапов в карточке “Вторичный процесс”.
  1060. В desktop-клиенте исправлена работа горячих клавиш для глобальных кнопок шаблонов бизнес-процессов.
  1061. В desktop-клиенте исправлена ошибка, из-за которой можно было сохранить поисковый запрос без указания имени.
  1062. В web-клиенте в узлах дерева рабочего места исправлена проблема, из-за которой открытое контекстное меню узла дерева не прокручивалось вместе с объектом при прокрутке дерева.
  1063. В web-клиенте исправлена проблема, из-за которой контекстное меню не закрывалось при закрытии вкладки карточки или рабочего места с помощью средней кнопки мыши.
  1064. В web-клиенте в контроле “Текст с форматированием” исправлена проблема, из-за которой открытое контекстное меню файла или внешней ссылки, добавленной в контрол, не прокручивалось вместе с объектом при прокрутке дерева.
  1065. В маршрутах и в конструкторе бизнес-процессов в диалогах с временем жизни “Запрос” или “Задание” исправлена ошибка, из-за которой не устанавливался размер добавленного в карточку диалога файла.
  1066. В API тестов исправлено завершение диалога, созданного этапом или действием “Диалог”, с помощью метода KrTestHelper.CompleteDialogAsync.
  1067. В маршрутах и в конструкторе бизнес-процессов в диалогах с временем жизни “Задание” исправлена ошибка, из-за которой не сохранялись изменения в файле из карточки диалога, если в сценарии не было получения файлового контейнера карточки диалога.
  1068. В маршрутах в этапе “Диалог” исправлена ошибка при завершении диалога с временем жизни “Карточка”. Ошибка воспроизводилась, если в карточку диалога был добавлен файл и в сценарии сохранения запрашивался объект карточки диалога.
  1069. В маршрутах в этапе “Диалог” исправлена ошибка, из-за которой в диалоге с временем жизни “Карточка” не выполнялся сценарий сохранения при завершении диалога без изменений.
  1070. В маршрутах и в конструкторе бизнес-процессов в диалогах с временем жизни “Задание” исправлена ошибка, из-за которой контент файлов не сохранялся в файловом сателлите. Ошибка затрагивала файлы, добавленные в диалог из шаблона, использованного для его создания.
  1071. В маршрутах и в конструкторе бизнес-процессов в диалоге с временем жизни “Задание” исправлена ошибка, из-за которой в сохранённых файлах карточки диалога оставались установленными флаги (CardFile.Flags).
  1072. В маршрутах в этапе “Диалог” исправлена ошибка при инициализации диалога с временем жизни “Задание” и “Карточка”, содержащем файлы.
  1073. В конструкторе бизнес-процессов в диалогах теперь выводится понятное сообщение об ошибке при получении карточки диалога в сценарии инициализации. Ошибка воспроизводилась, если в параметрах действия был задан несуществующий шаблон карточки. Ранее выводилась низкоуровневая ошибка “Тип карточки неизвестен или не задан”.
  1074. В API серверных тестов исправлена ошибка, из-за которой изменение объекта сохраняемой карточки в расширениях на сохранение влияло на работу тестов. Теперь в серверных тестах сохраняется копия карточки CardLifecycleCompanion<T>.Card.
  1075. В desktop-клиенте исправлена ошибка, из-за которой в представлении строка группы обрезалась при наличии горизонтальной прокрутки.
  1076. В desktop-клиенте исправлены утечки памяти, связанные с использованием иконок (объекты PathGeometry в WPF).
  1077. В desktop-клиенте исправлена ошибка, из-за которой в контроле “Представление” не отображались ошибки.
  1078. Исправлена логика сохранения настроек представления в рабочем месте и расчёт видимости пункта контекстного меню “Сохранить настройки”, вызываемого при нажатии на заголовок колонки в представлении на рабочем месте.
  1079. Исправлена ошибка, из-за которой после сброса настроек пользователя через карточку сотрудника или диалог “Мои настройки” и последующего их изменения некоторые настройки необходимо было устанавливать несколько раз для того, чтобы они корректно сохранились.
  1080. В desktop-клиенте исправлена ошибка, из-за которой настройки представления на рабочем месте перезаписывались при первом открытии представления, если в нём была задана группировка.
  1081. В TessaAdmin исправлена ситуация, когда кнопки обновления и сохранения могли быть недоступными сразу после переключения на вкладку “Схема”.
  1082. В web-клиенте в контроле “Текст с форматированием” исправлена ошибка, которая могла возникать при вставке картинки с помощью drag&drop.
  1083. В TessaAdmin в редакторе представлений исправлен баг, из-за которого после перехода в режим редактирования JSON и последующем выборе пункта “Отменить” в контекстном меню редактора или нажатии Ctrl+Z сбивалось форматирование JSON.
  1084. Исправлена ошибка обработки плейсхолдера {tv:...} с использованием сложной выборки данных из других таблиц. Ошибка возникала при использовании СУБД PostgreSQL.
  1085. Исправлена ошибка обработки табличных плейсхолдеров {t:...} и {tv:...} в ситуации, когда в плейсхолдере используется одновременно группировка и сортировка.
  1086. Исправлена ошибка применения плейсхолдера-объявление в ситуации, когда в нём не задана сортировка.
  1087. В контроле “Представление” с включённым расширением “Представление истории заданий” исправлена работоспособость кнопки “Обновить”.
  1088. В маршрутах исправлена ошибка, из-за которой из маршрута не удалялись этапы при исключении группы или шаблона этапов разными способами. Теперь при любом способе исключении группы или шаблона этапов, связанные с ним этапы также удаляются.
  1089. В API тестов исправлена сортировка в методах PerformerBuilder.AddPerformer и PerformerBuilder.RemovePerformers. Ошибка в некоторых случаях приводила к неправильному определению признака наличия изменений в этапе.
  1090. В web-клиенте в карточке настроек DeskiMobile переименован на TESSA Assistant.
  1091. Исправлено удаление карточек без указания их типа в запросе, если пользователь не является администратором.
  1092. В web-клиенте исправлена ошибка, приводящая к некорректной группировке по категориям в контролах “Представление” с расширением “Список файлов в представлении”.
  1093. В desktop-клиенте исправлена работоспособность кнопки “Обновить” в контроле “Представление”, когда подключено расширение “Представление истории заданий”.
  1094. В TessaAdmin исправлена ошибка в экспорте рабочих мест, из-за которой при выгрузке рабочего места с включёнными в результирующий файл представлениями и поисковыми запросами не учитывались изменения метаданных в последних, сделанные после запуска приложения.
  1095. В маршрутах исправлена ошибка при сохранении копии карточки или карточки, созданной по шаблону. Ошибка воспроизводилась, если этапы в карточке содержали параметры, отличные от текущей версии.
  1096. В desktop-клиенте исправлена ошибка, из-за которой при открытии карточки в контроле “Представление”, если была настроена группировка с развёрнутыми группами, группы отображались свёрнутыми.
  1097. В мобильном согласовании, при получении письма с пустой или некорректной темой, отправляется ответное сообщение о невозможности сервера обработать письмо.
  1098. Исправлена ошибка, возникавшая при добавлении участников обсуждения, когда в составе добавляемой в качестве участника роли не было сотрудников.
  1099. В web-клиенте для контрола “Текст с форматированием” исправлена ошибка, которая препятствовала копированию выделенного текста в буфер обмена при нажатии Shift+Delete.
  1100. В web-клиенте исправлена ошибка SAML-авторизации, возникавшая при попытке повторно создать сессию для уже авторизованного пользователя.
  1101. В web-клиенте в карточке “Шаблон файла” у файлового контрола убрана возможность выбирать несколько файлов, т.к. для выбора всегда доступен только один файл.
  1102. В маршрутах в этапе “Доработка” исправлена ошибка, из-за которой при завершении задания “Доработка” без указания комментария не очищалось поле “Комментарий к циклу согласования”.
  1103. В web-клиенте исправлена ошибка при формировании файла по шаблону для представления с указанием параметра, допускающего значение null.
  1104. В маршрутах исправлена ошибка “The given key ‘KrPerformersVirtual_Synthetic’ was not present in the dictionary.”, возникавшая при запуске глобального вторичного процесса, если перед его запуском был перезапущен сервер приложений.
  1105. В маршрутах в этапе “Уведомление” оптимизировано получение текущей карточки при формировании уведомления.
  1106. В маршрутах в этапе “Создание карточки” исправлена ошибка, из-за которой пользователю с уровнем доступа “Обычный” был недоступен выбор режима создания карточки.
  1107. Исправлена ошибка, из-за которой не учитывалось направление колонок сортировки представления по умолчанию, при отсутствии явно заданных сортировок в запросе к представлению.
  1108. Исправлено получение контента файла и списка версий файла при незаполненном или пустом поле request.FileName.
  1109. Исправлен редкий race condition при генерации хранимых функций в процессе выполнения представлений на СУБД PostgreSQL.
  1110. Исправлена ошибка, из-за которой пользователь не мог редактировать сообщения в обсуждениях, если у него не было прав на отправку сообщений.
  1111. В web-клиенте исправлена ошибка, из-за которой после переименования файла в карточке без изменения его содержимого в заголовке области предпросмотра отображалось предыдущее имя файла.
  1112. В дереве рабочего места реализована проверка узла, для которого вызывается контекстное меню. Если узел содержит ошибку, то пункты меню “Копировать ссылку на узел”, “Добавить папку”, “Добавить сохраненный запрос к узлу”, “Создать поисковый запрос из узла”, “Копировать”, “Вставить”, “Вырезать” будут скрыты в web-клиенте и заблокированы в desktop-клиенте, а при вызове пунктов “Обновить узел”, “Открыть в новой вкладке” и “Открыть узел в новой вкладке” будет отображено сообщение с ошибкой.
  1113. В web-клиенте исправлена ошибка, приводящая к некорректному отображению экрана входа в браузере Safari (macOS, iOS), а также в некоторых версиях других браузеров.
  1114. В TessaAdmin в разделе “Рабочие места” скрыта настройка расширений для сабсетов.
  1115. Исправлена ошибка, из-за которой при изменении параметров узла поискового запроса в дереве рабочего места пользователь не мог выбрать запрос из категории “Общие запросы”.
  1116. В web-клиенте была исправлена ошибка, из-за которой в карточках, поддерживающих маршруты, в таблице “Этапы маршрута” для этапа “Создание карточки” добавлялся лишний перенос строки в колонке “Настройки”, если не было заполнено поле “Шаблон”.
  1117. В диалоге “Создать файл по шаблону” отключена функциональность плейсхолдеров для редактируемого поля “Имя файла”.
  1118. Исправлены имена настроек в типах карточек для метаинформации по контролам “Текст” и “Метка”: имя свойства Bakground изменено на Background, и BorderThiknes изменено на BorderThickness.
  1119. Исправлена ошибка, из-за которой при обработке процессов Workflow Engine вне контекста сохранения карточки при отправке уведомлений по новым заданиям не все атрибуты задания корректно отображались в уведомлении.
  1120. Исправлена ошибка, возникавшая при автоматическом создании пользователя с SAML-аутентификацией на СУБД PostgreSQL.
  1121. В синхронизации пользователей, подразделений и статических ролей с Active Directory / LDAP исправлена ошибка, из-за которой в карточке объекта с выставленным флажком “Синхронизация отключена” обновлялась дата синхронизации при отсутствии фактического обновления данных.
  1122. В редакторе схемы данных исправлена ошибка, из-за которой при добавлении в таблицу индекса, относящегося к другой библиотеке схемы, некоторые атрибуты этого индекса записывались в библиотеку таблицы.
  1123. В модуле синхронизации с AD / LDAP исправлена ошибка в синхронизации статических ролей, из-за которой при удалении пользователя из состава роли не удалялись его замещения по данной роли.
  1124. Оптимизирована проверка правил доступа типового решения по статическим ролям.
  1125. В web-клиенте исправлена ошибка, из-за которой в горизонтальном блоке карточки не учитывались настройки максимальной и минимальной ширины контролов.
  1126. Исправлен импорт карточек с файлами, файловое хранилище для которых использовалось из сохранённого файла jcard, а не устанавливалось в соответствии с текущими настройками файловых хранилищ.
  1127. Исправлена проблема, когда в процессе создания карточки с файлами по шаблону происходила ошибка, и контент скопированных в новую карточку файлов не удалялся и оставался в файловом хранилище, если идентификатор хранилища не равен 2.
  1128. В web-клиенте исправлена ошибка, из-за которой в колоночном блоке карточки не учитывались настройки максимальной и минимальной ширины контролов.
  1129. Исправлен вывод причины ошибки в тексте исключения при невозможности создать папку в файловом хранилище на файловой системе.
  1130. В web-клиенте в форумах (обсуждениях) исправлена ошибка редактирования сообщения с цитатой.
  1131. На клиенте реализовано кэширование ответов на запрос по созданию файлов CardNewResponse. Это в том числе оптимизировало открытие карточек, для которых включена группировка по циклу согласования.
  1132. В процессе синхронизации пользователей, подразделений и статических ролей с Active Directory / LDAP исправлена ошибка, из-за которой сбой в процессе получения данных от сервера AD/LDAP мог привести к блокировке входа в систему для существующих пользователей.
  1133. В API тестов исправлена обработка флага “Блокировать процесс при асинхронном вызове” при обработке активных таймеров с помощью метода WeProcessInstanceLifecycleCompanion.ProcessTimerOperations.
  1134. В API тестов исправлена обработка асинхронных операций, созданных бизнес-процессами, с помощью метода WeProcessInstanceLifecycleCompanion.ProcessAsyncOperations.
  1135. В web-клиенте исправлена ошибка, из-за которой задачи в карточке неправильно учитывали флаг “Разрешить откладывание”.
  1136. Для подписи по профилю BES более не добавляется секция с неподписываемыми атрибутами.

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

  1. Redis является обязательным компонентом платформы. При обновлении на этот релиз убедитесь, что для Chronos используется тот же сервер Redis, что и для веб-сервиса. Также значение настройки ServerCode в app.json Chronos и веб-сервиса должно совпадать. За подробностями обратитесь к соответствующим разделам по системным требованиям TESSA для Windows и Linux. Для работы системы требуется Redis версии 5.0 или старше. Для Windows систем нужно устанавливать Redis в WSL или использовать выделенную Linux машину.
  2. Приложение-помощник web-клиента Deski обновлено до версии 2.2.0. Для того, чтобы использовать новую функциональность, добавленную в этой сборке, которая задействует Deski, пользователям необходимо будет обновить Deski. Об этом пользователю сообщит web-клиент, когда он выберет новые функции. Deski версии 2.2.0 является обратносовместимым, т.е. его также можно использовать для взаимодействия с web-клиентом платформы 3.6.0 и 3.5.0. На компьютере пользователя может быть установлена только одна версия Deski, предыдущая версия будет удалена при установке новой.
  3. Изменена версия схемы. При открытии схемы данных в SchemeEditor или TessaAdmin система обновит схему на новую версию из файловой папки. Рекомендуется использовать команду tadmin SchemeUpdate для обновления схемы в репозитории перед объединением её со схемой в сборке. После перехода на новую версию все библиотеки будут иметь единую файловую структуру (в том числе библиотека Default): папки расположены в одной директории с файлом .tsd, их имена соответствуют названиям библиотек, а все содержимое библиотек расположено рядом с файлами .tsp. Данные, относящиеся к библиотеке Default, будут перенесены из файла .tsd в файл библиотеки Default.tsp.
  4. Обновление платформы с кастомизированным решением подробно описано в документации в разделе Обновление кастомизированного решения.
  5. Файл, описывающий схему базы данных, Configuration/Scheme/Tessa.tsd переименован в Configuration/Scheme/Platform.tsd. Переименуйте его перед объединением изменений проектного решения со схемой в архиве со сборкой платформы.
  6. Перед обновлением схемы выполните скрипт Fixes/Migration-3.7-pre.**.sql. Далее скопируйте и выполните команду MigrateTaskHistoryRoles из Upgrade.bat/upgrade.sh, где есть вывод на консоль и в скобках указано “4.0.0”. Затем обновите схему данных, а после обновления - выполните скрипты Fixes/Migration-3.7.**.sql и Fixes/Migration-4.0.**.sql. После окончания обновления всей конфигурации выполните скрипт Fixes/Migration-3.7-final.**.sql. Версия скрипта “ms” или “pg” для соответствующей СУБД. Скрипты для PostgreSQL выполняйте посредством команды tadmin Sql ИмяСкрипта, не используйте psql. Скрипты для PostgreSQL выполняйте посредством команды tadmin Sql ИмяСкрипта, не используйте psql. Мы рекомендуем выполнить автоматизированное обновление Upgrade.bat/upgrade.sh, где не потребуется выполнять вызовы команд вручную.
  7. Для работы функциональных ролей заданий необходимо выполнить команду tadmin Script MigrateToTaskRolesInCompletionOptions -pp:from="Путь_к_вашей_папке_с_типами_заданий_в_папке_Configuration" -pp:to="Путь_куда_сохранить_обновлённые_типы_заданий", после чего импортировать обновлённые файлы с типами заданий в систему. Данная команда выполняется автоматически при использовании автоматизированного обновления Upgrade.bat/upgrade.sh.
  8. После обновления необходимо запустить tadmin Script UpgradeTypesSql для конвертации существующих в БД типов карточек в новый формат. Данная команда выполняется автоматически при использовании автоматизированного обновления Upgrade.bat/upgrade.sh.
  9. Обновите файл app.json для сервисов web и chronos.
  10. Обновите файл app.json для приложения TessaClient, если он изменялся в проектном решении.
  11. В папке сборки в подпапках web-сервиса, сервиса Chronos и утилиты tadmin рядом с файлами app.json размещены файлы app-db.json, в которые перенесены строки подключения к базе данных, и файлы app-ext.json, содержащие переопределения некоторых ключей для использования в Windows (для Linux такие файлы отсутствуют), и app-web.json для веб-сервиса (настройки групп WebServer и WebServerLimits). При этом конфигурационные файлы app.json имеют идентичное содержимое для Windows и для Linux. В проектных инсталляциях вы по-прежнему можете менять любые из них, а также удалять файлы app-ext.json с переопределениями, если они не требуются.
  12. При работе с СУБД PostgreSQL рекомендуется указать в строке подключения в app.json сервисов web и chronos параметры MaxAutoPrepare=50 и AutoPrepareMinUsages=20.
  13. При работе с СУБД MS SQL Server рекомендуется указать в строке подключения в app.json для tadmin, web и chronos параметр Trust Server Certificate=true (параметры разделяются точкой с запятой). Вместо этого вы можете настроить сертификат СУБД в соответствии с рекомендациями в MSDN.
  14. Обновите скрипты Export.bat и export.sh проектного репозитория, которая копировалась из папки Source в сборке.
  15. Обновите файл localization.json в папке веб-сервиса: в группу настроек WebLoginStrings добавлены параметры Title и TitleAndUser.
  16. Библиотеки карточек теперь имеют формат JSON с расширением .jcardlib вместо формата XML с расширением .cardlib. XML формат библиотек карточек поддерживается только для импорта. Сконвертируйте библиотеки в репозитории командой tadmin ConvertConfiguration.
  17. Библиотеки Tessa_XX.cardlib объединены в Platform.jcardlib в новом JSON-формате, внутри которой установлены свойства Condition для импорта карточек, в зависимости от текущей используемой СУБД.
  18. В TessaAdmin для типов карточек добавлен флаг “Разрешить файлы”, который указывает системе, что при загрузке карточек этого типа также необходимо загружать информацию о файлах, принадлежащим карточке. Этот флаг установлен по умолчанию для всех новых типов карточек и для мигрированных типов из прошлой версии платформы.
  19. Для всех представлений локализовано поле “Имя” (“Caption”), которое используется в качестве имени узла по умолчанию при добавлении в рабочие места. Поэтому все файлы представлений имеют изменения, но только перечисленные в истории изменений требуют их обязательного применения. Если вы изменяли представление из типового решения, и оно явно не перечислено в списке изменённых, то вы можете не объединять изменения с файлом .jview из сборки.
  20. Обновлена документация по поддерживаемым версиям дистрибутивов ОС Linux. Добавлена поддержка дистрибутивов Astra Linux Common Edition 2.12.46, Calculate Linux 23, Debian 12, 11, Fedora 39, Linux Mint 21, Ubuntu 22.04, 23.04, 23.10, Альт Сервер / Альт Рабочая станция 10.2, 10.1, Astra Linux Special Edition 1.7.4. Прекращена поддержка Astra Linux Common Edition 2.11.5, 2.12.40, Calculate Linux 17.12.2, Debian 9, Fedora 30, Linux Mint 18, 19, OpenSUSE 42.3, Ubuntu 18.04, 18.10, 19.04, 19.10, 20.10, 21.04, 21.10, Альт Сервер / Альт Рабочая станция 9.1, 9.0, 8.2, РЕД ОС 7.1. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в разделе документации Системные требования для серверов Linux.
  21. Изменены минимальные системные требования для desktop-приложений Tessa Applications, TessaClient, TessaAdmin: теперь требуется установленный .NET Framework 4.6.2 или старше для ОС Windows 7 и Windows 8.1. Для более ранних версий Microsoft прекращает поддержку после 22 апреля 2022 г. Обновление рекомендуется установить через центр обновления Windows/WSUS, или с использованием групповых политик.
  22. В web-клиенте изменены минимальные требования к версиям браузеров для desktop и мобильных устройств. Обратитесь к разделу документации Требования к клиентским компьютерам для работы web-клиента.
  23. На сервере приложений теперь требуется установленный пакет .NET Runtime & Hosting Bundle последней доступной версии 6.0.x; допустимо использовать компоненты версий 7.0.x или 8.0.x. Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet/6.0.
  24. Из файлов extensions.xml и application_catalogs.xml удалено пространство имён, указанное через атрибут xmlns. Также данный атрибут был удалён из конфигурационных файлов плагинов Chronos.
  25. Код сервера ServerCode по умолчанию в конфигурационных файлах app.json заменён с "tessa" на "platform". Вы можете изменить его значение на актуальное для вашей инсталляции.
  26. При обновлении с версии 3.6.0.2 или старше обратите внимание, что в app.json сервиса Chronos настройка Maintenance.RemoveClosedSessionsOlderThanDays переименована на Maintenance.RemoveInactiveSessionsOlderThanDays, а плагин RemoveClosedSessionsPlugin переименован на RemoveInactiveSessionsPlugin.
  27. Вызовите команду tadmin ConvertConfiguration на папке с конфигурацией в репозитории, чтобы обновить формат файлов библиотек локализации.
  28. Папка с фонами web-клиента переименована из tessa-wallpapers в wallpapers внутри папки wwwroot/images.
  29. После импорта конфигурации выполните компиляцию всех шаблонов файлов. Для этого откройте карточку любого шаблона файла, перейдите на вкладку “Расширения” и нажмите кнопку “Выполнить компиляцию всех шаблонов файлов”.
  30. Увеличена версия JSON-формата для хранения метаданных рабочих мест. Формат рабочих мест в системе будет автоматически изменён при миграции. Для изменения формата файлов *.jworkplace вручную, используйте команду tadmin ConvertConfiguration.
  31. Проверьте параметры ваших этапов типа “Настраиваемое задание”, и переместите содержимое поля “Вид (устаревшее)” в поле “Вид”.
  32. В TessaAdmin исправлена ошибка при добавлении в диалог маппинга для контролов “Ссылка”, “Список”, “Список файлов”, “Представление”. Если вы добавляли/изменяли в диалогах маппинги для указанных контролов, то необходимо открыть приложение TessaAdmin, перейти в пункт меню “Карточки” и нажать кнопку “Исправить все”. После этого исправленные типы диалогов нужно переэкспортировать.
  33. История изменений в форме файла ReleaseNotes.html удалена из архива со сборкой. Подробное описание всех изменений доступно на странице “История изменений” в документации (папка Docs в архиве со сборкой), причём ссылка на историю добавлена на главной странице документации.
  34. Удалён специальный параметр в представлениях CurrentCardTypeID. Если он использовался в представлениях в проектном решении (и передавался посредством расширений), то задействуйте вместо него обычный параметр представления. Рассмотрите использование маппинга вместо расширений для таких сценариев, если представление вызывается для контролов “Представление”, “Ссылка”, “Список” или “Список файлов”.
  35. Системный параметр представлений Locale теперь содержит строку с ISO кодом языка (en, ru) вместо числового кода LCID.
  36. Из системы был удалён виртуальный тип карточки “Расширенный шаблон бизнес-процесса”, который использовался в карточках шаблонов процессов при добавлении расширений на кнопки. Для импорта карточек данного типа добавлено расширение, поддерживающее обратную совместимость. Необходимо перевыгрузить шаблоны бизнес-процессов в репозиторий для обновления их типа карточки и структуры секций в репозитории.
  37. В файлах NLog.config для всех сервисов и приложений рекомендуется удалить строки writeTo="null" для всех тегов <logger>. NLog не считает логгеры с writeTo="null" выключенными, что приводило к снижению производительности.
  38. Изменён механизм создания файлов по шаблону. Подробности доступны в разделе документации Создание файлов по шаблону.
  39. Разделены версии JSON-формата метаданных для рабочих мест, представлений и поисковых запросов.
  40. В диалоге экспорта типов карточек из TessaAdmin более нельзя указывать расширение .tct для экспорта в устаревшем XML-формате.
  41. Для карточек с настройками пользователя, наименование вкладок, блоки из которых добавляются во вкладку “Мои настройки” основной карточки пользователя, и не добавляются как самостоятельные вкладки, должны иметь имя "MySettings".
  42. В файле app.json веб-сервиса включение конфигурационных файлов app-*.json теперь выполняется позже, чем файлов patch*.json и localization.json, что позволяет изменять в них строки локализации и информацию по патчам.
  43. Расширение типов карточек “Сортировка строк” теперь сортирует строки таблиц только для клиентских запросов на загрузку карточки.
  44. Изменена логика проверки доступа на изменение файлов через правила доступа в ситуации, когда у файла изменяется категория или расширение файла. Теперь при изменении категории или при изменении содержимого файла со сменой расширения у сотрудника должен быть доступ на добавление файла с данной категорией и расширением файла.
  45. Настройка отключения Deski была перенесена из конфигурационных файлов веб-сервисов в карточку “Настройки сервера”, поэтому необходимо удалить группу “Deski” с флагом "Enabled" из файлов app.json веб-сервисов и установить соответствующее значение для флага “Отключить приложение-ассистент web-клиента Deski”.
  46. Увеличена версия JSON-формата для хранения метаданных представлений. Формат представлений в системе будет автоматически изменён при миграции. Для изменения формата файлов *.jview вручную, используйте команду tadmin ConvertConfiguration.
  47. При работе с СУБД PostgreSQL рекомендуется в представлениях заменить #param(PageLimit) на #eval(PageLimit.Value).
  48. В файле app.json Chronos настройка AwaitGracefulStopSeconds переименована в AwaitHostStopSeconds.
  49. В app.json сервиса Chronos переименованы настройки, связанные с взаимодействием хост-процесса и дочерних процессов с плагинами. Актуальные имена настроек начинаются с префикса "Chronos.". Описание см. в разделе Предварительная настройка Chronos.
  50. Во всех типах .jtype заменены названия шрифтов "Segoe UI" или "Segoe UI, ./Fonts/#Open Sans" на null (без кавычек), что соответствует шрифту по умолчанию. Рекомендуется выполнить команды tadmin Script TypeSettingsFix -pp:source=PATH (ранее TypeFontsFix), где PATH - путь к папке с конфигурацией в репозитории. Замените эти строки в файлах .jtype перед объединением изменений с конфигурацией из сборки, а также для собственных файлов типов.
  51. В конфигурационном файле app.json параметр RolesLockTimeoutSeconds, задающий таймаут в секундах взятия блокировки на выполнение операции по обновлению ролей, заменён параметром RolesLockTimeout, имеющим то же значение, но позволяющим задавать значение в формате TimeSpan.
  52. В конфигурационном файле app.json параметр RoleTimeoutTimeSpan, задающий таймаут выполнения длительных запросов, переименован в RolesOperationTimeout.
  53. В форматтере плейсхолдера для вывода штрих-кодов #barcode для опции с положением метки, отличным от l=none, метка (с текстом закодированного штрих-кода) теперь всегда выводится в положении по умолчанию, взависимости от типа плейсхолдера, обычно снизу.
  54. После обновления необходимо выполнить команду tadmin RepairConditionTypes "B205B455-B697-4A99-A5BD-5571DFDE4E5B" для обновления типов условий “По типу задания” во всех местах, где они используются. При обновлении скриптами Upgrade.bat/upgrade.sh вызывать команду не нужно.
  55. Tessa Applications теперь записывает файлы логов в папку %LocalAppData%\tessa\logs вместо папки %AppData%\tessa\logs.
  56. Изменено пространство имён для IActionHistoryStrategy и других объектов, необходимых для взаимодействия с историей действий, с Tessa.Platform.Runtime на Tessa.Platform.ActionHistory.
  57. Для указания таймаутов запросов к серверу в файлах app.json клиентских приложений и тестов указывайте свойство Timeout вместо свойств OpenTimeout, CloseTimeout, SendTimeout. Ранее свойства OpenTimeout и CloseTimeout игнорировались, поэтому переименуйте SendTimeout в Timeout в ваших конфигурационных файлах.
  58. В карточке “Настройки сервера” из таблицы “Настройки файловых хранилищ” удален устаревший флаг “Обратная совместимость”. Также было удалено поле FileUseSimpleNamingScheme из файла app.json тестов. Перед обновлением на эту версию платформы используйте команды tadmin MigrateFiles от предыдущей версии, чтобы мигрировать файлы в хранилище без такого флага.
  59. Обновите формат метаданных представлений. Для представлений в базе данных используйте скрипт UpgradeViewsSql: tadmin Script UpgradeViewsSql. Для представлений на файловой системе (в репозитории) используйте команду tadmin ConvertConfiguration: tadmin ConvertConfiguration Ваша_папка_с_файлами_конфигурации.
  60. Выполните команду tadmin Script FixViewFolders для изменения структуры хранения представлений в папке конфигурации на подпапки. Подробнее в руководстве администратора. Все типовые представления уже разбиты по подпапкам, имена которых соответствуют названиям групп, в которые входят представления.
  61. В тестовых проектах решения необходимо скорректировать подключение ресурсов конфигурации представлений, заменив имеющуюся настройку <EmbeddedResourceEx Include="[PathToConfiguration]/Views/*.jview" LinkBase="Resources/Views" /> на <EmbeddedResourceEx Include="[PathToConfiguration]/Views/**/*.jview" LinkBase="Resources/Views" /> (отличие в /**). Если в вашей версии файлов проектов уже присутствовала последовательность /**, то изменений не требуется.
  62. Для типов карточек изменено поведение флага “Административный”. Теперь любые действия с этой карточкой (в том числе чтение) недоступны пользователям, не являющимся администраторами. Если необходимо дать возможность всем пользователям читать такие карточки, в их типе необходимо указать флаг “Разрешить загрузку всем пользователям”.
  63. Библиотека карточек File templates.jcardlib переименована в PlatformWithFiles.jcardlib.
  64. Обновите скрипты Export.bat и export.sh проектного репозитория, которые копировались из папки Source в сборке.
  65. Теперь узел c расширением AutomaticNodeRefreshExtension не будет автоматически обновляться, если он не выбран, а также не раскрыт ни один его сабсет (если основным узлом является представление). Для того, чтобы вернуть прежнее поведение, в AutomaticNodeRefreshExtension установите настройку “Обновлять всегда”. Подробнее можно прочитать в разделе Настройка автоматического обновления представления.
  66. В desktop-клиенте встроенный предпросмотр PDF и редактирование изображений для файлов PDF, созданных не в системе, отключён для ОС Windows 7/8.1, т.к. движок рендеринга pdfium недоступен на этих ОС.
  67. Потоковое сканирование может получать от сканера файлы PDF. Однако, их использование для серверов на ОС Windows поддерживается, начиная с Windows Server 2016 или Windows 10. Для сервера на ОС Linux ограничений нет.
  68. В файлах конфигурации с расширением jtype замените строки Bakground на Background, и BorderThiknes на BorderThickness.
  69. В карточке “Настройки электронной подписи” по умолчанию теперь указан профиль подписи BES и не указан адрес TSP-сервиса. Вы можете указать следующий адрес TSP-сервиса для тестирования подписи с метками времени, но не в production: http://sha256timestamp.ws.symantec.com/sha256/timestamp.
  70. Из отчёта по завершённым заданиям в рабочем месте “Пользователь” была удалена вкладка “По вариантам завершения” ввиду влияния представления на этой вкладке на производительность системы для больших объёмов данных. При необходимости вы можете разработать подобный отчёт в проектном решении.

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

  1. Для сборки проектов расширений требуется IDE Visual Studio 2022 (версия 17.8 или старше). Версия Visual Studio 2019 не поддерживает .NET 6.0. Вы можете использовать альтернативные IDE, такие как Visual Studio Code и JetBrains Rider, или же выполнять сборку из командной строки. Также, независимо от выбранной IDE, требуется установленный пакет .NET SDK версии 6.0.418 или старше (устанавливается вместе с Visual Studio). Ссылка для скачивания последней версии доступна по адресу https://dotnet.microsoft.com/download/dotnet/6.0.
  2. Во всех файлах проектов расширений .csproj включается файл Tessa.targets, в котором указано свойство LangVersion 10. В текущей реализации это соответствует версии C# 10.0. Укажите значения в ваших проектах расширений, если актуально получить языковые возможности последней доступной версии C# при разработке расширений.
  3. В папке с исходным кодом проектных решений Source добавлены файлы Tessa.Config.Client.targets и Tessa.Config.Server.targets, которые включают в .csproj проектов (по умолчанию это проекты тестов) файлы, посредством которых возможно переопределить параметры подключения к веб-сервису для клиентов и к базам данных для сервисов. Обновлены файлы проектов .csproj для тестов, в которые добавлены инклюды файлов .targets. Вызовите app-init.bat для генерации файлов app-local-*.json в папке с проектным решением, такие файлы индивидуальны для разработчика и не сохраняются в репозитории. Добавьте файлы app-local*.json в папку с индивидуальным проектом, чтобы переопределить любые параметры конфигурации для этого проекта, такое разделение добавлено на смену app.json+app.json.sample. Обновите файлы, чтобы задействовать функциональность в проектном решении.
  4. В папке с исходным кодом проектных решений Source добавлен файл Tessa.EmbeddedResourceEx.targets, который включает в .csproj проектов (по умолчанию это проекты тестов) обработку элемента EmbeddedResourceEx, посредством которого возможно управлять встраиванием ресурсов в сборку. Обновлены файлы проектов .csproj для тестов, в которые добавлен include файла Tessa.EmbeddedResourceEx.targets. Замените использование элемента EmbeddedResource на EmbeddedResourceEx в файлах проектов тестов. Подробная информация о ресурсах в тестах содержится в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Работа с ресурсами используемыми в тестах”.
  5. В файлах проектов расширений .csproj добавлен импорт файлов .<group_name>.targets из папки с проектом. Значение <group_name> может иметь значение pre, для установки значений свойств в начале файла проекта, props, для переопределения имён свойств проекта до выполнения скриптов проекта, и post для добавления скриптов в конце файла проекта. Это позволяет изменять свойства проекта и добавлять скрипты сборки путём добавления файлов .targets в папку с проектом решения без изменения самого файла проекта.
  6. В проектных расширениях в файлах проектов Tessa.Extensions.Client.csproj и Tessa.Extensions.Default.Client.csproj укажите вместо ссылки на проект Tessa.Analyzers ссылку на Tessa.UI.Analyzers.
  7. Для расширений на представления и узлы рабочего места OpenTopicOnDoubleClickExtension и OpenForumContextMenuViewExtension изменено пространство имён с Tessa.Extensions.Default.Client.Forum на Tessa.Extensions.Default.Client.Forums. Мы рекомендуем произвести поиск и замену по рабочим местам и представлениям в репозитории.
  8. В коде проектных расширений, в которых использовался объект KrProcessClientLauncher для запуска маршрута на клиенте, необходимо использовать KrProcessClientUILauncher для поддержки параметров, которые определяют использование объектов в Tessa.UI. Для запуска маршрута рекомендуется получать зависимость IKrProcessLauncher из Unity-контейнера. Более подробная информация по запуску маршрутов содержится в разделе “Маршруты” руководства разработчика.
  9. Из класса CardTask удалены свойства AuthorID, AuthorName, AuthorPosition, RoleID, RoleName, RoleTypeID. Теперь соответствующие данные можно получить из коллекции CardTask.TaskAssignedRoles.
  10. Из класса CardTaskHistoryItem удалены свойства AuthorID, AuthorName, RoleID, RoleName, RoleTypeID. Теперь соответствующие данные можно получить из коллекции CardTaskHistoryItem.HistoryRoles.
  11. Изменены возвращаемые значения для методов объекта IKrTypesCache. Проверьте использование этого объекта в проектных расширениях.
  12. В расширениях CardMetadataExtension при добавлении новых секций CardMetadataSection требуется в их свойство CardTypeIDList добавлять ID типов карточек, в которых данная секция используется, аналогично тому, как это делается для колонок CardMetadataColumn.
  13. Удалены константы Caption, Description, ID, Info, Name, Order, RoleID, RowID, RuntimeSourceAfter, RuntimeSourceBefore, RuntimeSourceCondition, RuntimeSqlCondition, SourceAfter, SourceBefore, SourceCondition, SqlCondition, StageGroupName, StageGroupOrder, StateID, StateName, TypeID, расположенные в классе Tessa.Extensions.Default.Shared.Workflow.KrProcess.KrConstants. Вместо них используйте константу с названием колонки, соответствующей таблице, в которой она расположена. Например, KrConstants.KrStages.StateID, где KrStages - название таблицы с колонкой StateID. Константой аналогичной KrConstants.Name является KrConstants.<Название таблицы>.NameField.
  14. Удалены константы StageStateID и StageStateName, расположенные в классе Tessa.Extensions.Default.Shared.Workflow.KrProcess.KrConstants.KrStages. Вместо них используйте константы KrStages.StateID и KrStages.StateName.
  15. Удалены поля в классе Tessa.Extensions.Default.Shared.Workflow.KrProcess.KrConstants.DocumentCommonInfo: ID, SecondaryNumberID, SecondaryFullNumberID, SecondarySequenceID, которые содержали идентификаторы соответствующих колонок. Вместо них используйте следующие поля из класса Tessa.Extensions.Default.Shared.DefaultSchemeHelper: DocumentCommonInfoSectionID, SecondaryNumberColumnID, SecondaryFullNumberColumnID, SecondarySequenceColumnID.
  16. Удалены методы Tessa.Platform.AssemblyHelper.EmbeddedResourcePathCombine. Вместо них используйте System.IO.Path.Combine или System.IO.Path.Join.
  17. Изменён метод Tessa.Platform.AssemblyHelper.GetFileNameEnumerableFromEmbeddedResources. Удалён параметр subPath. Используйте метод System.IO.Path.Combine или System.IO.Path.Join для объединения значений basePath и subPath для передачи его параметру basePath. Тип возвращаемого значения изменён на EmbeddedResourcePath, содержащий информацию о полном пути и названии ресурса. Для получения значения соответствующего пути относительного subPath используйте конструкцию: Path.Combine(subPath, EmbeddedResourcePath.Name).
  18. Изменена обработка параметра resourcePath метода Tessa.Platform.PlatformExtensions.GetResourceStream: удалена замена символов / и \ на .. Указываемый путь к ресурсу должен иметь формат, соответствующий используемому механизму встраивания. Если используется элемент EmbeddedResourceEx, то для преобразования пути можно использовать методы: Tessa.Platform.AssemblyHelper.GetResourcePath и ConvertToEmbeddedResourcePath. Используйте параметр LogicalName для задания имени ресурса, не зависящего от алгоритма преобразования имени. Информацию об именовании ресурсов можно найти в: https://docs.microsoft.com/en-us/dotnet/core/resources/manifest-file-names.
  19. Удалены методы IStoragePathResolver.ResolveMultiple. Вместо них используйте соответствующие методы IStoragePathResolver.Resolve.
  20. Флаг настроек запуска бизнес-процессов по шаблону бизнес-процесса WorkflowEngineProcessFlags.CreateNew переименован в WorkflowEngineProcessFlags.StartNew.
  21. Переделана логика хранения и обработки подписок по умолчанию в шаблонах бизнес-процессов. Теперь подписки не хранятся вместе с экземпляром процесса, а хранятся в объекте шаблона бизнес-процесса. Как следствие, метод IWorkflowInstanceService.GetCommandSubscriptionsAsync теперь не возвращает подписки по умолчанию.
  22. Логика сохранения токена сесии и сервиса локализации на веб-сервере вынесена из статического класса WebHelper в объект с типом IWebContext. Получить текущий IWebContext можно с помощью объекта с типом IWebContextAccessor.
  23. В объектах, описываемых IKrEventExtensionContext, IKrExecutionContext, IKrProcessButtonVisibilityEvaluatorContext, IKrProcessRunnerContext, IKrSecondaryProcessEvaluatorContext, IStageTypeHandlerContext, вместо свойств CardTypeID, CardTypeName и CardTypeCaption необходимо использовать соответствующие значения из свойства CardType.
  24. Удалено расширение для построения листа согласования Fixes/KrApprovalList, использовавшееся для совместимости с версиями платформы 3.3.1 и более ранними, и со старыми расширениями IKrApprovalListExtension. Используйте виртуальный файл с шаблонами файлов для изменений в типовом листе согласования.
  25. Удалены некоторые избыточные методы в классе LinkHelper. Используйте перегрузки метода GetClientLink вместо них.
  26. Свойство CardViewControlViewModel.ScrollWithModifiers удалено, прокрутка с зажатым Ctrl доступна для всех контролов “Представление”. Используйте свойство EnableMouseScrolling, определяющее прокрутку мышью без зажатого Ctrl, в соответствии с флагом “Разрешить прокрутку”.
  27. В настройки сотрудника в PersonalRoleSatellite.Settings теперь сериализуются и десериализуются только виртуальные секции из типов карточек с настройками. Если для настроек сотрудника использовались физические секции и они должны сериализоваться в настройки сотрудника, то эти секции необходимо сделать виртуальными.
  28. Исправлена опечатка в методе WorkflowHelper.CurrentPerformerIndexIncrenent. Переименуйте места вызова метода в проектах.
  29. Добавлена поддержка упрощённого формата пространств имён клиентских сборок в .xaml файлах. Теперь вместо clr-namespace:Tessa.UI.*;assembly=Tessa.UI можно писать Tessa.UI.*.
  30. В проекты с клиентскими расширениями Tessa.Extensions.Default.Client и Tessa.Extensions.Client добавлена ссылка на анализатор Tessa.Analyzers. Он генерирует в проектах атрибуты XmlnsAttribute для возможности использования упрощённого формата пространств имён в .xaml файлах.
  31. Из темы интерфейса удалены цвета TaskPerformerBackground, TaskPerformerDeputyBackground, TaskAuthorBackground, TaskAuthorDeputyBackground. Для любых функциональных ролей задания окрашиваются в цвет TaskBackground, если цвет не переопределён в настройках пользователя и в API.
  32. Интерфейс IBulkInsertExecutor был изменён для оптимизации массовой вставки строк. Если в коде проектных расширений был задействован этот интерфейс, то актуализируйте места его использования.
  33. В конструкторах коллекций типов карточек и объектов метаинформации, являющихся наследниками типа CardSerializableEntryCollection<T>, вместо ICollection<T> теперь передаётся IReadOnlyCollection<T>. Актуализируйте тип передаваемого параметра, если конструкторы используются в проектном решении.
  34. Изменены названия в API обсуждений для параметров методов IForumProvider и типов перечислений, для desktop-клиента, сервера и web-клиента. При использовании в проектном решении может потребоваться их переименовать или изменить порядок параметров. Они называются схожим образом, например: readOnly -> isReadOnly, MessageTypes -> MessageType.
  35. Удалено устаревшее API по отправке почтовых уведомлений посредством INotificationSender. Используйте объект INotificationManager.
  36. SQL-функция FormatAmount принимает дополнительный параметр с именем настроек форматирования из колонки FormatSettings.Name. При использовании в представлениях передайте значение служебного параметра #param(FormatSettings).
  37. Для форматирования даты, времени, чисел и денежных величин используйте поддерживаемые типовые плейсхолдеры форматирования .NET. Например, укажите g вместо dd.MM.yyyy HH:mm для вывода даты и времени без секунд для учёта настроек форматирования пользователя. Это относится к строкам формата в элементах управления и плейсхолдерах, и к использованию форматирования в коде скриптов и расширений .NET, а также в web-клиенте при вызове методов formatToString и LocalizationManager.format (перечисленные в документации строки допустимы к использованию в web-клиенте).
  38. Класс FormattingHelper перенесён из пространства имён Tessa.Platform в Tessa.Platform.Formatting. Для расширений web-клиента аналогичный класс formattingHelper перенесён из tessa/platform в tessa/platform/formatting. Используйте эти классы для форматирования даты, времени, чисел и денежных сумм. Обновите расширения проектного решения.
  39. Статический класс ApplicationFolders преобразован в зависимость. Получите её из Unity-контейнера по интерфейсу IApplicationFolders.
  40. Из класса OperationTypes были удалены свойства UserClientOperations и AdminClientOperations. Доступ на запуск операций через IOperationRepository со стороны клиентских приложений теперь ограничен IOperationRepositorySettings, который можно получить из IUnityContainer.
  41. Для методов RegisterServerForPluginAsync, используемых для регистрации контейнера зависимостей для плагинов, изменено поведение, касающееся использования межпроцессорной коммуникации. Теперь параметр enableInterprocessCommunication может принимать значение null (которое теперь используется как значение по умолчанию), при передаче которого функционирование межпроцессорной коммуникации при работе плагина определяется по настройке EnableInterprocessCache из файла конфигурации app.json.
  42. Метод WorkflowEngineContextExtension.TryGetKrSatelliteCardAsync переименован в WorkflowEngineContextExtension.GetKrSatelliteAsync. Переименуйте места вызова метода в проектном решении.
  43. Библиотека логирования NLog была обновлена до релиза 5.0. Обновите файлы NLog.config в папках проектов с тестами. Если вы использовали специализированную конфигурацию NLog, то по вопросам обновления обратитесь к описанию реализа на сайте.
  44. Изменены сигнатуры методов CardUIHelper.TryCreateFromTemplateAsync, CardUIHelper.TryCreateFromTemplateResponseAsync и UIExtensions.CreateFromTemplateAsync. Перечень изменений содержится в разделе с описанием API. Актуализируйте использование методов в проектном решении.
  45. В контексте обработки бизнес-процессов IWorkflowEngineContext и базовом классе для скриптов удалены устаревшие свойства, выполняющие синхронную загрузку карточки. Вместо них используйте соответствующие асинхронные методы.
  46. Исправлены опечатки в методах GetCardTaskDialogAcionResult и SetCardTaskDialogAcionResult. Переименуйте места вызова методов в проектах.
  47. Тип CardType больше не является формой сам по себе и не наследуется от CardTypeForm. Все формы вкладок карточки расположены в коллекции CardType.Forms.
  48. Изменён интерфейс ICardModel. Свойство MainForm теперь имеет интерфейс IFormViewModelBase. Добавлены свойства с реализацией по умолчанию: IFormWithBlocksViewModel MainFormWithBlocks и IFormWithTabsViewModel MainFormWithTabs.
  49. Изменено определение культуры локализации в методах LocalizationManager. Ранее если была указана культура ru-RU, то реальные строки могли быть получены от культуры ru. Сейчас совпадение имени культуры в параметре метода и имени культуры в сервисе ILocalizationService должно полностью совпадать (т.е. везде ru). Если вы явно не использовали указанное поведение, то не требуется изменять код проектного решения.
  50. У статического метода Session.CreateSystemToken удалён неиспользуемый параметр SessionType. Актуализируйте его использование в проектных расширениях.
  51. Переименованы и изменены типы, используемые для вкладок в верхней панели TessaClient: ClosingAdapter -> DocumentTab, CardAdapter -> CardTab, WorkplaceAdapter -> WorkplaceTab, ISupportTabClosing -> ICloseableTab, ISupportTabItem -> IHeaderedTab. Класс WorkplaceComponentAdapter был удалён, т.к. не использовался. Переименовано свойство IWorkplaceCreationContext.TreeVisible -> TreeIsVisible и соответствующие параметры методов IDocumentTabManager и IUIHost. Вместо метода IDocumentTabManager.CloseCardAsync используйте метод IDocumentTabManager.TryGetCardAsync с последующим закрытием вкладки методами интерфейса ICloseableTab. Вместо метода IDocumentTabManager.ActivateCardAsync используйте метод TryGetCardAsync с последующим вызовом IDocumentTabManager.ActivateAsync. Свойство IDocumentTabManager.ActiveContext заменено на метод TryGetActiveUIContext. Обновите код расширений проектного решения, если указанные типы или методы использовались.
  52. В web-клиенте алиас пункта файлового контрола “Добавить версию” изменён с AddVersion на Replace, а пункт меню переименован на “Заменить” (по аналогии с desktop-клиентом).
  53. Для операций, создаваемых и управляемых с клиента, у которых для типа указан режим OperationClientMode.User, доступ теперь ограничен таким образом, что изменять операцию можно только от той же сессии, при которой операция была создана. Если в проектном решении используются такие операции, то убедитесь в корректности их вызова, и при необходимости измените код таким образом, чтобы действия с операциями выполнялись на сервере.
  54. Ключ CardValidationKeys.UserIsNotAdmin был перенесён в класс ValidationKeys. Обновите места использования в проектных расширениях.
  55. Если в коде проектного решения C# вызываются цепочки расширений посредством методов IExtensionContainer.ResolveExecutorAsync или TryResolveExecutorAsync, и к возвращённому объекту IExtensionExecutor<TExtension> возможно одновременное обращение из разных потоков (нитей выполнения), то используйте перегрузки этих методов с параметром synchronized: true.
  56. Метод FormattingHelper.Format переименован в FormatValue. Переименуйте метод в коде расширений, где он используется.
  57. Объект SuspendableObservableCollection перенесён из пространства имён Tessa.UI в Tessa.Platform.Collections. Его метод SuspendChangeNotification переименован в SuspendNotifications. Коллекция ObservableCollection<TItem, TCollection> унаследована от этого класса и теперь реализует интерфейс ISuspendableObservableCollection<TItem, TCollection>, который предоставляет метод SuspendNotifications. Обновите код проектных расширений, если использовали эти классы и интерфейсы.
  58. Класс TaskInfoViewModel, обеспечивающий вывод информации по заданию, перенесён из пространства имён Tessa.UI.Cards.Controls в Tessa.UI.Cards.Tasks. Все его основные свойства доступны через интерфейс ITaskInfoViewModel, возвращаемый в методе TaskWorkspaceViewModel.TryGetTaskInfo. Обновите код расширений desktop-клиента в проектном решении, если этот класс использовался.
  59. Тип колонки LocalizationStrings.Culture в схеме изменён с числового на строковый. Теперь вместо кода культуры LCID там содержится ISO код языка (en, ru). Соответствующим образом изменены параметры в хранимых функциях локализации, предоставляемых платформой.
  60. Контроллер REST API для локализации перенесён по маршруту api/v2/localization. Его GET-запрос entries изменён: в параметрах принимается только ISO код языка, и возвращается словарь (константа локализации, локализованная строка для запрошенной культуры). Для получения строк локализации с комментариями необходимо использовать новый маршрут api/v2/localization/entries-with-comments, который получает ISO код языка и как и ранее возвращает список объектов PlainLocalizationEntry. Предыдущая версия метода доступна для обратной совместимости по маршруту api/v1/localization/entries. Методы, возвращающие и принимающие библиотеки локализации, теперь сериализуют их в новом формате 2, т.е. используется ISO код языка (en, ru) вместо строки LCID.
  61. Метод BuildInfo.GetVersionObject() заменён на свойство VersionObject. Соответственно изменилась реализация тестового контроллера ServiceController, включённого в проектную сборку Tessa.Extensions.Server.Web. Обновите или удалите класс контроллера.
  62. Исправлена опечатка в свойстве SatelliteTypeDescriptor.IsDefferedStore. Переименуйте места использования в проектах.
  63. Изменены имена репозиториев ICardRepository не выполняющие действия в транзации с ***WithoutTransaction на ***WithoutTransactionAndLocking.
  64. Удалено свойство DeferredEventArgs.Empty. Используйте вместо него создание экземпляра конструктором по умолчанию new DeferredEventArgs().
  65. Методы IExtensionExecutor.ExecuteAsync (и методы-расширения, такие как ExecuteWithExceptionCheckAsync) вместо параметра method с выражением, указывающим на метод расширения, принимают имя метода в параметре methodName. Интерфейс IExtensionExecutor<TExtension> теперь именуется без generic-параметра как IExtensionExecutor. Например, для расширений ICardGetExtension вызов цепочки расширений BeforeRequest должен выполняться с параметром methodName: nameof(ICardGetExtension.BeforeRequest), тогда как ранее передавался параметр method: x => x.BeforeRequest.
  66. Исправлены опечатки в названиях классов, методов, параметров темы, строк локализации и других объектов: Pallete -> Palette. Переименуйте их в проектном решении, если они используются: строки локализации (CardTypes_Blocks_ColorsPalette и др.), параметр темы Cold.json (ColorsPalette), пространство имён (Tessa.UI.Controls.ColorPalette), интерфейсы (IColorPaletteSettingsManager, IColorPalette, IColorPaletteItem), классы (ChartColorPaletteHelper, ButtonPaletteItemViewModel, ColorPaletteItemViewModel, ColorPaletteSettingsManager, ColorPaletteViewModel), перечисление (PaletteColorTypes).
  67. Класс KrScopeLevel больше не реализует интерфейс IAsyncDisposable. Для выполнения задач, связанных с освобождением ресурсов, используйте метод KrScopeLevel.ExitAsync.
  68. Изменена сигнатура метода CardTaskDialogHelper.SetFileContentToInfoAsync. Актуализируйте места использования в проектном решении.
  69. Из решения удален интерфейс IRoleRepository вместе с его имплементацией RoleRepository. В проектном решении для взаимодействия с карточками ролей используйте ICardRepository, для расчёта контекстных ролей - IContextRoleManager, для создания временных ролей - CardTemporaryTaskRole, при необходимости получения низкоуровневой информации по имени, типу роли и её составу - IRoleGetStrategy.
  70. Удалена возможность отправлять уведомления по именам ролей посредством классов RoleNameNotificationRecipientsSourceParameter и RoleNameNotificationRecipientsSource, которые были удалены, и связанных с ними методов-расширений INotificationManager и метода в IKrAcquaintanceManager. В скриптах и расширениях в проектном решении используйте вместо этого отправку уведомлений по идентификаторам ролей.
  71. Свойства ProcessID, ProcessKind, ProcessName удалены из CardTaskHistoryItem. Теперь эту информацию можно получить из свойства CardTaskHistoryItem.Settings по ключам KrConstants.TaskHistorySettingsKeys.ProcessID, KrConstants.TaskHistorySettingsKeys.ProcessKind и KrConstants.TaskHistorySettingsKeys.ProcessName.
  72. Поля RoleID, RoleName, RoleTypeID удалены из таблицы TaskHistory. При необходимости, информацию об исполнителе можно записать в CardTaskHistoryItem.Settings. Задания подсистемы маршрутов записывают исполнителя в CardTaskHistoryItem.Settings по ключам PerformerID, PerformerName и PerformerRoleTypeID из вспомогательного класса KrConstants.TaskHistorySettingsKeys.
  73. NuGet-зависимость NetOffice.Word, используемая в desktop-клиенте в библиотеке Tessa.UI для сравнения и объединения документов в Word, была заменена на NetOfficeFw.Word, которая поддерживает новые версии Microsoft Office и содержит исправления ошибок. Если в проектных расширениях Tessa.Extensions.Client вы добавляли ссылки на другие NuGet-пакеты NetOffice.* (например, NetOffice.Excel), то замените их на аналогичные версии пакетов NetOfficeFw.* (NetOfficeFw.Excel).
  74. В функцию INotificationSendContext.GetCardFuncAsync добавлен параметр типа IValidationResultBuilder. Используйте его для передачи результатов валидации, создаваемых при получении карточки.
  75. В IFileControl изменены делегаты TypeFilterAsync и CategoryFilterAsync. Теперь в качестве параметра данные методы принимают объект контекста с типом IFileTypeFilterContext и IFileCategoryFilterContext соответственно.
  76. В FileControlHelper изменена сигнатура метода SelectFileCategoryAsync, позволяющего выбрать категорию для файлов. Добавлен новый параметр, в котором передаётся список объектов с информацией о файлах, для которых производится выбор категории. Также метод теперь возвращает признак того, что значение было выбрано автоматически, а не пользователем.
  77. В FileControlHelper в методе AddFilesAsync удалены не используемые параметры IFileCreationToken и IFileVersionCreationToken. Для версии метода, принимающей файлы в виде объектов Stream добавлены делегаты, позволяющие изменить создаваемый IFileCreationToken и IFileVersionCreationToken.
  78. В web-клиенте в FileListViewModel изменены параметры функций FileListTypeFilter и FileListCategoryFilter. Теперь в качестве параметра данные методы принимают объект контекста с типом IFileTypeFilterContext и IFileCategoryFilterContext соответственно.
  79. В web-клиенте в fileHelper изменена сигнатура метода selectFileCategory, позволяющего выбрать категорию для файлов. Добавлен новый параметр, в котором передаётся список объектов с информацией о файлах, для которых производится выбор категории.
  80. Для регистрации обработчиков мобильного согласования IMessageHandler, вместо вызова Container.RegisterHandler<MyMessageHandler> совместно с регистрацией типа MyMessageHandler в контейнере, теперь достаточно зарегистрировать только тип по интерфейсу Container.RegisterSingleton<IMessageHandler, MyMessageHandler>(nameof(MyMessageHandler)). При этом на тип класса MyMessageHandler можно добавить атрибут Order для указания порядка выполнения вручную.
  81. Изменён интерфейс IOperationRepository. Его метод-расширение ExecuteInLockAsync перенесен в новый интерфейс IOperationLockingStrategy. Для управления блокировками операций теперь необходимо использовать его.
  82. Методы: AddActiveTaskAsync, TryRemoveActiveTaskAsync, GetActiveTasksAsync и AddToHistoryAsync перемещены в класс Tessa.Extensions.Default.Server.Workflow.WorkflowEngine.WorkflowEngineContextExtension.
  83. Параметр listenerActionAsync теперь возвращает ValueTask вместо Task в методе ISharedEventSubscriber<TEventArgs>.SubscribeAsync и его реализациях, таких как RedisEventSubscriber.
  84. В API тестов изменён механизм инициализации карточки параметров сервера, создаваемой классом Tessa.Test.Default.Shared.Kr.ServerConfigurator. Для инициализации вызовите метод ServerConfigurator.InitializeServerInstance после ServerConfigurator.Create или ServerConfigurator.CreateOrLoadSingleton. Подробности в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Настройка файлового хранилища при создании тестовой базы данных”.
  85. В API тестов вместо методов TestHelper.CreateServerContainerBase и TestServerHelper.CreateServerContainer используйте TestHelper.InitializeServerContainerBase и TestServerHelper.InitializeServerContainer соответственно.
  86. В API тестов удалены перечисленные методы, используйте предлагаемую замену: TestHelper.GetFileStoragePath -> TestBase.GetFileStoragePathAsync; TestHelper.CreateDefaultFileSourceSettings -> TestBase.CreateDefaultFileSourceSettingsAsync; TestHelper.CreateContentStrategy -> TestBase.CreateContentStrategyAsync; TestHelper.GetFixtureTypeCode -> TestBase.GetFixtureNameAsync.
  87. В API тестов удалён параметр useDatabaseAsDefault в конструкторе ServerTestBase(bool). Используйте свойство ServerTestBase.UseDatabaseAsDefault.
  88. В API тестов некоторые методы классов RouteBuilder и PerformerBuilder переделаны на аналогичные с отложенным выполнением. Для выполнения отложенных методов необходимо вызвать метод GoAsync(). Более подробная информация содержится в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Отложенные действия”.
  89. В API тестов вместо метода TestConfigurationBuilder.ConfigureCalendar следует использовать TestConfigurationBuilder.ConfigureTimeZones.
  90. В API тестов исправлена опечатка в методе CardLifecycleCompanionExtensions.LoadWithtHiddenStages. Переименуйте места вызова метода в проектах с тестами.
  91. В API тестов изменён способ доступа к спискам действий. Замените прямое обращение к списку на доступ к нему через вызов метода TestBase.GetTestActions. Например, доступ к списку действий BeforeInitializeAsync теперь можно получить следующим образом: GetTestActions(ActionStage.BeforeInitialize).
  92. В API тестов изменено расположение классов Tessa.Test.Default.Server.ServerTestBase и Tessa.Test.Default.Server.Kr.KrServerTestBase на Tessa.Test.Default.Shared.ServerTestBase и Tessa.Test.Default.Shared.Kr.KrServerTestBase соответственно. Обновите проектный код c тестами, содержащими ссылки на эти классы.
  93. В API форумов результат выполнения операции теперь всегда возвращается в объекте ValidationResult, тогда как ранее он мог размещаться в response.ValidationResult. Измените проектные расширения, которые использовали API форумов.
  94. В IUIHost в методе ShowViewsDialogAsync изменён тип параметра refSection со строки на список строк. Для удобства перехода добавлен вспомогательный метод ShowViewsDialogAsync, принимающий в качестве параметра строку, содержащую только один refSection.
  95. В моделях представления контролов AutoCompleteEntryViewModel и AutoCompleteTableViewModel тип свойства RefSection изменён с типа string на тип ObservableCollection<string>. Теперь свойство содержит список RefSection, определяемый настройками контрола, и его можно изменить.
  96. В контексте представления IViewContext тип свойства RefSection изменён с типа string на тип IEnumerable<string>.
  97. В контексте создания рабочего места IWorkplaceCreationContext и в контексте фильтрации узлов рабочего места IWorkplaceFilteringContext тип свойства RefSection изменён с типа string на тип IEnumerable<string>.
  98. В компонент области отображения рабочего места IWorkplaceViewComponent и в модель представления рабочего места IWorkplaceViewModel тип свойства RefSection изменён с типа string на тип IEnumerable<string>.
  99. В web-клиенте в моделях-представлений контролов AutoCompleteEntryViewModel и AutoCompleteTableViewModel тип свойства refSection изменён с типа string | null на тип string[]. Теперь свойство содержит список RefSection, определяемый настройками контрола, и его можно изменить.
  100. В web-клиенте в контексте представления IViewContext тип поля refSection изменён с типа string на тип ReadonlyArray<string> | null.
  101. В web-клиенте в контекст создания рабочего места WorkplaceCreationContext и в контекст фильтрации узлов рабочего места WorkplaceFilteringContext тип поля refSection изменён с типа string на тип ReadonlyArray<string> | null.
  102. В web-клиенте в модель-представления рабочего места IWorkplaceViewModel тип поля refSection изменён с типа string на тип ReadonlyArray<string> | null.
  103. В IViewService в методе GetByReferencesAsync тип первого параметра изменён с string на IEnumerable<string>. Теперь метод возвращает представления, которые содержат ссылки с RefSection, содержащим хотя бы одно значению из переданного параметра.
  104. В IViewParameterMetadata тип свойства RefSection изменён с string на IEnumerable<string>.
  105. В web-клиенте в IViewParameterMetadata тип поля refSection изменён с string | null на string[] | null.
  106. В папке с проектными плагинами Chronos Plugins/Tessa.Extensions.Chronos теперь не следует размещать стандартные библиотеки Tessa.* и их зависимости. Корректная установка проектных плагинов в папке Chronos описана в инструкции в файле readme.txt в проекте Tessa.Extensions.Chronos (в архиве со сборкой это файл Source/Extensions/Tessa.Extensions.Chronos/readme.txt).
  107. Изменены зависимости, используемые при разработке плагинов Chronos: библиотека Chronos.Contracts переименована в Chronos.Plugins (как и пространство имён); класс PluginContractHelper переименован в PluginHelper.
  108. Из кода плагинов Chronos удалите вызов InitializeFromConfigurationAsync и установку свойства ServerRequestID. Эти функции теперь выполняются автоматически.
  109. Метод IGlobalMutex.WaitAsync принимает TimeSpan timeout вместо таймаута в миллисекундах. Для указания бесконечного таймаута используйте Timeout.InfiniteTimeSpan (значение по умолчанию в предыдущей сигнатуре метода).
  110. В web-клиенте расширение cardNewTemplateExtension было разделено на расширения cardCopyExtension (вызывается при копировании карточки) и cardCreateFromTemplateExtension (вызывается при создании карточки по шаблону).
  111. Метод IWorkflowAction.Validate переименован в IWorkflowAction.ValidateAsync. Актуализируйте места использования в проектном решении.
  112. Удалён интерфейс ISupportGracefulStop, который определял для плагинов, что они поддерживают вежливую остановку. Теперь все плагины поддерживают вежливую остановку по умолчанию, при определении интерфейса IPlugin.
  113. Интерфейс IGracefulStopToken, используемый в методе IPlugin.StopAsync, переименован в IPluginStopToken.
  114. В интерфейсе ITessaViewAccess метод GetRolesAsync не должен возвращать null. При написании программных представлений возвращайте new(Array.Empty<INamedEntry>()), чтобы указать пустой список ролей.
  115. Изменены параметры для методов IErrorManager. В методах ReportErrorAsync и ReportErrorSafeAsync был удалён параметр cancellationToken. Так же в методах ReportErrorAsync и ReportErrorSafeAsync был заменён параметр withoutTransaction на sameTransaction. Теперь sameTransaction - это признак того, что выполнение метода должно происходить в текущей транзакции. Если параметр sameTransaction имеет значение false, то будет открыто новое подключение к базе, в котором будет создана новая транзакция. Если ранее где-то в проектных расширениях при записи ошибки уже создавалось отдельное подключение, эту логику можно убрать.
  116. Таблица Operations была разделена на две таблицы: Operations (в которой хранятся только статические данные об операциях) и OperationUpdates (в которой хранятся изменяющиеся данные), а поле Progress было вынесено в Redis. Для управления прогрессом операций на сервере необходимо использовать IOperationsRepository.
  117. Изменён интерфейс IOperationRepository. В методы StartAsync, CompleteAsync и DeleteAsync добавлен необязательный параметр для передачи типа операции.
  118. В методе RolesExtensions.ExecuteInRolesLockAsync опциональный параметр timeoutSeconds: int заменён на обязательный timeout: TimeSpan.
  119. В API тестов удалён метод TestHelper.InitializeDefaultLocalizationAsync. Для выполнения инициализации локализации по умолчанию унаследуйте свой класс с тестами от класса TestBase.
  120. Метод-расширение InvokeNullableAsync, используемый для вызова асинхронных обработчиков событий, принимающих аргументы-наследники DeferredEventArgs, больше не получает CancellationToken в качестве параметра. Также из всех классов-наследников DeferredEventArgs удалено свойство CancellationToken. Не используйте асинхронную отмену в коде таких обработчиков ввиду отсутствия её корректной обработки с вызывающей стороны.
  121. В объекте ISessionServer изменена сигнатура метода ValidateAndGetSessionAsync: параметр updateLastActivity заменён на параметр requestType, в котором можно указать SessionRequestType.Background, чтобы определить запрос как фоновый, который не обновляет дату активности сессии. Если ранее передавалось значение false для параметра updateLastActivity, то для нового параметра необходимо использовать значение SessionRequestType.Background.
  122. Все методы аутентификации теперь возвращают заголовок Tessa-Session, в котором хранится токен, сериализованный в формате SessionSerializationOptions.Auth. Данный токен необходимо использовать для последующий запросов к веб-сервисам, требующих авторизации, в одноимённом заголовке запроса.
  123. Изменена сигнатура методов объекта ILoginService. Теперь методы возвращают объект с токеном и токен, сериализованный в формате SessionSerializationOptions.Auth, а параметр options был удален.
  124. В web-клиенте исправлена опечатка в имени метода FileContainer.addVirtualFile.
  125. Изменён метод ObtainReaderLockAsync объекта ICardLockingStrategy. Теперь он возвращает только признак того, что блокировка была успешно взята. Также добавлен параметр, с помощью которого можно опустить проверку наличия карточки в системе. Это может оптимизировать работу метода, если на момент взятия блокировки известно, что карточка заведомо существует.
  126. Из объекта ICardTransactionParameter удалено свойство CardTypeID.
  127. Изменён метод ExecuteInReaderLockAsync объекта ICardTransactionStrategy. В него добавлен параметр, с помощью которого можно опустить проверку наличия карточки в системе. Это может оптимизировать работу метода, если на момент взятия блокировки известно, что карточка заведомо существует.
  128. Изменён интерфейс ISignatureProvider, который теперь использует для подписи и проверки подписи параметры типов Span<byte>.
  129. В дескрипторе универсальных сателлитов SatelliteTypeDescriptor удалено свойство LoadMainCardFiles. Оно было перенесено в базовую реализацию обработчиков сателлитов для заданий TaskSatelliteHandlerBase.
  130. В дескрипторе универсальных сателлитов SatelliteTypeDescriptor свойство IgnoreStoreExtensions переименовано в IgnoreStorePrepare.
  131. В обработчике универсальных сателлитов ISatelliteHandler удалены методы GetExternalFileSourcesAsync, SetupSatelliteFileAsync, IsMainCardFileAsync и PrepareMainCardFileToStoreAsync. Данные методы были перенесены в базовую реализацию обработчиков сателлитов для заданий TaskSatelliteHandlerBase.
  132. Из пространства имён Tessa.Cards.Extensions.Templates удалены все старые шаблоны для расширений сателлитов. Для организации работы карточек-сателлитов в системе рекомендуется использовать систему универсальных сателлитов. Про систему универсальных сателлитов в платформе подробнее в руководстве разработчика.
  133. В модели представлений IFormViewModelBase, IBlockViewModel и IControlViewModel в метод SetStateAsync для desktop-клиента и SetState для web-клиента добавлен параметр StateRestoreMode, который определяет режим восстановления состояния модели представления.
  134. Метод WebProxy.SendAsync получает объект для отправки запроса в параметре content вместо массива parameters. Для обращения к legacy-сервисам, использующим бинарную сериализацию, несколько параметров возможно указать как объект LegacyBinaryContent. Проверьте все места использования метода, т.к. изменение сигнатуры позволяет передавать cancellationToken в качестве параметра content, что приведёт к ошибке.
  135. Изменена сигнатура методов объекта IEDSProvider. Теперь методы GetSignedDocumentAsync, GetToBeSignedAsync и ExtendDocumentAsync ожидают параметр с сертификатом в виде массива байт, а метод ValidateDocumentAsync возвращает объект типа SignatureValidationInfo.
  136. В маршрутах в обработчике этапа “Регистрация” изменено поведение при невозможности обработки завершаемого задания. Теперь метод RegistrationStageTypeHandler.HandleTaskCompletionAsync возвращает значение StageHandlerResult.EmptyResult вместо создания исключения. Актуализируйте его использование в проектном решении.
  137. У обработчиков процессов IWorkflowEngineProcessor и IWorkflowEngineProcessorClient в методе SendAsyncSignalAsync изменён набор параметров. Теперь метод принимает объект запроса IWorkflowEngineProcessRequest, который позволяет более гибко настраивать отправку асинхронных запросов в процессы. Старый вариант метода SendAsyncSignalAsync вынесен как метод-расширение и доступен в пространстве имён Tessa.Workflow.
  138. В web-клиенте у обработчика процессов IWorkflowEngineProcessorClient в методе sendAsyncSignalAsync изменён набор параметров. Теперь метод принимает объект запроса IWorkflowEngineProcessRequest, который позволяет более гибко настраивать отправку асинхронных запросов в процессы.
  139. Удалён класс WorkflowEngineProcessStorageRequest, который представлял из себя Storage-версию объекта IWorkflowEngineProcessRequest. Используйте вместо него WorkflowEngineProcessRequest, который теперь реализует интерфейс IStorageSerializable.
  140. Все объекты скоупов (scope instance, такие как IInheritableScopeInstance<T> и IScopeContextInstance<T>) теперь реализуют IAsyncDisposable и не реализуют IDisposable. Так, для выполнения кода в сессии пользователя вместо using (SessionContext.Create(...)) используйте конструкцию await using (ранее были допустимы обе конструкции).
  141. Изменена сигнатура метода для получения карточки передаваемого по ключу PlaceholderHelper.CardFuncAsyncKey для использования в методе расширения для плейсхолдеров PlaceholderExtensions.TryGetCardAsync. Теперь вместо сигнатуры Func<IPlaceholderContext, ValueTask<Card>> функция имеет сигнатуру Func<CancellationToken, ValueTask<Card>>. Актуализируйте места использования в проектном решении.
  142. В TessaClient изменено поведение делегата CreateDialogFormFuncAsync. Теперь при его вызове без указания параметра typeFilter модель будет строиться только на основании типа диалога, который будет найден по имени, переданному в параметре dialogName. Если в форме диалоге необходимо использовать ещё и типы файлов, то в качестве параметра фильтрации можно передать DialogFormInvoker.FilterDialogWithFiles, а если необходимо использовать и типы заданий, то DialogFormInvoker.FilterDialogWithFilesAndTasks.
  143. В web-клиент в функцию createDialogForm добавлен необязательный параметр typeFilter, с помощью которого можно отфильтровать типы, которые будут учитываться при создании модели диалога. Ранее фильтрация осуществлялась по имени диалога, а также добавлялись все типы заданий и файлов.
  144. Изменён конструктор DbManager(IDataProvider, DbConnection). По умолчанию переданное соединение закрывается при освобождении DbManager, ранее оно оставалось открытым. Изменить поведение можно через опциональный параметр bool leaveOpen = false.
  145. Метод ICardGetStrategy.TryLoadTaskHistoryItemAsync не добавляет загруженную запись в карточку Card, которая более не передаётся параметром. Добавьте её вручную card.TaskHistory.Add(item), если результат метода item не равен null.
  146. Для разработки расширений web-клиента установите последнюю версию Node.js из линейки версий 18.x. Удалите подпапку node_modules из папки WebClient SDK проектного репозитория, если локально выполнялась сборка расширений с предыдущей версией Node.js.
  147. Для классов расширений web-клиента, которые регистрируются методом IExtensionContainer.registerExtension, добавьте аннотацию @extension().
  148. В web-клиенте у контрола ViewControlViewModel изменены свойства bottomItems и topItems, определяющие элементы управления на тулбарах контрола “Представление”. Теперь данные свойства принимают объекты с типом IViewControlToolbarItem, в которых помимо самого объекта можно задать: поле align, определяющее, будет ли контрол отображаться на левой части тулбара, по центру или на правой; а также необязательное поле settings, позволяющее определить настройки группы тулбара, в котором будет отображаться объект. В общем случае необходимо заменить вызовы вида ViewControlViewModel.bottomItems.push(item) на ViewControlViewModel.bottomItems.push(new ViewControlToolbarItem(item, align)), где align определяет, на какой части тулбара он должен отображаться.
  149. В web-клиенте у контрола ViewControlViewModel удалены неиспользуемые свойства rightItems и leftItems.
  150. Удалены параметры и свойства ServiceType для определения принадлежности сессии к web-клиенту или desktop-клиенту, а также удалены методы-расширения session.IsWebClient(), session.IsDesktopClient(), session.IsNotWebOrDesktopClient(). Используйте идентификатор приложения ISession.ApplicationID для такого разделения: значение ApplicationIdentifiers.WebClient соответствует web-клиенту, значение ApplicationIdentifiers.TessaClient - приложению TessaClient и т.п.
  151. Удалено перечисление ApplicationLicenseType, передаваемое в методы открытия сессии для ISessionServer и ILoginService. Используйте параметр consumeClientLicense или свойство ISessionLoginContext.ConsumeClientLicense, где значение true указывает, что открываемая сессия потребляет конкурентную или персональную клиентскую лицензию. Для уже открытой сессии эта информация по-прежнему доступна в свойстве ISessionToken.LicenseType с указанием потребляемой лицензии (отсутствует, конкурентная, персональная).
  152. В объекте IConditionRepairManager изменена сигнатура всех методов. Теперь в них можно передать параметром настройки исправления структуры карточки ICardRepairOptions.
  153. В объект ICardRepairManager изменена сигнатура метода RepairAsync. Теперь вместо отдельных параметров, отвечающих за режим создания карточки и необходимость уведомления об измененных полях, передается объект ICardRepairOptions.
  154. Обработчики OnlyOfficeDocumentBuilderConverter и OnlyOfficeServiceConverter, ответственные за преобразование файла в формат pdf были переименованы в OnlyOfficeDocumentBuilderWorker и OnlyOfficeServiceWorker.
  155. Все классы обработчиков по конвертации файлов (наследники FileConverterWorker) были перемещены в пространство имён Tessa.Extensions.Default.Chronos.FileConverters.Workers.
  156. Контроллер REST API для работы с сессиями перенесён по маршруту api/v2/sessions. Его POST-запрос open изменён: теперь он всегда возвращает токен сессии в формате JSON со всеми полями, кроме подписи, а аутентификационный токен в формате XML с подписью возвращается в заголовке Tessa-Session. Также были добавлены следующие GET-методы: метод open для открытия сессии и метод, доступный по базовому пути контроллера, который возвращает токен текущей сессии в формате JSON со всеми полями, кроме подписи.
  157. Из объекта OpenSessionRequest были удалены поля EncodeBase64 (т.к. теперь логин и пароль всегда кодируются в base-64) и AuthOnlyToken (т.к. теперь POST-запрос open по маршруту api/v2/sessions всегда возвращает токен со всеми полями, кроме подписи).
  158. Удалены методы-расширения класса XElement: PluginAttribute и PluginElement. Рекомендуется использовать методы-расширения AttributeByLocalName и ElementByLocalName соответственно из пространства имён Tessa.Platform.Xml.
  159. Интерфейс IRoleTypePermissionsManager переименован в ICardTypePermissionsManager. Его реализации RoleTypePermissionManager и KrRoleTypePermissionManager были переименованы в CardTypePermissionManager и KrCardTypePermissionManager. Используйте ICardTypePermissionsManager, если необходимо проверить, включён ли заданный тип карточки в типовое решение.
  160. В desktop-клиенте для изменения значения свойства ICardModel.Digest используйте метод SetDigestAsync.
  161. Логика обработки операций по конвертации файлов перенесена из Tessa.Extensions.Default.Chronos.FileConverters.FileConverterOperationService в Tessa.Extensions.Default.Server.FileConverters.FileConverterOperationProcessor (реализация интерфейса IFileConverterOperationProcessor). Обработчики были перенесены из Tessa.Extensions.Default.Chronos.FileConverters.Workers в Tessa.Extensions.Default.Server.FileConverters.Workers.
  162. В интерфейсе IFileConverterCache аргумент string contentFilePath заменён на IFileContent fileContent.
  163. В интерфейсе IFileConverterContext свойства InputFilePath и OutputFilePath заменены на GetInputContentAsync и GetOutputContentAsync. Свойство GetOutputContentAsync может быть переопределено, для модификации результата конвертации файла, который будет размещён в карточке кэша. Также в контекст добавлено свойство FinalizationQueue - очередь из методов обратного вызова, которые вызываются при завершении обработки операции конвертации файла.
  164. В web-клиенте у редактора карточек ICardEditorModel удалён нижний тулбар и соответствующее ему свойство bottomToolbar. Кнопки диалогов, настроенных в конструкторе процессов и маршрутах, у которых указан тип “Кнопка нижнего тулбара”, в web-клиенте теперь отображаются на верхнем тулбаре.
  165. Для вывода логотипа в консольных командах замените вызов ConsoleAppHelper.WriteLogo(stdOut) на await ConsoleAppHelper.WriteLogoAsync(stdOut).
  166. У метода создания контекста для проверки прав доступа IKrPermissionsManager.TryCreateContextAsync изменился тип результата. Теперь вместо объекта контекста IKrPermissionsManagerContext метод возвращает результат построения контекста KrPermissionsCreateContextResult, который содержит созданный объект контекста (если он был успешно создан), статус создания контекста, показывающий, был ли он создан успешно, возникла ли при его создании ошибка или проверка прав не требуется, а также объект ValidationResult с ошибкой создания контекста.
  167. В менеджер отправки ознакомления IKrAcquaintanceManager добавлен новый параметр usePlaceholders, который определяет, что при формировании комментария в нём должны быть заменены плейсхолдеры. По умолчанию параметр имеет значение false, поэтому если при использовании массовой отправки ознакомления через данное API в комментарии на ознакомление используются плейсхолдеры, то в него следует передавать true.
  168. В методы RemoteFileContent.FromFilePathAsync и RemoteFileContent.FromContentAsync добавлен параметр updateSize, позволяющий обновить размер созданного контента сразу после создания. В методе RemoteFileContent.FromStreamAndSizeAsync размер контента теперь устанавливается сразу при создании.
  169. Обновлена версия библиотеки NUnit, применяемой для автоматизированного тестирования. Обратитесь к руководству по миграции на новую версию на официальном сайте библиотеки.
  170. Для предотвращения кэширования ответов на запросы на создание файлов с клиента установите ключ context.Info[CardHelper.SkipNewFileResponseCachingKey] = true в методе CardNewExtension.BeforeRequest. В противном случае повторные запросы на создание файла того же типа не отправляются на сервер, а возвращается копия ответа на запрос CardNewResponse из клиентского кэша. Для стандартных типов файлов (с алиасами File, TemplateFile) отсутствуют серверные расширения CardNewExtension и какая-либо логика по инициализации структуры файла в рамках запроса CardNewRequest, поэтому применяйте флаг только при наличии таких расширений на сервере в проектном решении (клиентские расширения всегда выполняются). Актуально для любых клиентских приложений (web-клиент, desktop-клиент, консольные утилиты).

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

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

    • Administrator

    • User

      • Добавлены узлы “Временные зоны”, “Календари”, “Режимы распознавания”, “Режимы сегментации страницы изображения”, “Типы двухфакторной аутентификации”, “Форматирование дат и чисел”, “Функциональные роли”, “Языки” в режиме отбора.

      • Добавлены параметры с функциональными ролями для представлений по заданиям.

      • Изменены параметры для узлов в папке “Отчёты”.

      • Из отчёта “Завершённые задания” удалена вкладка “По вариантам завершения”.

      • Добавлена папка “Теги”.

      • У detail-представлений “Связанные документы” скрыты иконка и текст заголовка.

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

    • AccessLevels

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

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

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

    • AcquaintanceHistory

    • AcquaintanceStates

    • ActionHistory

    • ActionHistoryTypes

    • ActionTypes

    • ActiveWorkflows

    • ApplicationArchitectures

    • ApplicationNames

    • Applications

    • AvailableApplications

    • AvailableDeputyRoles

    • AvailableDeputyUsers

    • BarcodeTypes

    • BusinessProcessTemplates

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

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

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

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

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

    • Cars

    • CompletedTasks

    • CompletionOptionCards

    • CompletionOptions

    • ConditionTypes

    • ConditionUsePlaces

    • ContractsDocuments

    • CreateFileFromTemplate

    • Currencies

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

    • Deleted

    • Departments

    • DeputiesManagement

    • DeviceTypes

    • DialogButtonTypes

    • DialogCardAutoOpenModes

    • DialogCardStoreModes

    • DocumentCategories

    • Documents

    • DocumentTypes

    • DurableRoles

    • EdsManagers

    • EmittedTasks

    • Errors

    • ErrorWorkflows

    • FileCategoriesAll

    • FileCategoriesFiltered

    • FileConverterTypes

    • FileTemplates

    • FileTemplateTemplateTypes

    • FileTemplateTypes

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

    • FunctionRoleCards

    • GetCardIDView

    • GetFileNameView

    • Groups

    • GroupsWithHierarchy

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

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

    • Hierarchy

    • 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 (переименовано из KrPermissionsFileAccessSettings)

    • KrPermissionsMandatoryValidationTypes

    • KrPermissionsReport

    • KrPermissionStates

    • KrPermissionTypes

    • KrProcessManagementStageTypeModes

    • KrRouteModes

    • KrSecondaryProcesses

    • KrSecondaryProcessModes

    • 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

    • Partitions

    • Partners

    • PartnersContacts

    • PartnersTypes

    • ProtocolCompletedTasks

    • ProtocolReportsWithPhoto

    • Protocols

    • RefDocumentsLookup

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

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

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

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

    • ReportCurrentTasksByDepartment

    • ReportCurrentTasksByDepUnpivoted

    • ReportCurrentTasksByUser

    • ReportCurrentTasksRules

    • ReportDocumentsByType

    • ReportPastTasksByCompletionOption (удалено)

    • ReportPastTasksByDepartment

    • ReportPastTasksByUser

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

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

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

    • RoleGenerators

    • Roles

    • RoleTypes

    • Sequences

    • Sessions

    • SessionServiceTypes (удалено)

    • SignatureDigestAlgos

    • SignatureEncryptionAlgos

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

    • SignaturePackagings

    • SignatureProfiles

    • SignatureTypes

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

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

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

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

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

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

    • TaskHistory

    • TaskHistoryGroupTypes

    • TaskKinds

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

    • TaskTypes

    • Templates

    • TileSizes

    • TimeZones

    • TopicParticipants

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

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

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

    • Types

    • Users

    • VatTypes

    • ViewFiles

    • Views

    • WebApplications

    • WeTaskControlTypes

    • WeTaskGroupActionOptionTypes

    • WfResolutionAuthors

    • WorkflowEngineCompiledBaseTypes

    • WorkflowEngineErrors

    • WorkflowEngineLogLevels

    • WorkflowEngineLogs

    • WorkflowEngineTaskActions

    • WorkflowEngineTileManagerExtensions

    • WorkflowLinkModes

    • WorkflowNodeInstanceSubprocesses

    • WorkflowNodeInstanceTasks

    • WorkflowSignalProcessingModes

    • WorkflowSignalTypes

    • Workplaces

  3. Таблицы:

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

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

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

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

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

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

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

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

    • ActionHistory

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

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

    • ActionTypes

    • ApplicationNames

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

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

    • BusinessProcessCardTypes

    • BusinessProcessInfo

    • BusinessProcessVersions

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

    • CalendarExclusions

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

    • CalendarQuants

    • CalendarSettings

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

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

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

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

    • CompletionOptions

    • ConditionsVirtual

    • ConditionTypes

    • ConditionTypesBuildOutput (удалена)

    • ConditionUsePlaces

    • Configuration

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

    • DefaultTimeZone

    • Deleted

    • DeletedTaskRoles

    • DocLoadSettings

    • DocumentCommonInfo

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

    • Files

    • FileTemplates

    • FmAddTopicInfoVirtual (удалена)

    • FmAttachments

    • FmMessages

    • FmMessageTypes (переименована из FmMessagesTypes)

    • FmTopicParticipantRolesUnsubscribed

    • FmTopicParticipantsInfoVirtual (удалена)

    • FmTopicParticipantsVirtual (удалена)

    • FmTopicRoleParticipantsInfoVirtual (удалена)

    • FmTopics

    • FmUserStat

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

    • FunctionRoles

    • FunctionRolesVirtual

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

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

    • Instances

    • KrAdditionalApprovalTaskInfo

    • KrApprovalHistory

    • KrAutoApproveHistory (переименована из AutoApproveHistory)

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

    • KrBuildLocalOutputVirtual (переименована из KrStageBuildOutputVirtual)

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

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

    • KrDialogStageTypeSettingsVirtual

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

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

    • KrPermissionExtendedFileRules

    • KrPermissionExtendedTaskRuleTypes

    • KrPermissions

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

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

    • KrPermissionsFileReadAccessSettings (переименована из KrPermissionsFileAccessSettings)

    • KrPermissionsSystem

    • KrPermissionStates

    • KrRequestComment

    • KrResolutionActionVirtual

    • KrResolutionSettingsVirtual

    • KrSettings

    • KrSettingsCycleGroupingStates

    • KrStageBuildOutput (удалена)

    • KrStageDocStates

    • KrStages

    • KrTaskCommentVirtual (удалена)

    • KrTaskTypeConditionSettings

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

    • KrUniversalTaskActionButtonsVirtual

    • KrUniversalTaskOptionsSettingsVirtual

    • KrUniversalTaskSettingsVirtual

    • KrVirtualFileCardTypes

    • KrVirtualFileStates

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

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

    • KrWeRolesVirtual

    • Languages

    • LocalizationEntries

    • LocalizationLibraries

    • LocalizationStrings

    • LoginTypes

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

    • NotificationSubscriptions

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Operations

    • OperationStates

    • OperationsVirtual

    • OperationTypes

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

    • PersonalRoles

    • PersonalRoleSatellite

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

    • PersonalRolesVirtual

    • PlaceholderCompilationCache (удалена)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • RoleDeputies

    • RoleDeputiesManagementUsers

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

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

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

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

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

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

    • RoleDeputiesVirtual (удалена)

    • RoleGenerators

    • Roles

    • RoleTypes

    • RoleUsers

    • Scheme

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

    • SequencesInfo

    • ServerInstances

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

    • Sessions

    • SessionServiceTypes (удалена)

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

    • SignatureSettings

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • TaskHistory

    • TaskHistoryGroups

    • Tasks

    • TEST_CarMainInfo

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

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

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

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

    • Types

    • UserSettingsVirtual

    • WebApplications

    • WeDialogAction

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

    • WeTaskActionDialogs

    • WeTimerAction

    • WeTimerControlAction

    • WfResolutions

    • WfResolutionsVirtual

    • WorkflowEngineNodes

    • WorkflowEngineProcesses

    • WorkflowEngineProcessesLocks (удалена)

    • WorkflowEngineTimerSubscriptions

    • WorkflowLinks

  4. Процедуры:

    • CalendarGetDefaultPeriodInfo (удалена)

    • CalendarGetExclusionPeriodInfo (удалена)

    • CalendarGetPeriodInfo (удалена)

    • CalendarGetQuantType (удалена)

    • CalendarPrepareQuants (удалена)

    • CheckProcessLock (удалена)

    • KrPermissionsObtainReadersLock (удалена)

    • KrPermissionsObtainWritersLock (удалена)

    • ObtainProcessLock (удалена)

  5. Функции:

    • CalendarAddWorkingDaysToDate

    • CalendarAddWorkingDaysToDateExact

    • CalendarAddWorkQuants

    • CalendarGetDateDiff

    • CalendarGetFirstQuantStart

    • CalendarGetLastQuantEnd

    • CalendarGetLastQuantStart

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

    • CalendarIsWorkTime

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

    • DropFunction

    • FormatAmount

    • GetAggregateRoleUsers

    • GetString

    • Localization

    • Localize

  6. Миграции:

    • ForumSearchMessages

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

    • Platform

  7. Библиотеки схемы:

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

    • Default

    • FullTextSearch

    • Standard solution

    • Workflow

  8. Типы:

    • AccountUserSettings

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

    • ActionHistoryRecord

    • AdSync

    • Application

    • BusinessProcessTemplate

    • Calendar

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

    • Car

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

    • ConditionsBase

    • ConditionType

    • ContextRole

    • Contract

    • CreateFileFromTemplate

    • Currency

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

    • Deleted

    • DepartmentRole

    • Dialogs

    • DocLoad

    • DocStateCondition

    • DocTypeCondition

    • Document

    • DynamicRole

    • Error

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

    • FileConverterCache

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

    • FileSatellite

    • FileTemplate

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

    • FunctionRole

    • GeneralUserSettings

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

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

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

    • Incoming

    • KrAcquaintanceAction

    • KrAcquaintanceStageTypeSettings

    • KrAddFileFromTemplateStageTypeSettings

    • KrAdditionalApproval

    • KrApprovalAction

    • KrApprovalStageTypeSettings

    • KrApprove

    • KrAuthorSettings

    • KrCard

    • KrChangeStateStageTypeSettings

    • KrCheckStateWorkflowTileExtension

    • KrCreateCardStageTypeSettings

    • KrDialogStageTypeSettings

    • KrDocType

    • KrEdit

    • KrEditInterject

    • KrEditStageTypeSettings

    • KrForkManagementStageTypeSettings

    • KrForkStageTypeSettings

    • KrHistoryManagementStageTypeSettings

    • KrInfoForInitiator

    • KrNotificationStageTypeSettings

    • KrPerformersSettings

    • KrPermissions

    • KrProcessManagementStageTypeSettings

    • KrRegistration

    • KrRegistrationStageTypeSettings

    • KrRequestComment

    • KrResolutionAction

    • KrResolutionStageTypeSettings

    • KrSecondaryProcess

    • KrSettings

    • KrShowDialog

    • KrSigning

    • KrSigningAction

    • KrSigningStageTypeSettings

    • KrStageCommonMethod

    • KrStageGroup

    • KrStageTemplate

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

    • KrTaskKindSettings

    • KrTemplateCard

    • KrTypedTaskStageTypeSettings

    • KrUniversalTaskAction

    • KrUniversalTaskStageTypeSettings

    • KrUserSettings

    • KrVirtualFile

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

    • License

    • MetadataEditor

    • Metarole

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

    • NotificationUserSettings

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

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

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

    • OnlyOfficeSettings

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

    • Operation

    • Outgoing

    • Partner

    • PersonalizationUserSettings

    • PersonalRole

    • PersonalRoleSatellite

    • Protocol

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

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

    • RoleDeputiesManagement

    • RoleGenerator

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

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

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

    • Sequence

    • ServerInstance

    • ShowDialog

    • SignatureSettings

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

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

    • StaticRole

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

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

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

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

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

    • TaskRole

    • TaskTypeCondition

    • Template

    • TestTask1

    • TestTask2

    • TileUserSettings

    • TimeZones

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

    • TopicTabs

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

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

    • ViewExtensions

    • WebApplication

    • WfResolution

    • WfResolutionProject

    • WfTaskCard

    • WorkflowCheckRolesForExecutionTileExtension

    • WorkflowDialogAction

    • WorkflowEngineSettings

    • WorkflowNotificationAction

    • WorkflowProcess

    • WorkflowTaskAction

    • WorkflowTaskGroupAction

    • WorkflowTimerControlAction

  9. Карточки:

    • Acquaintance (необязательное изменение)

    • Aggregate roles

    • All employees

    • All states(добавлена)

    • ApprovalHistory

    • Assigned to me

    • Author of document(необязательное изменение)

    • AuthorCondition

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

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

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

    • Computed performers(необязательное изменение)

    • Continuous document load (settings) (необязательное изменение)

    • Creator of card(необязательное изменение)

    • Default access rules

    • Default acquaintance access rule

    • DefaultCalendar (переименована из Calendar (settings))

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

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

    • DepartmentCondition

    • DocStateCondition

    • DocTypeCondition

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

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

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

    • Format settings/en(добавлена)

    • Format settings/ru(добавлена)

    • ForumNewMessagesNotification

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

    • Initiator (необязательное изменение)

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

    • OCR_PageSegmentation.ru (добавлена)

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

    • PartnerCondition

    • PrintableApprovalHistory

    • Protocol of the meeting (Excel)

    • Protocol of the meeting

    • RebuildButton

    • Registrator of document(необязательное изменение)

    • Registrators (необязательное изменение)

    • ReturnForAmendingTemplate (необязательное изменение)

    • RouteCondition

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

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

    • SendProtocolTasksButton

    • Server settings (settings) (необязательное изменение)

    • Signature settings (settings) (необязательное изменение)

    • Standard solution(необязательное изменение)

    • Supervisor of initiator(необязательное изменение)

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

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

    • TasksNotification

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

    • TaskTypeCondition

    • Text recognition settings (settings) (добавлена)

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

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

    • WfChildResolutionNotification

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

Back to top