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

Версия 2.6 (29.04.2018)

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

  1. Изменены рабочие места: Administrator, User.
  2. Изменены все представления в связи с поддержкой PostgreSQL. Рекомендуем взять представления из этой сборки, и заново поменять те из них, которые были изменены в проектном решении. При этом некоторые представления были удалены, и некоторые добавлены, поэтому проверять лучше всего через сравнение файловых папок с выгруженными представлениями.
  3. Изменены типы карточек: AdSync (добавлен), Contract (строка локализации “Тип документа”, поле “Контрагент”), Currency (поле “Код валюты”), DepartmentRole, Document (строка локализации “Тип документа”), DynamicRole (добавлено поле “Последний успешный расчёт”), Incoming (строка локализации “Тип документа”, поле “Контрагент”), KrApprovalStageTypeSettings (добавлен), KrCard, KrChangeStateStageTypeSettings (добавлен), KrCreateCardStageTypeSettings (добавлен), KrEditStageTypeSettings (добавлен), KrPerformersSettings (добавлен), KrProcessButton (добавлен), KrResolutionStageTypeSettings (добавлен), KrSatellite, KrSecondarySatellite (добавлен), KrRebuild (удалён), KrReject (удалён), KrRegistration (добавлен), KrSettings, KrStageGroup (добавлен), KrStageTemplate, KrTransitionStageTypeSettings (добавлен), Outgoing (строка локализации “Тип документа”, поле “Контрагент”), PersonalRole, RoleGenerator (добавлено поле “Последний успешный расчёт”), StaticRole, WfTaskCard (строка локализации “Тип документа”).
  4. Изменены карточки: Active Directory Sync (settings) (добавлена), Aggregate roles, All employees, ApprovalGroup (добавлена), Author of document, Creator of card, Default access rules (замените, только если вы используете права по умолчанию, обычно на тестовых серверах), DeregisterButton (добавлена), DeregisterGroup (добавлена), DeregisterTemplate (добавлена), EditTemplate (добавлена), EUR, Initiator of approval, RegisterButton (добавлена), RegisterGroup (добавлена), RegistrationTemplate (добавлена), Registrator of document, RUB, Standard solution (settings) (необязательное изменение), StartProcessButton (добавлена), USD.
  5. Изменения во множестве объектов схемы данных. Если схема проектного решения была в отдельных библиотеках и не затрагивала файлы типовой схемы, то достаточно скопировать папки с библиотеками в Partitions (как обычно). Если же были изменения в типовых объектах, то рекомендуется выполнить слияние средствами репозитория. При этом таблицы (и другие объекты) основной схемы и библиотеки Standard solution взять из сборки, и затем вручную выполнить изменения, связанные с проектным решением. Список изменений проще получить, показав в репозитории разницу между объектами схемы из предыдущей типовой сборки (из которой выполняется миграция, например, 2.5.3) и теми объектами, которые содержатся в проектном решении (и уже есть в репозитории). Получив список изменений, их можно вручную внести в xml-файлы из новой сборки. Следует учитывать изменившийся формат именования xml-элементов (см. ниже).
  6. Изменён формат хранения объектов схемы. Префиксы Tessa*** в именах xml-элементов заменены на Scheme***. Объекты с запросами (функции, процедуры, миграции) хранятся в нескольких файлах вместо одного. Все объекты схемы всегда хранятся в виде файлов и не достраиваются при открытии (актуально для системных таблиц).
  7. Изменены библиотеки локализации.
  8. В текущей версии платформы отключена функциональность доп. согласования в заданиях согласования. Если в решении уже существуют запущенные или настроенные в этапах задания доп. согласования, то данные по ним будут утеряны при обновлении на эту сборку. Функциональность доп. согласования и миграция данных будут восстановлены в следующих сборках, обновления на такие сборки со сборки 2.6 будут упрощены.
  9. В текущей версии платформы отключена функциональность отзыва процесса, отмены процесса, возврата на доработку (инициатору), а также регистрации документа при активном процессе. Функциональность будет восстановлена в следующих сборках и начнёт работать как для процессов, запущенных в 2.6, так и для процессов, которые были мигрированы в 2.6.
  10. Обновите хост Chronos.exe. Версия Chronos увеличена до 2.6.0.
  11. Обновите конфигурационные файлы app.json в папке веб-сервисов и в папке Chronos. В файле app.json из Chronos теперь по умолчанию указан путь к LibreOffice 6. Если у вас LibreOffice 5 или другой версии, то измените путь в app.json.
  12. Если в типах карточек вы использовали стандартную строку локализации “Тип документа” (“$CardTypes_Controls_Document type”), то замените её на строку без пробела: “$CardTypes_Controls_DocumentType”.
  13. В проекте расширений Tessa.Extensions.Chronos обновите файл extensions.xml.
  14. Убедитесь, что в ваших скриптах, использующих tadmin.exe, команда CheckDatabase выполняется без аргумента /db. Если аргумент присутствует, то удалите его.
  15. Скрипты из папки Fixes, имеющие суффикс “.ms”, должны запускаться только на Microsoft SQL Server. Скрипты с суффиксом “.pg” запускаются только на PostgreSQL.
  16. Перед обновлением схемы выполните скрипт Fixes/Migration-2.6-pre.ms.sql.
  17. После обновления схемы выполните скрипт Fixes/Migration-2.6.ms.sql.
  18. Переход на сборку 2.6 поддерживается, начиная со сборки 1.21.1. Если у вас более ранняя сборка, то сначала необходимо перейти на одну из предыдущих сборок 1.21.1 или 2.x, и затем уже на 2.6. Из папки Fixes были удалены скрипты и миграции, актуальные для перехода с ранних сборок на сборку 1.21.1.
  19. Если в проектных расширениях вы используете процессы Workflow API, которые получают и обрабатывают сигналы IWorkflowSignal, то определите метод CanHandleQueueItem в вашем расширении-наследнике WorkflowStoreExtension, который возвращает true для сигналов с типами подпроцессов, которые допустимы для ваших процессов. Пример см. в расширении TestWorkflowStoreExtension. Также при отправке сигнала свойство ProcessTypeName теперь является обязательным, даже если сигнал отправляется на экземпляр подпроцесса с заданным идентификатором.
  20. В проектных расширениях, использующих диалоги с кнопками UIButton, в конструкторе кнопки теперь указывается делегат Action<UIButton>, в параметр которого передаётся этот же объект кнопки. Для закрытия диалога вместо возвращаемого значения true используйте вызов метода button.Close() (где button - параметр делегата). Делегат может быть асинхронным с конструкциями async/await.
  21. В проектных расширениях рекомендуется заменить совместные вызовы методов unityContainer.IsRegistered<T>() + unityContainer.Resolve<T> на один вызов unityContainer.TryResolve<T>(), который возвращает null (default(T)), если зависимость не была зарегистрирована. Вызов метода TryResolve<T>() значительно более производительный. В параметр метода опционально передаётся строковое имя зависимости.
  22. По умолчанию утилита tadmin.exe для большинства команд выполняет подробный вывод всех сообщений на консоль, в т.ч. не являющихся ошибками. Чтобы включить прежнее поведение по умолчанию - “тихий режим”, при котором на консоль выводятся только ошибки, используйте ключ /q.

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

  1. Добавлена поддержка PostgreSQL в качестве СУБД. Информация по настройке новой инсталляции и по миграции существующей БД доступна в руководстве по установке и в руководстве администратора.
  2. Процесс согласования расширен до процесса маршрутов с возможностью задавать этапы различных типов (согласование, исполнение, подписание, регистрация, редактирование, смена состояния документа и др.), разделять процесс на группы этапов, связывать ход процесса с произвольными состояниями документов без написания расширений, добавлять кнопки, создающие документ и запускающие по нему процесс, или запускающие второй процесс по уже существующему документу, и многое другое. Подробнее с новыми возможностями можно ознакомиться в руководствах пользователя и администратора.
  3. В контроле “Список” добавлена кнопка для быстрого выбора нескольких значений, отображаемая в диалоге выбора по троеточию. Кнопка функционирует и в desktop-клиенте, и в web-клиенте.
  4. В приложении TessaClient добавлена “Светлая тема” интерфейса, подходящая для фоновых изображений светлых тонов, близких к белому. Поддержка темы для веб-клиента будет реализована в следующих сборках.
  5. В приложении TessaClient добавлена система расширений для тем интерфейса, позволяющая как изменять доступные по умолчанию темы, так и создавать собственные темы или добавлять ресурсы в темы, которые задействуются в клиентских расширениях UI. В подпапке “themes” могут содержаться темы в файлах *.json (путь к одной или нескольким папкам указан в файле TessaClient.exe.config, папки разделяются точкой с запятой), а также описание дополнительных ресурсов тем в файлах props*.json.
  6. Блоки карточки теперь можно свернуть/развернуть при клике по заголовку. В настройки блока добавлены настройки “Свёрнут по умолчанию” и “Не сворачивать с верхним блоком”. В контекстном меню, открываемом по правой кнопке в карточках, добавлены функции “Свернуть все блоки” и “Развернуть все блоки”.
  7. В web-клиенте добавлены: отображение горячих клавиш при наведении мыши на плитку, с которой связана горячая клавиша; плитка “Сохранить, закрыть и создать” на левой панели для созданных карточек; плитка “Создать” на правой панели для создания карточки таким же образом; удаление карточек из представлений; закрытие сессий из представления “Активные сессии”; открытие карточек и удаление действий в представлении “История действий”; восстановление и удаление карточек из представления “Удалённые карточки”.
  8. Добавлены шаблоны текстовых файлов .txt. Они аналогичны шаблонам .html, за исключением того, что не выполняется кодирование вставляемого текста. Изображения вставляются как массив байт, закодированный в форме строки Base64.
  9. Добавлен форматтер плейсхолдеров #align, позволяющий выполнять выравнивание строки, которая дополняется пробелами. Доступно выравнивание по левому краю #align(left=15), по правому краю #align(right=20) и по центру #align(center=30). Также добавлен форматтер #wrap, аналогичный #align, но способный разбивать на несколько строк текст, выводимый в ячейке таблицы для текстовых шаблонов .txt. Посредством этого форматтера выводятся таблицы в текстовых печатных формах, где ширина каждой колонки ограничена, а содержимое внутри ячеек не ограничено по размеру.
  10. В редакторе представлений в TessaAdmin улучшен ввод с автодополнением и всплывающие подсказки.
  11. При переключении между представлениями в TessaAdmin теперь сохраняется активная вкладка “Метаданные”, “Запрос” или “Описание”.
  12. В метаинформации представления добавлены параметры #view(ConnectionAlias: alias, TreatAsSingleQuery: false), позволяющие выполнить представление на другой базе данных по алиасу строки подключения app.json, указанной в конфигурационном файле. Описание параметров доступно в руководстве администратора.
  13. В редактор типов карточек TessaAdmin добавлены расширения типов: автоматическая очистка связанных полей и запрет редактирования колонки после первого сохранения.
  14. Добавлена поддержка индексов с фильтрацией, в т.ч. индексов, не включающих значения NULL. Информация по настройке в руководстве администратора.
  15. В типовом решении в карточках “Входящий”, “Исходящий” и “Договор” добавлена поддержка ручного ввода в поле “Контрагент”. Также в карточке настроек “Типовое решение” появилась настройка “Разрешить ручной ввод и автоматическое создание контрагентов”, которая позволяет включать и отключать новый функционал. Введённые вручную контрагенты будут автоматически созданы при сохранении документа, если отсутствует контрагент с тем же именем без учёта регистра.
  16. В типовом решении добавлено расширение рабочего места ManagerWorkplaceExtension и представление KrManagerTasks, которые могут использоваться для настройки рабочего места руководителя в виде “Список плиток + дочернее представление”. Представление KrManagerTasks используется как пример представления для отображения “Моих заданий”, разделённых по настроенным типам и видам задач. Описание настройки см. в руководстве администратора.
  17. Для административного представления “Подразделения” добавлено detail-представление со списком сотрудников в этом подразделении.
  18. Аутентификация в федеративном домене ADFS теперь связывает сотрудников Tessa и ADFS по логину из ADFS (настройка “LoginClaimType” в app.json), а не по email. Это позволяет сотруднику продолжить работать в системе под своей учётной записью, если у него поменялся email в домене. При этом для совместимости оставлено соответствие с email при входе сотрудников, уже созданных в системе. Также добавлена настройка “UpdateEmailLoginUsers”, для которой можно указать true, чтобы по мере входа существующих сотрудников, связанных с ADFS по email, для них устанавливалась бы связь по login.
  19. Добавлен командный файл Migrate.bat для миграции базы данных, в т.ч. для миграции с СУБД Microsoft SQL Server на PostgreSQL. Инструкция по миграции доступна в руководстве администратора.
  20. Добавлены скрипты Fixes/LocalizeEnglish.sql и Fixes/LocalizeRussian.sql, которые могут использоваться для локализации объектов установленного типового решения на английский и русский языки соответственно. Это актуально для тех объектов, которые не локализуются автоматически, например, для ролей “Все сотрудники” и др. Сразу после установки объекты уже локализованы на русском, поэтому для русского языка выполнять локализацию не требуется. Скрипт может выполняться на любой поддерживаемой СУБД.
  21. Хост-процесс Chronos, запущенный в консоли, теперь корректно останавливается при нажатии Ctrl+C (вместо ввода “stop”).
  22. Если для плагина Chronos отсутствует хотя бы один из конфигурационных файлов, на которые он ссылается, то хост-процесс не прекратит работу и запустит все остальные плагины, кроме плагина с отсутствующим конфигурационным файлом, информация по которому будет добавлена в лог process.txt. Это позволяет отключить некоторые плагины, удалив или переименовав их конфигурационные файлы в подпапке “configuration”.
  23. Улучшено логирование событий диспетчеризации в Chronos за счёт перехода на новую версию библиотеки Quartz.NET 3.0.4.
  24. Плагины Chronos, отключённые через конфигурационные файлы (атрибут disabled=”true”), теперь указываются в логе process.txt как отключённые в процессе поиска плагинов.
  25. В сборку платформы интегрирован плагин синхронизации с Active Directory и каталогами LDAP. Плагин выключен по умолчанию и требует приобретённого модуля лицензии. Настройки синхронизации, а также функция синхронизации вручную доступны в карточке настроек “Синхронизация с AD”. Описание настроек доступно в руководстве администратора.
  26. В карточку “Валюта” добавлено поле “Код валюты”. В карточках валют, поставляемых с типовым решением, в этом поле указаны трёхзначные числовые коды валют по стандарту ISO 4217.
  27. Информация о массовом ознакомлении с документом теперь также удаляется при удалении карточки.
  28. Ошибки расчёта динамических ролей и метаролей теперь записываются в реестр ошибок. Также в генераторах метаролей и динамических ролях добавлено поле с датой последнего успешного расчёта.
  29. Улучшены сообщения об ошибках компиляции в запросе представления, которые допустил инженер при написании запроса. Теперь выводится выражение, в котором возникла ошибка.
  30. Сообщения об ошибках теперь также отображают текстовые сообщения по вложенным исключениям, если они присутствуют.
  31. Утилита tadmin.exe: добавлена команда MigrateDatabase для переноса одной базы данных в другую пустую базу данных, в т.ч. между СУБД Microsoft SQL Server и PostgreSQL. После переноса из одной СУБД в другую требуется импортировать карточки динамических и контекстных ролей из Configuration\Cards. Пример такого импорта доступен в скрипте Migrate.bat.
  32. Утилита tadmin.exe: добавлена команда MigrateFiles для переноса содержимого файлов с одного местоположения в другое, в т.ч. между базами данных и файловыми папками.
  33. Утилита tadmin.exe: добавлена команда ImportUsers для импорта сотрудников из файлов xlsx или csv. Команда может выполняться периодически для добавления, изменения или удаления сотрудников, уже импортированных в систему. Формат содержимого файлов приведён в руководстве администратора.
  34. Утилита tadmin.exe: в команду CheckDatabase добавлен параметр /dbms, выводящий имя СУБД, к которой выполняется подключение: “ms” (для MSSQL), “pg” (для PostgreSQL) или пустая строка (СУБД неизвестна). Пример использования есть в скриптах Setup.bat, Update.bat и Migrate.bat.
  35. Утилита tadmin.exe: команда CheckDatabase теперь всегда проверяет соединение к серверу СУБД, без учёта прав доступа на конкретную базу данных, при этом параметр /db удалён для этой команды. Для MSSQL выполняется подключение к БД “master”, а для Posgre - к БД “postgre”.
  36. Утилита tadmin.exe: в команду CheckDatabase добавлен параметр /c, который выводит проверяемую строку подключения в окно консоли. Параметр учитывается при наличии ключа /q, т.к. при его отсутствии строка подключения всегда выводится. Строка подключения выводится в лог независимо от этой настройки.
  37. Утилита tadmin.exe: команда Select теперь выполняет скрипт со всеми запросами, разделённым строкой с ключевым словом GO, и возвращает результат последнего запроса.
  38. Утилита tadmin.exe: команды Sql и Select, для которых указано несколько выполняемых запросов (разделённых строкой GO), при выполнении каждого запроса “пробрасывают” результат этого запроса как параметр @Result в следующий запрос (если результата нет как Result Set, то пробрасывается количество изменённых строк или 0). Также при наличии в последующих командах спец. строки “@Result@” (без кавычек), она будет заменена на @Result предыдущего запроса (при замене отсутствует защита от SQL-инъекций). Если запрос начинается со строки “–NORESULT” (без кавычек), то параметр не пробрасывается, это актуально для запросов, создающих хранимые процедуры и функции, или имеющих внутри себя параметр с именем @Result.
  39. Утилита tadmin.exe: на консоль по умолчанию теперь выводятся все сообщения, в том числе не являющиеся ошибками. Используйте ключ /q, доступный для большинства команд, чтобы ограничить вывод только сообщениями об ошибках. Это не касается команд BuildVersion и GetToken.
  40. API: Добавлены асинхронные плагины, наследуемые от базового класса PluginAsync или реализующие интерфейс IPluginAsync. В таких плагинах разрешено использовать конструкцию async/await для асинхронного выполнения задач.
  41. API: Добавлены асинхронные методы RuntimeHelper.InvokeAsync() и InvokeAsync<T>(), выполняющие делегат на пуле потоков аналогично Task.Run(), но с пробрасыванием контекста текущего потока (с локализацией, сессией и другими параметрами, задействованными системой). Методы рекомендуется использовать в серверных расширениях, в плагинах Chronos и в консольных утилитах. В клиентских расширения для тех же задач есть аналогичные методы UIHelper.InvokeAsync<T>().
  42. API: Объект UIButton теперь принимает Action<UIButton> для выполнения действия по кнопке. В параметр делегата передаётся этот же объект кнопки. Если Action не задан, то окно будет закрыто после нажатия на кнопку, в противном случае окно закрывается только при вызове метода button.Close() для переданного параметра-кнопки (в то время как раньше требовалось вернуть return true). В заданном выражении Action<UIButton> можно выполнять асинхронные вызовы async/await, по завершении которых окно будет закрыто вызовом button.Close().
  43. API: Добавлены асинхронные методы ***Async для взаимодействия с операциями IOperationRepository. Используйте их на клиенте для неблокирующего вызова сервера из потока UI, например, await operationRepository.IsAliveAsync(operationID).
  44. API: Добавлены методы-расширения IUnityContainer.TryResolve<T>(). С точки зрения производительности рекомендуется использовать их вместо связки вызовов IsRegistered<T>() + Resolve<T>().
  45. API: В таблицах Files и FileVersions добавлены ссылка на внешний идентификатор LinkID и колонка Options с некоторыми сериализованными настройками. Их можно задействовать в расширениях, в т.ч. посредством объектов CardFile и CardFileVersion, или IFile и IFileVersion.
  46. API: Добавлена возможность настраивать пункты контекстного меню при клике правой кнопкой мыши на формах карточки (вкладки, диалоги, задания и др.). Для этого в расширении ICardUIExtension.Initialized добавьте в коллекцию IFormViewModel.ContextMenuGenerators делегат, который добавляет пункты контекстного меню context.MenuActions по аналогии с контекстным меню в истории заданий или в контроле “Таблица”. Если в коллекцию MenuActions не был добавлен ни один видимый пункт меню (IsCollapsed = false), то меню не будет отображено (клик правой кнопкой будет игнорироваться).
  47. API: Добавлено свойство UIContext.Tiles, которое заполняется после открытия вкладки, и предоставляет доступ к плиткам, инициализированным для вкладки (после выполнения расширений TileExtension.InitializingLocal). Для вкладок карточки это свойство не заполнено на момент выполнения расширений CardUIExtension.Initialized, но заполнено в расширениях CardUIExtension.ContextInitialized (см. ниже), на момент повторного открытия вкладки (CardUIExtension.Reopened) или в момент выполнения событий у контролов и секций (FieldChanged, RowInvoked).
  48. API: Добавлен метод расширения ICardUIExtension.ContextInitialized, выполняемый после инициализации плиток в свойстве context.UIContext.Tiles, что актуально при открытии вкладки и при повторном открытии карточки в пределах вкладки. В отличие от метода Initialized, этот метод не вызывается для карточек, которые не открываются во вкладке (например, в кастомизированных диалогах или при редактировании карточек в шаблоне). В остальном метод идентичен методу ICardUIExtension.Initialized, который по-прежнему рекомендуется использовать, если не требуется доступ к свойству UIContext.Tiles.
  49. API: Добавлена фильтрация сигналов для процессов Workflow API в методе WorkflowStoreExtension.CanHandleQueueItem. По умолчанию процесс не принимает сигналов, т.е. метод возвращает false. Метод требуется определить для любых процессов, использующих обработку сигналов.
  50. API: В контроле “Таблица” добавлено событие GridViewModel.RowEditorClosed, вызываемое после закрытия строки таблицы независимо от того, были ли изменения в такой строке сохранены пользователем. Событие рекомендуется использовать для выполнения очистки подписок и ресурсов, добавленных в событии GridViewModel.RowInitializing.
  51. API: Добавлен метод storeRequest.SetStartingProcessNextTask(CardTask), позволяющий указать при постановке задачи объект CardTask с секциями, которые будут использоваться для завершения постановки задачи в пределах той же транзакции на сервере. Используйте совместно с методом storeRequest.SetStartingProcessName(WfHelper.ResolutionProcessName). В объекте CardTask достаточно указать только поля секций, которые изменяются относительно полей по умолчанию. Задача завершается с вариантом “Отправить”, другой вариант можно указать в свойстве CardTask.OptionID.
  52. API: Улучшен вывод сообщений об ошибках, возникших в транзакции на загрузку или сохранение карточки. Теперь выводится полный стек-трейс для методов, в результате которых был вызван CardTransactionStrategy. Например, это позволяет узнать, из какого расширения AfterBeginTransaction или BeforeCommitTransaction было выполнено вложенное сохранение карточки или другой вызов CardTransactionStrategy, который привёл к ошибке.
  53. API: Обновлены библиотеки: BitMiracle.LibTiff.NET до 2.4.560.0, DocumentFormat.OpenXml 2.8.1, Linq2DB 2.0-beta4, Microsoft.Exchange.WebServices.NETStandard 1.1.2, Newtonsoft.Json 11.0.2 (встроен в Tessa.dll), NLog 4.5.3, Quartz.NET 3.0.4.

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

  1. В web-клиенте исправлено административное удаление зарезервированных номеров из карточки последовательности. Теперь такие удалённые номера возвращаются в диапазон доступных номеров.
  2. В web-клиенте исправлено добавление файла в карточку задания после того, как один из файлов был подписан ЭЦП.
  3. В web-клиенте настройки фильтрации теперь закрываются по Enter.
  4. В web-клиенте исправлен размер таблицы в карточке, в которую ещё не были добавлены строки.
  5. В web-клиенте исправлена простановка Digest для истории действий, связанной с карточкой задания.
  6. В web-клиенте запрещено добавление файла по шаблону в ещё не сохранённую карточку, т.к. такое поведение не поддерживается в файловых шаблонах.
  7. Исправлено асинхронное выполнение для некоторых из действий в TessaClient, чтобы не блокировался пользовательский интерфейс.
  8. Оптимизирован расчёт состава динамический ролей и метаролей, если в системе большое количество сотрудников (десятки тысяч).
  9. Исправлен двойной клик в представлении “Шаблоны” в TessaClient, когда соответствующая карточка шаблона уже открыта.
  10. При обновлении со сборки 2.2 или более ранней теперь не требуется использовать SchemeEditor от сборки 2.3 для обновления версии схемы данных в БД до актуального состояния. SchemeEditor 2.6 поддерживает обновление версии схемы данных в БД, начиная со сборки 1.21.1. Это не затрагивает автоматизированную миграцию скриптом Upgrade.bat, которая по-прежнему может выполняться со сборки 2.4 и более поздней. Также для требуется выполнить все соответствующие скрипты миграции до и после обновления схемы.
  11. Исправлено логирование сообщений об ошибках при взятии блокировки для расчёта динамических ролей и метаролей.
  12. Исправлен поиск по библиотекам локализаций, теперь он всегда не учитывает регистр вводимых символов.
  13. Исправлена строка локализации в контроле “Тип документа” для типов карточек Contract, Document, Incoming, Outgoing. Теперь в алиасе строки отсутствует пробел.
  14. Исправлено открытие карточек, в которых настройки маппинга для контролов “Список файлов”, “Список” и “Ссылка” были изменены в версии сборки раньше 2.5. Для этого была изменена валидация маппинга, которая не проверяет наличие некоторых ключей в настройках.
  15. Исправлена обработка ошибки, возникающей, если контрол “Дата и время” связан с полем в секциях карточки, в котором фактически (например, через расширение) было записано значение, отличное от типов DateTime и null. Ошибка приводила к падению приложения, теперь при возникновении ошибки в поле с датой выводится пустота, а ошибка записывается в лог.
  16. Исправлена подстановка значений в контроле “Ссылка”. Значение больше не подставляется, пока не будет подтверждено.
  17. Оптимизировано распределение потоков в процессах Chronos.
  18. Исправлены отчёты по завершённым заданиям, которые теперь определяют просроченность задания по дате завершения, а не по квантам календаря. Это позволило исправить несогласованность для агрегированного отчёта с количеством заданий по подразделениям и сотрудникам, и для списка завершённых заданий в таблице ниже.
  19. Исправлен метод API Card.EnsureCacheResolved() для карточек, содержащих файлы и задания.
  20. Исправлено отображение сохранённых представлений в TessaAdmin в случае, если одно из представлений не удалось сохранить из-за ошибки.
  21. В контроле “Нумератор” исправлено копирование номера через контекстное меню в ситуации, когда выбран заданный вручную номер.
  22. В параметрах фильтрации представлений исправлена вставка по Ctrl+V или Shift+Insert для значений ссылочного типа.
  23. В приложении Tessa Applications исправлена обработка невозможности прочитать зашифрованные логин или пароль из папки профиля пользователя. Приложение отобразит сообщение об ошибке и предложит ввести логин/пароль вручную.
  24. Исправлена редкая ошибка при переключении выбранной строки или ячейки в master-detail представлениях.
  25. В TessaAdmin исправлен диалог выбора цвета в контролах типов карточек таким образом, чтобы цвет вычислялся корректно, когда мышь с нажатой левой кнопкой выходит за область диаграммы выбора цвета.
  26. Конструктор ErrorFile с указанием контента как строки теперь использует кодировку Encoding.Default по умолчанию вместо UTF-8. В этом случае файлы корректно отображаются в предпросмотре файлов.
  27. Исправлена ситуация, когда ожидание await для некоторых перегрузок методов UIHelper.InvokeAsync, не возвращающих значений, завершалось неудачно с ошибкой “Задача была отменена”.
  28. Плагин FileConverterPlugin теперь допускает отсутствие настройки “OpenOfficePython” в конфигурационном файле app.json, при этом конвертация файлов, не связанных с LibreOffice/OpenOffice, будет успешно выполняться.
  29. Исправлено скрытие вкладки “Процесс согласование” через UI-расширение путём удаления из списка вкладок. Ошибка появилась в сборке 2.4.
  30. Улучшено логирование ситуаций при невозможности загрузить конфигурационный файл app.json, что особенно актуально на сервере, где его наличие обязательно для корректного функционирования.
  31. Исправлены ошибки при взаимодействии с некоторыми сканерами.
  32. Исправлена подсветка некоторых лексем в метаинформации представления.
  33. Исправлено экранирование символов при экспорте/импорте представлений и рабочих мест.
  34. Исправлено копирование содержимого файлов на сервере, если файлы расположены в базе данных и в строке подключения не включён MARS. Актуально для создания карточек с файлами по шаблону и для копирования карточек с файлами.
  35. Исправлена работа метода card.RemoveChanges() для коллекционных секций в API карточек.
  36. Логирование в Chronos теперь выполняется асинхронно, при этом гарантируется, что при вежливой остановке процессов все ожидающие записи будут сохранены в файл лога.
  37. В файл лога Chronos теперь выводятся ошибки при невозможности выполнить задание Quartz Job, которое запускает процесс плагина на выполнение.
  38. Исправлены проблемы при запуске Chronos из сетевой папки.
  39. Логирование в консольной утилите tadmin.exe теперь выполняется асинхронно.
  40. Исправлена ошибка формирования шаблонов документов Word/Excel при наличии во вставляемом тексте служебных нечитаемых символов, недопустимых в XML. Ошибка не относится к экранируемым символами &<> и др., вставка которых корректно выполнялась.
  41. При отправке на ознакомление без указанных ролей теперь отображается предупреждение, и окно отправки не закрывается. Это позволяет не потерять введённый комментарий, если пользователь забыл ввести группы или сотрудников для отправки.
  42. Исправлено одновременное удаление большого количества сотрудников при пересчёте состава динамических ролей или метаролей (несколько десятков тысяч).
  43. Исправлена редкая ошибка “Элемент с тем же ключом уже был добавлен” при обращении к свойству response.SectionRows при одновременных создании или загрузке карточки из множества потоков.
  44. Исправлены ошибки обработки сигналов Workflow API при наличии нескольких различных процессов Workflow API, обрабатываемых разными расширениями WorkflowStoreExtension.
  45. Исправлена возможность дважды выполнить действие плитки при двойной клике по плитке.
  46. Исправлена ошибка в контроле “Ссылка”, которая при вызове метода block.RearrangeSelf() на блоке, содержащем этот контрол, приводила к лишним обработкам события при последующем нажатии по кнопке выпадающего списка.
  47. Исправлены редкие ошибки при инициализации кэшей локализации и схемы данных.
  48. Приложение TessaAdmin теперь корректно обрабатывает невозможность загрузить схему данных, например, из-за ошибки в схеме данных на сервере. Такая ошибка теперь выводится на экран.
  49. Исправлена ошибка при удалении строк из невиртуальной коллекционной секции, если у неё есть дочерняя виртуальная секция.
  50. Исправлены методы API: IFileCollection.Remove(Guid) и RemoveAll(Guid).
  51. Исправлен алгоритм автоподстановки переводов строк в названиях плиток. Теперь перевод строки всегда вставляется ближе к середине строки.
  52. Исправлен плагин конвертации файлов т.о., что при необработанной ошибке в момент поиска запросов на конвертацию (когда, например, было прервано соединение с БД) работа плагина больше не завершается, и попытка поиска повторяется через некоторое время.
  53. Исправлена непреднамеренная очистка колонок в настройках контрола “Таблица”, если после добавления колонок открывается окно выбора секции таблицы и закрывается без смены секции, причём в качестве первой колонки таблицы выбрана комплексная колонка.
  54. Исправлено вырезание значения по Ctrl+X в контролах “Список” и “Ссылка” в тех случаях, когда указано значение не из справочника, которое считается некорректным.
  55. Исправлен экспорт карточек шаблонов этапов.
Back to top