Версия 3.3 (17.05.2019)¶
Добавление и изменение функциональности¶
- Добавлена поддержка бизнес-календарей в различных временных зонах. Настройки доступны в карточке настроек “Временные зоны” и описаны в руководстве администратора. Сроки задач по бизнес-календарю считаются в часовом поясе исполнителя. У каждого сотрудника и у каждой роли есть часовой пояс (для контекстных ролей он определяется в момент расчёта по часовому поясу сотрудника). По умолчанию все роли используют временную зону по умолчанию, которая равна UTC+03:00, её можно изменить при установке скриптом Setup.bat/setup.sh или позже через карточку настроек. Если в карточке или в представлении указан срок по календарю для исполнителя, часовой пояс которого отличается от текущего, то рядом со сроком в скобках указывается этот пояс, например: “до завершения 3 дня (UTC+4:00)”.
- Плагин синхронизации с Active Directory теперь функционирует на сервере Linux, а также при соединении с другими каталогами LDAP помимо Active Directory. Все связанные настройки переименованы с указанием “LDAP” в названии.
- В карточке настроек “Синхронизация с AD / LDAP” в блоке “Ручная синхронизация” добавлена кнопка “Запустить синхронизацию”, по которой можно отметить флажками типы объектов, для которых будет запущена синхронизация: сотрудники, подразделения и статические роли (группы).
- В модуле потокового сканирования добавлены настройки выравнивания штрих-кода и печати без заголовка. Плитка “Выбрать принтер” заменена на “Выбрать принтер и напечатать”.
- Добавлен флажок “Синхронизируется независимо от корневых элементов” в раздел Active Directory для карточек подразделения/сотрудника/статической роли. Флажок позволяет синхронизировать объект, который не входит в корень синхронизации, вместо его скрытия.
- Для заданий “Подписание” добавлены ссылки “Подписать” и “Отказать” в письмах мобильного согласования.
- В маршрутах для типов этапов добавлена настройка “Использовать дату выполнения”, позволяющая указывать в интерфейсе или в скриптах конкретную дату/время помимо срока в бизнес-днях. Она включена для типов этапов “Доработка”, “Настраиваемое задание”, “Регистрация”, “Согласование”, “Подписание”.
- В маршрутах добавлен тип этапа “Типизированное задание”. Он позволяет связывать с этапом маршрута любые типы заданий, настроенные в TessaAdmin. Список доступных типов заданий определяется в таблице на вкладке “Настройки этапов маршрута” в карточке настроек “Типовое решение”.
- В маршрутах для типа этапа “Настраиваемое задание” добавлено поле “Вид” для указания вида задания, позволяющего заменить отображаемое название задания.
- В маршрутах для варианта завершения в типе этапа “Настраиваемое задание” добавлено поле “Сообщение”, в котором можно вывести любой поясняющий текст для пользователей, выводимый в форме варианта завершения.
- В маршрутах изменён порядок колонок в таблице “Маршрут” на более оптимальный для шаблонов этапов и для вкладки “Маршрут” в документах.
- В TessaClient при поиске по таблицам карточки и по истории заданий искомый текст теперь выделяется жёлтым фоном.
- При выборе контрагента в любых карточках через кнопку с троеточием открывается окно выбора из справочника, в котором добавлена кнопка “Создать карточку” на панель пейджинга. При нажатии на такую кнопку открывается модальное окно с создаваемым контрагентом, которое можно закрыть по кнопке “Сохранить и выбрать”.
- В TessaAdmin добавлено расширение на узел дерева рабочего места RefSectionExtension, которое позволяет указать список значений RefSection и список алиасов параметров представлений, по которым будет отображаться или скрываться узел в режиме отбора (по троеточию из ссылочных контролов). Параметры используются для того, чтобы узел отображался при маппинге на один или несколько указанных параметров. Если расширение не используется, то задействуются настройки представлений, размещённых в узле. Также при отсутствии представлений, но при наличии любых расширений (например, расширение на узел с папкой) узел будет скрываться, если не указано его отображение с помощью RefSectionExtension, или при написании расширений кодом. Код расширения RefSectionExtension доступен в коде типового решения в классе Tessa.Extensions.Default.Client.Workplaces.RefSectionExtension.
- В TessaAdmin для расширения CreateCardExtension на создание карточки из узла рабочего места добавлена настройка “Алиас параметра представления для поиска по идентификатору строки”. Если указать алиас параметра представления, то при создании карточки в диалоговом окне появится кнопка “Сохранить и выбрать”, по которой карточка сохраняется, диалог закрывается, и далее карточка выбирается в контроле “Ссылка” или добавляется в контрол “Список”.
- В TessaAdmin для расширения CreateCardExtension на создание карточки из узла рабочего места добавлена настройка “Открытие созданной карточки” с указанием способа: “Во вкладке в главном окне” - это обычное создание карточки, выбрано по умолчанию; “В модальном диалоге” - карточка открывается в отдельном диалоговом окне. Настройка игнорируется в web-клиенте в текущей версии.
- При создании карточки с использованием кнопки в расширении представления CreateCardExtension вкладка с создаваемой карточкой будет открыта справа от выбранной вкладки с представлением.
- Изменена иконка для кнопки открытия вкладки с рабочим местом.
- В конфигурационном файле app.json для веб-сервисов добавлен раздел “WebServerLimits”, в котором перечислены настройки для ограничений веб-сервера Kestrel (такие как максимальное количество соединений или максимальный размер запроса). Не изменяйте настройки по умолчанию, если явно не выявлена проблема, которая исправляется изменением одного из ограничений. Описание настроек доступно в руководстве по установке в разделе “Настройка ограничений и таймаутов WebServerLimits”.
- В desktop-приложениях TessaClient и TessaAdmin в конфигурационном файле *.exe.config добавлена настройка “UseFilePreview64Bit” (по умолчанию false). Если указано “true”, то система отображает предпросмотр файла в 64-битном процессе, если приложение также запущено в 64-битной среде. Если указано “false”, то предпросмотр выполняется в 32-битном процессе. В версиях системы, начиная со сборки 2.5.2 (и 2.4.11 для LTS), использовался предпросмотр в режиме “true”, но это могло приводить к проблемам со старыми версиями Office или с предпросмотром писем Outlook (в любых версиях). Рекомендуется оставить значение по умолчанию “false”, если предпросмотр не начал работать хуже с этой версией для используемых вами форматов файлов. Настройка не оказывает влияние на предпросмотр при запуске на 32-битных ОС. При запуске на 64-битной ОС с использование запускающего файла TessaClient32.exe настройка по-прежнему актуальна, т.к. при установке true предпросмотр будет 64-битным (по разрядности ОС).
- В web-клиенте расширены возможности представлений: master-detail представления, в т.ч. типовые отчёты по текущим и завершённым заданиям; выделение по ячейкам; множественное выделение с зажатым Shift или при нажатии на кнопку множественного выбора на панели пейджинга; подсветка строк и ячеек (например, “Мои задания” и “Мои документы”); можно сортировать кликом по заголовку столбца (помимо отдельной кнопки); в контекстном меню на заголовке добавлены группировка по столбцу и скрытие столбцов. Функциональность работает аналогично desktop-клиенту.
- В web-клиенте добавлены функции по работе со вкладками: контекстное меню на вкладках с возможностью их массового закрытия; по умолчанию открывается только одно рабочее место или в соответствии с диалогом “Мои настройки”; добавлена кнопка открытия новых рабочих мест; возможность закрытия вкладок с рабочими местами. Функциональность работает аналогично desktop-клиенту.
- В web-клиенте расширены возможности работы с деревом рабочего места: ширина дерева сохраняется на устройстве пользователя и больше не сбрасывается при обновлении страницы в браузере; сабсеты теперь могут быть добавлены или раскрыты по умолчанию, если это определено в настройках рабочего места; обновление плиткой “Обновить” или кнопкой F5 теперь обновляет и представление, и иерархию раскрытых сабсетов (асинхронно); добавлено контекстное меню на узлах дерева; добавлена группа плиток “Настройки дерева” в левой панели, в которой можно в т.ч. скрыть/показать дерево. Функциональность работает аналогично desktop-клиенту.
- В web-клиенте добавлены функции по созданию поисковых запросов из меню фильтра или из контекстного меню на узлах дерева. Функциональность работает аналогично desktop-клиенту.
- В web-клиенте реализованы все типовые клиентские расширения на представления, кроме диаграмм, которые присутствовали в desktop-клиенте. Это включает расширение на контекстное меню представления (по умолчанию в представлении “Мои документы”) и расширение на рабочее место руководителя (папки с заданиями). Новое API позволяет реализовывать свои такие же расширения.
- В web-клиенте при изменении карточки и возврате на вкладку с представлением, из которого открыта карточка, это представление теперь автоматически обновляется, отображая строку с изменённой карточкой. Функциональность работает аналогично desktop-клиенту.
- В web-клиенте улучшена разметка карточки, теперь используются горизонтальные и вертикальные отступы между контролами и блоками.
- В web-клиенте для диалоговых окон типа MessageBox добавлены сочетания клавиш: Y = Да, N = Нет, O (англ. раскладка) = ОК, C = Отмена. Для большинства окон также работают горячие клавиши Enter (подтверждение) и Esc (закрытие без подтверждения).
- В web-клиенте окно входа автоматически определяет язык пользователя по HTTP-заголовку “Accept-Language”. Если для пользователя браузер вернул русский язык, то выводятся кнопки и сообщения на русском языке, для любого другого языка - на английском. Текст переводимых строк настраивается в файле localization.json, который обычно расположен рядом с файлом app.json веб-сервиса. Там же можно добавить локализацию для других языков.
- В web-клиенте добавлено контекстное меню в контроле карточки “Таблица” и на вкладке “История заданий”. API также было расширено для изменения контекстного меню в расширениях.
- В web-клиенте реализован поворот страниц в предпросмотре для PDF и форматов файлов, конвертируемых в PDF (в т.ч. TIFF и офисные форматы .doc, .docx и др.) Страница поворачивается только при отображении, это не изменяет документ. Функция работает аналогично desktop-клиенту.
- В web-клиенте реализованы функции всех настроек колонок в контроле “Таблица”, в т.ч.: “Имя выбираемого контрола”, “Выравнивание”, “Выравнивание заголовка”, “Не разрывать строки”, “В одну строку”, “Без оконечных пробелов”.
- В web-клиенте для представлений реализовано ограничение длины выводимого текста по настройке колонки в метаинформации #column(MaxLength: count). Функциональность работает аналогично desktop-клиенту, но не поддерживаются всплывающие подсказки с полным текстом значения в ячейке (как и всплывающие подсказки в других местах системы).
- В приложении Tessa Applications в окне ввода логина/пароля добавлен флажок “Сохранить пароль”, позволяющий сохранить введённые логин и пароль в настройках сервера, если вход будет успешен. Изменить сохранённые логин/пароль или очистить их можно по-прежнему в настройках сервера. Поскольку Tessa Applications обратносовместимый со старыми серверами, в т.ч. от сборок 2.х, то его можно обновить, не обновляя платформу.
- Добавлена функция “Настройки новых пользователей”, которая расположена в правой боковой панели в группе “Мои настройки”. При нажатии на плитку открывается диалог настроек, аналогичный диалогу “Мои настройки”, но применяемый для всех новых сотрудников. Новыми считаются любые сотрудники, создаваемые после установки настроек.
- Для администраторов в окне “Мои настройки” и в карточке сотрудника на вкладке “Мои настройки” добавлена кнопка “Сохранить и применить настройки для сотрудников”. Кнопка позволяет указать сотрудников или роли (в т.ч. роль “Все сотрудники”), которым будут скопированы текущие выбранные настройки.
- В карточке “Настройки сервера” добавлено поле “Расширения файлов со встроенными предпросмотром в desktop-клиенте с преобразованием в PDF”. Укажите в этом поле расширения файлов без ведущей точки, разделённые пробелом, предпросмотр для которых выполняется через преобразование в PDF в desktop-клиенте, т.е. аналогично предпросмотру в web-клиенте. Например, укажите: “doc docx xls xlsx ppt pptx odt” (без кавычек). Таким образом, на компьютере пользователей не требуется установленное приложение для предпросмотра (такое как Word). Однако, первый предпросмотр для каждой версии файла с такими расширениями приводит к конвертации в PDF, которая может занять длительное время для больших файлов (при этом должен быть запущен Chronos и настроен LibreOffice). Если файл только что добавлен или его содержимое изменено (файл жёлтый), то предпросмотр с конвертацией отключается для таких файлов (т.е. используется обычный предпросмотр как раньше) до того момента, как карточка с файлами будет сохранена. По умолчанию список расширений пуст, т.е. предпросмотр выполняется приложениями на компьютере пользователя. Переопределить поведение можно в расширениях.
- В TessaAdmin в редакторе типов карточек добавлена возможность размещать блоки с контролами в узлах настраиваемой сетки, используя конструктор по кнопке “Расположение блоков” (рядом с кнопками предпросмотра карточки). Для гибкого управления разметкой также добавлен флажок “Включить прокрутку” в контролах “Вкладки” и “Контейнер”, флажок “Разрешить прокрутку” в контроле “Таблица”, и флажок “Растягивать по вертикали” в блоках. Если включён режим размещения блоков в сетке, то над списком блоков выводится надпись “Форма с расположением блоков” вместо “Стандартная форма”.
- В TessaAdmin в редакторе типов карточек добавлен тип блока “Горизонтальный блок”, позволяющий размещать элементы управления на одной строке. Элементы управления, не уместившиеся на строке, автоматически переносятся на следующую строку.
- В TessaAdmin в редакторе типов карточек добавлен тип элемента управления “Предпросмотр файлов”, используемый для просмотра файлов. Укажите настройку “Алиас предпросмотра” для контрола “Список файлов”, чтобы связать список файлов с контролом предпросмотра, у которого задан соответствующий алиас. Если все контролы “Список файлов” связаны с контролами предпросмотра, то стандартная область предпросмотра не выводится.
- В TessaAdmin в редакторе типов карточек добавлена настройка блоков “Заголовки слева”, позволяющая размещать заголовки элементов управления слева, а не сверху.
- В TessaAdmin на вкладке “Локализация” при создании строки теперь сразу открывается окно её редактирования.
- В TessaAdmin на вкладке “Информация” теперь выводится количество доступных лицензий мобильного согласования при наличии соответствующего модуля.
- В TessaAdmin в настройках формы в типах карточек добавлен флажок “Без предпросмотра файлов”. Если он включён, то стандартная область предпросмотра не отображается на этой вкладке, даже при наличии элемента управления со списком файлов. При этом область предпросмотра нельзя отобразить через меню на списке файлов, и она не управляется вместе со всеми областями на других вкладках при их скрытии/отображении.
- В TessaAdmin в настройки рабочего места добавлен флажок “Скрыть дерево по умолчанию”. Если он установлен, то при открытии рабочего места дерево представлений скрывается. Это актуально, в первую очередь, для вкладок с единственным представлением без сабсетов, таким как рабочее место Руководителя с представлением KrManagerTasks.
- При использовании неизвестных системе типов контролов, блоков, форм, валидаторов и расширений типов для карточек/файлов/заданий теперь не происходит ошибок. При отображении на клиенте соответствующие элементы интерфейса скрываются, а в TessaAdmin можно просмотреть их структуру или удалить (ранее тип, содержащий неизвестные объекты, не импортировался, или его редактирование было невозможным). Все неизвестные объекты могут быть удалёны кнопками “Исправить” или “Исправить всё”.
- В настройках типов карточек для контрола “Кнопка” добавлена настройка “Использовать всё пространство”. При включении данной настройки кнопка будет растягиваться на все выделенное под нее пространство по ширине и высоте. По умолчанию при отключённой настройке ширина и высота кнопки определяются размером текста внутри неё.
- В настройках колонки в схеме данных добавлен флажок “Автоинкрементая колонка”, позволяющий создавать колонку, значение в которой определяется автоматически средствами СУБД. Также доступны настройки “Начальное значение” и “Шаг”, чтобы определить, каким образом будет изменяться числовое значение в колонке при добавлении строк в таблицу.
- В конструктор процессов добавлена возможность выгрузки скриптов процесса в проект на языке C# для возможности изменения скриптов процесса с помощью более продвинутого редактора (например, Visual Studio).
- В конструктор процессов добавлена возможность копирования сразу нескольких узлов с сохранением связей между ними. Узлы можно выделять, обведя их рамкой с зажатым Shift, или используя Ctrl+клик по узлу.
- В конструкторе бизнес-процессов в действие “Уведомление” добавлен скрипт для модификации шаблона письма перед отправкой и поле “Тип уведомления” в блок “Настраиваемое уведомление”, если не используется карточка уведомления для формирования письма.
- В конструкторе бизнес-процессов в действия “Задания” и “Группа заданий” добавлены настройки для возможности указать карточку уведомления, отправляемого исполнителю задания в момент отправки задания.
- В конструкторе бизнес-процессов в действия “Задания” и “Группа заданий” добавлены настройки для возможности указать карточку уведомления, отправляемого при завершении задания с определённым вариантом завершения на заданный список ролей, а также при необходимости автору и/или исполнителю. Данные настройки находятся в таблице “Варианты завершения”.
- Кнопка возврата в основную карточку из карточки задачи в TessaClient размещена на панели тулбара (сверху от карточки) вместо гиперссылки. Панель тулбара в текущей версии недоступна в web-клиенте, поэтому там используется гиперссылка, как было раньше.
- Добавлена подсказка к списку ролей в карточках правил доступа.
- Доработаны настройки для экрана загрузки desktop-приложений. В параметре LogoText можно указать строку с символами “\n”, заменяемыми на перевод строки. В новом параметре LogoHideVersion укажите true, чтобы скрыть строку с версией. Параметры используются в конфигурационных файлах TessaClient.exe.config, TessaAdmin.exe.config, TessaAppManager.exe.config.
- Контрол “Список файлов” теперь доступен для добавления в типах заданий. Однако, для его использования потребуется поддержка клиентских и серверных расширений, по умолчанию список файлов будет пустым и без возможности добавить файл.
- Для контекстного меню представлений добавлены всплывающие подсказки, и пункт меню “Сохранить настройки” теперь всегда виден (но может быть недоступен).
- В карточку настроек сотрудника добавлены настройки по уведомлениям. В них входят настройка списка глобальных типов уведомлений, которые сотрудник не будет получать, а также настройка правил для фильтрации получения уведомлений конкретных типов по заданным условиям фильтрации.
- В тип карточки “Тип уведомления” добавлены новые настройки, которые позволяют определить тип уведомления (глобальный, по карточке), возможность подписаться на уведомления данного типа по карточке, видимость данного типа уведомления обычным пользователям.
- Добавлен новый справочник “Тип условия для правил уведомлений”, который определяет типы условий, используемые при фильтрации уведомлений по правилам.
- Добавлена возможность подписываться и отписываться от уведомлений различных типов по карточке. Подписываться можно только на те типы уведомлений, в настройках которых задано, что на них можно подписаться по данному типу карточки. Сделать это можно с помощью плитки на левой боковой панели “Настройки уведомлений по карточке” (плитка группируется в группу плиток “Действия”).
- В правила доступа добавлен новый флаг “Подписка на уведомление”. Для возможности подписаться на уведомление по карточке, входящей в типовое решение, у пользователя должны быть соответствующие права доступа.
- При расчете текста уведомления все даты теперь будут указываться в часовом поясе, указанном в карточке сотрудника получателя, а не в часовом поясе отправителя.
- Добавлено уведомление “Документ согласован” и соответствующий для него тип уведомления. Данное уведомление соответствует уведомлению инициатору о завершении согласовании документа из типового решения версии плаформы до 2.6. По умолчанию система не использует данное уведомление. Чтобы его использовать, нужно добавить этап отправки уведомления, указать список получателей и указать уведомление “Документ согласован”, а также убрать флаг “Скрывать при выборе” для соответствующего типа уведомления.
- При отсутствии модулей лицензии теперь доступны для изменения карточки настроек модуля, причём в верхней части карточки настроек выводится предупреждение об отсутствии модуля. Это относится к модулю конструктора бизнес-процессов, к модулю синхронизации AD, и к модулю потокового ввода.
- Добавлена хранимая функция
FormatAmount
, используя которую можно форматировать значение суммыAmount
с разделителями разрядов. Например, для MSSQL:SELECT [FullNumber], [dbo].[FormatAmount]([Amount]) FROM [DocumentCommonInfo] WITH (NOLOCK)
. Для PostgreSQL:SELECT "FullNumber", "FormatAmount"("Amount") FROM "DocumentCommonInfo"
. - Переменная окружения TESSA_CONFIG_ROOT может использоваться для поиска файлов app.json и extensions.xml во всех приложениях системы, в т.ч. для desktop-клиентов, консольной утилиты tadmin, веб-сервиса и сервиса Chronos. Если переменная не задана, то используется папка со сборкой Tessa.dll.
- Отправка всех стандартных уведомлений системы переделана на использование карточек уведомлений. Теперь пользователи могут отписаться от определенных типов уведомлений или определить правила на их получение.
- В представлении “Шаблоны процессов” добавлен мультивыбор для возможности массового удаления и экспорта шаблонов бизнес-процессов.
- В карточке настроек “Календарь” по умолчанию теперь заданы более распространённые параметры для рабочего дня: с 9 до 18 с перерывом с 13 до 14.
- Добавлена поддержка Swagger для документации REST API для стандартных контроллеров ASP.NET Core и контроллеров в расширениях Tessa.Extensions.Server.Web (и в других сборках, перечисленных в настройке WebControllers в app.json). Убедитесь, что в app.json веб-сервиса установлена настройка SwaggerDocIsEnabled, равная true. После этого перейдите по адресу /swagger (например: https://localhost/tessa/web/swagger).
- Активную операцию теперь можно открыть как виртуальную карточку двойным кликом. Представление с операциями доступно в рабочем месте “Администратор”, папка “Прочее”, представление “Активные операции”.
- В рабочем месте “Администратор” добавлены кнопки создания карточки на панель инструментов для большинства справочников.
- В рабочем месте “Администратор” в папке “Прочее” добавлено представление “Варианты завершения”, через которое можно создавать, изменять и удалять варианты завершения заданий как виртуальные карточки. При изменениях вариантов завершения на сервере выполняется изменение таблицы в схеме данных, т.е. работа со справочником вариантов завершений аналогична редактированию таблицы CompletionOptions на вкладке “Схема”.
- Прогресс активной операции теперь является вещественным числом Double вместо целого числа Int16. Число по-прежнему представляет проценты от 0 до 100, но в представлении выводится дополнительно два знака после запятой (актуально для длительных операций).
- В подсистему плейсхолдеров добавлен новый плейсхолдер task, который позволяет получить данные задания (AuthorID/AuthorName, RoleID/RoleName, CreatedByID/CreatedByName и др. свойства по аналогии с таблицей Tasks и объектом CardTask; но это не секции задания!). Задание должно быть указано в контексте обработки плейсхолдеров. Плейсхолдер по функциональности аналогичен плейсхолдеру “f”, за исключением, что для указания первого поля не требуется указывать секцию. Например, плейсхолдер {task:AuthorName} вернет имя автора, а {task:AuthorID->PersonalRoles.Email} вернёт его email.
- В подсистему плейсхолдеров для плейсхолдеров “f” и “t” добавлен атрибут task, который указывает, что в качестве источника данных для плейсхолдера необходимо использовать секции задания, указанного в контексте обработки плейсхолдеров, а не секции карточки. Например, {f:TaskCommonInfo.Comment task} вернет поле “Comment” из секции задания “TaskCommonInfo”.
- В подсистему плейсхолдеров добавлены новые плейсхолдеры “info” и “tinfo”, которые работают аналогично плейсхолдерам “f” и “t”, но в качестве источника данных берут info замены плейсхолдеров. Параметр плейсхолдера пишется как последовательность ключей, разделенных через точку и определяющих путь к искомому объекту в переданном info. Например: Key1.Key2.Key3. Плейсхолдер “info” поддерживает написание составных параметров для получения данных из базы. Например, {info:Key1.Key2.UserID->PersonalRole.Email} вернет email пользователя, если “Key1.Key2.UserID” содержит идентификатор сотрудника. Плейсхолдер “tinfo” не поддерживает написание составных параметров.
- В форматтер плейсхолдеров #barcode, используемый для вывода изображений со штрих-кодом, добавлен параметр l=alignment для вывода метки с текстовым представлением штрих-кода рядом с изображением. Описание см. в руководстве администратора. Пример: {f:DocumentCommonInfo.FullNumber:#barcode(t=ean13;l=bottomcenter;w=150;h=30)}
Консольная утилита tadmin¶
- Добавлена команда DeleteCards, позволяющая удалять карточки (без возможности восстановления из корзины). Идентификаторы удаляемых карточек указываются параметром без имени (разделяются пробелом, запятой или точкой с запятой), или из стандартного ввода, т.е. при вводе с клавиатуры или при получении списка из предыдущей команды, например: tadmin Select getCardIds.sql -q|tadmin DeleteCards
- Добавлена команда ExportCards, выполняющая экспорт карточек. Идентификаторы экспортируемых карточек указываются параметром без имени (разделяются пробелом, запятой или точкой с запятой), или из стандартного ввода, т.е. при вводе с клавиатуры или при получении списка из предыдущей команды, причём имя карточки можно указать второй колонкой через точку с запятой. Параметр -l:library.cardlib позволяет указать имя создаваемой библиотеки, а параметр -o:folder - имя подпапки относительно библиотеки (или относительно текущей папки, если библиотека не указана). Пример запроса из другой команды: echo SELECT “ID”, “Name” FROM “Applications”|tadmin Select -q|tadmin ExportCards -l:Cards/Tessa.cardlib -o:Applications
- Команда Select теперь выводит значения во всех строках и колонках в формате CSV (с учётом эскейпинга). Старое поведение (первая колонка первой строки без эскейпинга) можно восстановить, указав параметр -text. Добавлен параметр -top:N для ограничения количества строк, и параметр -s:char для указания символа-разделителя между колонками CSV (по умолчанию точка с запятой). Параметр -h выводит имена колонок как первую строку в CSV.
- Команды Select и Sql могут принимать несколько скриптов или путей к папкам, разделённых пробелами. Если параметр с именем скриптов не указан, то текст запроса запрашивается из стандартного консольного ввода. Это позволяет, например, передавать текст выполняемой команды таким образом: echo DELETE FROM Sessions|tadmin Sql
- Добавлена команда TimeZone, позволяющая выполнить операции с временными зонами, а именно: Update - обновить смещение у определённого идентификатора; GenerateFromSystem - заполнить временные зоны из настроек ОС на сервере приложений; SetDefaultForAllRoles - установить временную зону по умолчанию для всех ролей; UpdateInheritance - проверить и исправить наследование временных зон между связанными карточками подразделений и сотрудников; UpdateOffsets - проверить и исправить смещения в карточках ролей по смещениям в карточке настроек. Вы можете указать одну или несколько выполняемых операций. Аналогичные функции доступны через интерфейс карточки настроек “Временные зоны”.
- В различных командах при указании тихого режима параметром -q теперь не требуется указывать -nologo для отключения вывода логотипа, в этом случае он не будет выводится по умолчанию. У команды Select также был добавлен вывод логотипа по умолчанию (если не указан тихий режим -q).
Новые версии библиотек¶
.NET Core 2.2.5
BarcodeLib 2.2.2
BitMiracle.LibTiff.NET 2.4.633
BrotliSharpLib 0.3.3
DocumentFormat.OpenXml 2.9.1
ITFoxTec.Identity.Saml2 3.0.1
Microsoft.CodeAnalysis.CSharp 3.0.0
Newtonsoft.Json 12.0.2
NLog 4.6.3
Npgsql 4.0.6
Unity 5.10.3
Изменения API¶
- Плагин синхронизации с Active Directory теперь поддерживает расширения IAdExtension для определения соответствия между полями объектов из AD/LDAP, которые переносятся в поля карточек сотрудника/роли/подразделения. Подробнее в типовом расширении DefaultAdExtension. Проектное расширение должно наследоваться от типового, переопределять его методы и затем регистрироваться в Unity по интерфейсу IAdExtension.
- В типе этапа “Создание карточки” в режиме “Открыть новую карточку” добавлена возможность модифицировать карточку перед открытием в скрипте этапа. Пример: NewCard.DocumentCommonInfo.Subject = “Новая тема документа”. Также можно использовать свойство NewCardTables для коллекционных секций и метод GetNewCard() для получения объекта Card.
- В конструкторе бизнес-процессов в действие “Создать карточку” в сценарий добавлена возможность использовать файловый контейнер создаваемой карточки в свойстве FileContainer.
- В обработчик бизнес-процессов в объект Context (тип IWorkflowEngineContext) добавлено свойство StoreDateTime, которое определяет дату/время вызова сохранения карточки.
- В объект NotificationEmail, используемый в INotificationManager как объект, содержащий всю информацию об отправляемом уведомлении, добавлены свойства ModifySubjectFunc и ModifyBodyFunc, в которые можно передать функцию, изменяющую тему и тело письма соответственно индивидуально для каждого получателя.
- Для объекта KrNotificationManager, управляющего всплывающими уведомлениями по заданиям, добавлен интерфейс IKrNotificationManager, позволяющий переопределить поведение уведомлений.
- Для всех скриптов конструктора процесса добавлены новые свойства ActionObject, ActionHash, NodeObject, NodeHash, ProcessObject, ProcessHash, SignalHash, которые возвращают объект и параметры действий, узла, процесса или сигнала соответственно.
- Методы DefaultDateFormatting и DefaultSinglePerformerFormatting из класса Tessa.Extensions.Default.Shared.Workflow.KrProcess.Formatters.StageTypeFormatterBase теперь объявлены как protected.
- Для обработчика сообщений мобильного согласования IMessageProcessor добавлена возможность обработки файлов, приложенных к письму. В метод IMessageProcessor.ProcessMessage в параметр message добавлено свойство Attachments, в котором передаются все приложенные к письму файлы в виде объектов NoticeAttachment. Обработчик по умолчанию приложенные файлы игнорирует.
- В web-клиенте реализовано API по работе с представлениями посредством ViewContext, в т.ч. с возможностью написания собственных клиентских расширений для представлений. Новое API дублирует функциональность толстого клиента. Примеры использования доступны в расширениях default.
- В объекте предпросмотра в desktop-клиенте доступен контрол предпросмотра IFilePreviewModel.PagingControl, и событие подписки на изменения его свойств IFilePreviewModel.PagingControlPropertyChanged. Вы можете подписаться на переключение страницы в области предпросмотра, переключать текущую страницу, выполнять её поворот и др. Область предпросмотра доступна на вкладке карточки в свойстве IFormViewModel.FilePreview (cardModel.Forms) или в контроле “Предпросмотр файлов”: FilePreviewViewModel.FilePreview (control as FilePreviewViewModel). Пример синхронизации номера страницы есть в расширении для карточки автомобиля: Tessa.Extensions.Default.Client.UI.CarUIExtension.
- Элемент управления файлами IFileControl теперь можно связать с другим контейнером IFileContainer, изменив его свойство IFileControl.Container.
- Объектная модель файлов доработана для поддержки отдельного объекта содержимого IFile.PreviewContent для предпросмотра файла, который может отличаться от основного контента файла, используемого для открытия, редактирования и выгрузки. Например, для предпросмотра используется файл .docx, сконвертированный в .pdf.
- Добавлен вызов метода SetFilePreviewAction, чтобы переопределить поведение для предпросмотра файлов с их конвертацией в PDF (или другой формат). Рекомендуется вызывать метод в расширениях ICardUIExtension таким образом: context.Model.FileContainer.SetFilePreviewAction(ctx => …). Также можно вызвать метод на контроле файлов IFileControl. Пример доступен в типовом расширении CarUIExtension для карточки “Автомобиль”.
- Добавлена возможность открытия карточек в модальном диалоге с помощью IAdvancedCardDialogManager (можно получить из Unity в расширениях через конструктор). В диалоге можно создавать новую карточку, открывать существующую, а также отображать модель карточки ICardModel или заданный ICardEditorModel в модальном окне.
- Добавлено свойство ICardEditorModel.Toolbar с кнопками в верхней части окна (такими как “Сохранить и закрыть” или “Обновить”). Можно отображать как в диалоге, так и в карточках, открываемых во вкладках. Если список кнопок ICardToolbarViewModel.Actions пуст, то тулбар автоматически скрывается; при добавлении хотя бы одной отображаемой кнопки тулбар автоматически отображается.
- Добавлено свойство ICardEditorModel.DialogName для указания названия диалога, чтобы настраивать кнопки в тулбаре и другие свойства карточки в зависимости от того, зачем этот диалог был открыт и в какой ситуации. При открытии карточки во вкладке (не в диалоге) свойство равно null.
- Добавлено свойство ICardEditorModel.BottomDialogButtons для отображения кнопок в диалогах с карточками в нижней части окна (не используется для карточек, отображаемых во вкладках).
- Добавлено свойство ICardEditorModel.StatusBarIsVisible, позволяющее скрыть/показать строку статуса (снизу от карточки).
- Добавлено свойство ICardEditorModel.WithUIExtensions для отключения вызова любых расширений ICardUIExtension для этого объекта ICardEditorModel. По умолчанию значение равно true, и расширения включены. Укажите false, чтобы отключить расширения.
- В интерфейсе IUIHost параметры методов CreateCardAsync, OpenCardAsync и ShowCardAsync перенесены в объекты настроек options. В них также добавлены новые свойства: OpenToTheRightOfSelectedTab для открытия карточки справа от текущей выбранной вкладки; WithUIExtensions для отключения расширений UI; Splash для связи операции с карточкой со сплэш-окном, которое будет закрыто при открытии в диалоге; WithDialogWallpaper и DialogWindowModifierAction управляют окном при открытии в диалоге.
- Для модели представления GridViewModel в контроле “Таблица” добавлены свойства AddRowButton и DeleteRowsButton с объектами-параметрами для кнопок “Добавить” и “Удалить”. Используйте их вместо свойств AddRowCommand, AddButtonVisibility, DeleteRowsCommand, DeleteButtonVisibility. Через свойство Caption таким кнопкам можно изменить заголовок.
- Добавлено свойство-делегат RuntimeHelper.ConfigRootPathFunc для переопределения папки, в которой выполняется поиск app.json и extensions.xml. Также добавлен делегат RuntimeHelper.AssemblyResolveActualLocationFunc, позволяющий определить действительное местоположение сборок Assembly, по умолчанию оно вычисляется из свойства assembly.CodeBase.
- В классе DbManager добавлены методы для асинхронного выполнения запросов. Такие методы называются как синхронные, но имеют суффикс Async, например: var reader = await db.ExecuteReaderAsync().
- Интерфейс Tessa.Platform.EDS.IEDSManager теперь доступен на сервере Linux. Вы можете запросить его на сервере из расширений, чтобы использовать криптографические функции на сервере.
- Добавлен класс DeleteIntegerCardOperation для массового удаления виртуальных карточек из представления, где в качестве идентификатора карточки используется целое число. Пример использования см. в расширении Tessa.Extensions.Default.Client.Tiles.KrDocStateTileExtension.
- Добавлен базовый класс OpenCardIntegerDoubleClickAction, рекомендуемый для разработки расширений на действие с карточкой по двойному клику, где идентификатором карточки является целое число. Пример использования см. в расширении Tessa.Extensions.Default.Client.Cards.OpenFromKrDocStatesOnDoubleClickExtension.
- Удалены методы RuntimeHelper.InvokeAsync(), используйте вместо них методы Task.Run(). Также удалены параметры longRunning из асинхронных методов, для выполнения длительной обработки в отдельном потоке используйте вызов Task.Factory.StartNew(() => { … }, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default). Если вы не уверены, будет ли обработка длительной (десятки секунд), то используйте Task.Run().
- Добавлен метод ICardContentStrategy.Move(sourceContext, targetContext), позволяющий выполнить перенос содержимого версии файла из одного местоположения в другое. Метод может использоваться аналогично методу Copy(sourceContext, targetContext) как для переноса между разными хранилищами, так и для быстрого переноса в пределах одного хранилища (метод выполняется не медленнее, чем копирование с последующим удалением исходного файла).
- В классе CardTask обновлена обработка свойства PlannedQuants. Теперь оно позволяет реализовать отправку заданий не на конкретную дату, а с указанием плановых квантов. Для этого необходимо указать PlannedQuants и не указывать Planned. В этом случае система сама рассчитает плановую дату на основе временной зоны роли, на которую отправляется задание.
- В классе CardTask добавлено свойство PlannedType, которое позволяет при отправке задания на конкретную дату, трактовать переданную с клиента плановую дату исполнения задания (Planned), как дату во временной зоне автора задания, исполнителя задания, или же не производить никаких манипуляций и воспринимать пришедшую плановую дату - “как есть”. В зависимости от значения PlannedType в задании - на сервере будет произведена соответствующая коррекция пришедшей даты (будет вычтено соответствующее смещение, или же никаких манипуляций не будет вовсе).
Исправления и оптимизации¶
- Для Tessa Applications исправлено подключение из Windows 7 к серверу 3.x, запущенному на IIS со включённой аутентификацией Windows, если текущий пользователь не входит в домен, в который входит сервер IIS.
- Для Tessa Applications исправлено логирование в текстовый файл AppManager.txt и в журнал событий Windows, чтобы туда не попадали сообщения, не являющиеся ошибками, которые регулярно возникают в процессе логина (например, при подключении к серверам 2.x, или при подключении к серверу, не входящему в текущий домен и др.).
- Для Tessa Applications, устанавливаемого вместе с msi-пакетом, исправлен файл NLog.config, в котором отсутствовало логирование в журнал событий Windows, и были неправильно установлены уровни логирования в текстовый файл AppManager.txt.
- Для этапов “Ветвление” и “Управление ветвлением” исправлено форматирование списка вторичных процессов в колонке “Настройки”.
- Оптимизировано вычисление агрегатных ролей.
- Для типовых задач и этапов “Задача” в маршрутах исправлена отправка с ответственным исполнителем и одновременным возвратом на роль.
- Исправлена ошибка при выборе из представлений, если есть #reference без указания свойства RefSection.
- Исправлены проблемы в синхронизации с Active Directory.
- Исправлена ошибка открытия схемы данных, когда таблица имела комплексную колонку, ссылающуюся на себя.
- В схеме данных теперь запрещено изменять библиотеку для системных колонок в таблице (ID, RowID, ParentRowID), это исправило потенциальные проблемы такого изменения.
- Исправлена сортировка таблиц в схеме данных при их переименовании.
- Исправлено дублирование группы “Без группы” в схеме данных при перемещении таблиц между группами.
- В конструкторе бизнес-процессов при открытии редактора без необходимой лицензии теперь выводится корректная ошибка лицензии.
- В конструкторе бизнес-процессов исправлена ошибка с множественным созданием экземпляров узла при обработке в случае, когда сигнал проходит один и тот же узел несколько раз.
- В конструкторе бизнес-процессов исправлена ошибка компиляции условий в действиях “Условие” и “Таймер”.
- В конструкторе бизнес-процессов исправлена ошибка при попытке произвести замену строки до первого ввода значения в поле “Заменить на”.
- В конструкторе бизнес-процессов исправлена ошибка, из-за которой в некоторых случаях у пользователя не было доступа к кнопкам процесса (плитки были недоступны на боковых панелях).
- В конструкторе бизнес-процессов исправлена ошибка, из-за которой происходил повторный вызов обработки сигнала для того же экземпляра узла в некоторых ситуациях.
- В конструкторе бизнес-процессов исправлена ошибка, возникающая при асинхронной обработке узлов процесса.
- В конструкторе бизнес-процессов исправлена ошибка, из-за которой при изменении параметров экземпляра узла он не помечался изменённым, и произведённые изменения не сохранялись при нажатии кнопки “Сохранить”.
- В конструкторе бизнес-процессов исправлена ошибка получения данных по привязке из поля “Результат” в настройках вариантов завершения действий “Задание” и “Группа заданий”.
- В конструкторе бизнес-процессов исправлена ошибка в работе действия “Управление группой заданий”, когда список новых ролей не был задан.
- В конструкторе бизнес-процессов исправлен выбор внешнего вида узла в зависимости от первого действия в списке.
- В конструкторе бизнес-процессов в действии “Подпроцесс” исправлена ошибка, связанная с обратным маппингом параметров в ситуациях, когда завершение подпроцесса инициировано из родительского процесса.
- В конструкторе бизнес-процессов в действии “Подпроцесс” исправлена ошибка в контролах настройки маппинга параметров.
- В конструкторе бизнес-процессов исправлена ошибка, возникающая при работе со списком через редактор параметров.
- В конструкторе бизнес-процессов исправлена ошибка, возникающая в ситуации, когда в действии “Уведомление” не была указана “Тема письма”.
- В представлении “Доступные заместители” исправлен вывод колонки “Статические роли” для MSSQL Server.
- При выполнении ссылок tessa:// алиас сервера всегда определяется без учёта регистра, т.е. ссылки tessa://tessaclient.prod и tessa://tessaclient.Prod идентичны.
- Исправлена сортировка по колонке таблицы в карточке для колонок с датами, у которых задан формат поля, если в строках для этой колонки присутствуют незаполненные значения null.
- При удалении рабочего места в историю действий в колонке “Объект” теперь записывается имя рабочего места вместо его идентификатора.
- В представлении “История заданий”, которое доступно в карточках по ссылке из вкладки “История заданий”, исправлено отображение записей по задачам, которые были отправлены с указанием вида задачи (с другим отображаемым именем).
- Исправлены отзыв и отмена процесса, если текущая группа в маршруте не является последней группой.
- При изменении версии платформы кэш для скриптов, скомпилированных в маршрутах, автоматически очищается.
- В TessaAdmin для отладки представлений исправлены повторные нажатия на кнопку выполнения запроса.
- Улучшены стабильность и обработка ошибок в предварительном просмотре файлов в TessaClient, если задействуется внешняя программа предпросмотра.
- Исправлена редкая ошибка “ValueFactory attempted to access the Value property of this instance” при создании карточек и открытии некоторых диалоговых окон, если при запуске или перезапуске веб-сервиса “неудачно” произошло несколько одновременных запросов (проблема решалась перезапуском сервисов). Ошибка появилась в сборке 3.2.
- Во всплывающих уведомлениях по заданиям описание задания (Digest) теперь ограничено 350 символами.
- Если отправка ознакомления выполняется длительное время (например, при недоступности сервера), то теперь нельзя выполнить отправку несколько раз через множественное нажатие на кнопку “ОК”.
- Оптимизирован импорт подразделений и сотрудников посредством консольной команды tadmin ImportUsers.
- Исправлена ошибка в скрипте Fixes\ImportApplications.pg.sql, возникающая при автоматическом обновлении сборки (скрипты Upgrade.bat, upgrade.sh), если в базе данных отсутствуют приложения с хотя бы одной указанной ролью (или в базе данных нет опубликованных приложений). Ошибка была только в скрипте для PostgreSQL.
- Исправлена редкая ошибка “Item already exists” при импорте библиотек локализации.
- Для установки сервера приложений на Linux исправлена ошибка “Could not find a part of the path /tmp/tessa/sync/storage/…”
- В TessaClient исправлено исчезновение подписей ЭЦП из таблицы, если открыть диалог ЭЦП без проверки подписей, а потом нажать на кнопку проверки.
- Удалена неиспользуемая сортировка в представлении ReportCurrentTasksByDepUnpivoted (диаграмма “Текущие задания”).
- Исправлено восстановление информации по группам истории заданий при импорте карточек или при восстановлении удалённых карточек.
- Для контрола “Таблица” исправлен вывод стрелок вверх/вниз, если не задано поле для сортировки.
- Для контрола “Таблица” исправлены проблемы с массовым выделением строк (и затем с их удалением, например), если не все выделенные строки вмещаются на экране.
- Если Tessa Applications в качестве основного сервера подключается к веб-сервису от более старой версии системы, в которой нет некоторых строк локализации, то эти строки используются из встроенных ресурсов приложения. Раньше такие строки не локализовывались (выводился алиас строки и язык).
- Исправлена ошибка, возникающая при копировании карточки с запущенным маршрутом и пересчетом маршрута. Если при этом удалялись этапы, то возникала ошибка.
- Исправлены ошибка, возникающая при возврате после согласования в этапе согласования. Ошибка заключалась в том, что отправлялись одновременно задания доработки и следующего этапа.
- Исправлена ошибка, возникающая при запуске этапа согласования, у которого был возврат после согласования, в следующем цикле.
- Текст ошибок при обращении к IBusinessCalendarService сделан более понятным для конечного пользователя, который может увидеть такую ошибку, например, указав дату, выходящую за границы календаря.
- Исправлена ошибка, когда при повторной генерации файла по шаблону с типом .docx не все плейсхолдеры успешно заменялись.
- В подсистеме плейсхолдеров при получении данных по плейсхолдерам в случае, когда возникает ошибка SQL, теперь результат возвращается с уровнем Error, а не Warning.
- Исправлено сохранение ширины дерева рабочего места в TessaClient.
- Исправлены ошибки при выводе представлений при отображении большого количества строк, если выводились группы или строки с дочерними строками.
- Исправлена ошибка, когда после импорта старого шаблона бизнес-процесса поверх нового не сбрасывался кэш процесса.
- Если кнопка “Редактировать” уже была нажата для расчёта прав, она не будет отображаться повторно до обновления карточки, даже если кнопка выдала не все возможные права (например, выданы права на карточку и собственные файлы, но не на все файлы). Такое поведение было в версии 2.3 и раньше.
- В редакторе локализации в TessaAdmin исправлена отметка строк локализации как изменённых, если они были изменены, затем сохранены, и далее открыты и закрыты без изменений.
- Установлен стабильный порядок сортировки расширений при указании одинаковых порядковых номеров при регистрации расширений .WithOrder(…). Это предотвращает возможные плавающие ошибки при использовании одинакового порядка расширений, делая их стабильными (если расширения в своей логике как-либо конфликтуют друг с другом). Мы по-прежнему рекомендуем явно указывать порядок расширений с различным значением .WithOrder(…).
- В представлении “Договоры” в колонке “Сумма” теперь выводится сумма с разделителями разрядов. Разделители разрядов по ошибке пропали со сборки 2.6.
- В web-клиенте фоновое изображение больше не растягивается при прокрутке.
- В web-клиенте при смене языка теперь происходит перезагрузка приложения (обновление страницы в браузере), что гарантирует отсутствие ошибок отображения сразу после смены языка.
- В web-клиенте исправлены проблемы с неправильно введённым логином/паролем, если сервер приложений на IIS и для него включена Windows-аутентификация.
- В web-клиенте исправлена ошибка при неудачном сохранении карточки с файлами, если файлы передаются длительное время на слабых каналах связи. В этом случае вместо ошибки, объясняющей причины неудачного сохранения, выводилась ошибка сервера.
- В web-клиенте исправлены проблемы с выравниванием различных элементов интерфейса, в т.ч. многострочного текста в браузере Firefox, и выравнивание заголовков контролов в строках таблиц.
- В web-клиенте исправлено отображение текста удалённой карточки на вкладке “Системная информация”.
- В карточке “Группа этапов” исправлено сообщение, возникающее при незаполненном поле “Порядок”. Теперь в тексте сообщения не указывается, что порядок уникальный, т.к. он может быть неуникальным.
- Исправлена ошибка “Task was cancelled” (или “Отменена задача”) при загрузке или предпросмотре файлов в карточке, в которой предыдущее сохранение или обновление завершилось с ошибкой.
- Улучшены запросы на “здоровье” веб-сервиса по адресу /hcheck в отношении соединений с базой данных.
- Исправлено сохранение файлов в отдельную базу данных MS SQL, если основной базой данных является PostgreSQL.
- В редакторе типов в TessaAdmin для контролов “Таблица” и “Список” при нажатии “Исправить” или “Исправить всё” будут удалены колонки “Поле для сортировки”, для которых поменялся тип колонки с целочисленного на любой другой. В этом поле должна быть указана только колонка для сохранения порядкового номера строк в контроле.
- Проверка состояния веб-сервиса по адресу /check теперь отключена, если в app.json явно не указана настройка HealthCheckIsEnabled, равная true. Также тестовый контроллер Tessa.Extensions.Server.Web.Services.ServiceController по адресу /service теперь не возвращает информацию по состоянию веб-сервиса, если в app.json не указана настройка HealthCheckIsEnabled, равная true.
- Исправлен параметр параметр поиска “Тип” и оптимизирован поиск по этому параметру для представления MyCompletedTasks “Завершённые от меня”.
- В представлении “Шаблоны процессов” исправлен вывод в колонке “Типы карточек”.
- В типе карточки “Шаблон бизнес-процесса” добавлена автоматическая сортировка в поля-списки и в таблицу с кнопками. Также добавлено удаление дубликатов в некоторых полях-списках.
- В типе карточки “Шаблон бизнес-процесса” в поле “Расширения проверка доступа для кнопок (плиток)” ввод с автодополнением теперь работает без учёта регистра символов.
- Исправлены расчёты рабочего времени по календарю при отображении в типовых представлениях Мои задания, Задания от меня и Отчёты - Текущие задания; при этом текущее смещение сервера БД могло быть прибавлено при расчёте (например, для UTC+03:00 можно было получить отображаемый срок на полдня больше, чем действительный). Проблема присутствовала только при установке на СУБД PostgreSQL.
- В системных карточках “Запись в истории”, “Удалённая карточка” и “Ошибка” на вкладке “Системная информация” текстовое поле не ограничено по высоте и расширяется, в зависимости от размера окна.
- Исправлено контекстное меню и цвет фона для предпросмотра текстовых файлов.
- Оптимизировано потребление памяти на сервере при скачивании файлов .txt в web-клиенте.
- Исправлен вызов расширений финализации ICardUIExtension.Finalizing/Finalized для карточки, которая открывается методом IUIHost.OpenCardAsync, если cardID передаётся как null, а идентификатор карточки определяется по факту загрузки, и карточка с таким идентификатором уже была открыта. Например, если открывается карточка настроек через правую боковую панель, когда эта карточка настроек уже открыта. Аналогичная проблема была исправлена для метода CreateCardAsync, но для него ошибка не повторялась в типовых сценариях.
- В редакторе типов в TessaAdmin исправлено отображение шрифта “Tessa Default” дважды в списке выбора.
- Улучшены описание ключевых слов при редактировании SQL в представлениях и подстановка выражений для ключевых слов.
- В представлении “Уведомления” исправлена сортировка в сабсете “По типу уведомления”.
- Удалено представление KrApprovalStates, поскольку оно полностью дублировало KrDocStates. Представление заменено на KrDocStates в представлениях и типах карточек типового решения.
- Исправлена метаинформация в представлениях PartnersTypes и VatTypes.
- Исправлена сериализация строковых параметров к POST-запросам для desktop-клиента, если некоторые из символов в строке кодируются в UTF-8 больше, чем в один символ (например, русские буквы). Это приводило к проблемам при создании операций (Digest мог быть усечён) и при логине в desktop-клиент по паре логин/пароль (например, если логин или пароль содержали русские буквы). Также проблема могла проявляться в кастомизированных REST-контроллерах, если вы использовали параметры методов вида [FromBody] string s. Ошибка появилась в сборке 3.0.
- Исправлено некорректное отображение подсветки синтаксиса для структуры Storage-объектов в некоторых ситуациях.
- Реализовано обновление типов карточек после сохранения схемы данных, чтобы не было ошибок, связанных со старой схемой данных.
- Исправлен выбор колонок в редакторе типов карточек сразу после того, как колонка была удалена в схеме данных (без нажатия “Обновить” на вкладке с типами). С учётом автоматического обновления типов это актуально, если схема данных была изменена другим пользователем и обновлена на вкладке схемы, но не сохранена.
- Сразу после импорта типов карточек (файлов, заданий) сбрасывается выделенный узел в дереве типов, чтобы на экране не мог отображаться редактор для предыдущей версии типа карточки, которая неактуальна после импорта.
- Исправлена ошибка в типах этапов “Согласование” и “Подписание”, которая заключалась в том, что при возврате после согласования, отзыва процесса и запуска первого цикла этап пропускался.
- В таблицу KrApprovalCommonInfo добавлен индекс для колонки StateID, чтобы при удалении состояний не выполнялось сканирование таблицы целиком для проверки ограничения FK (что может занять длительное время пропорционально количеству документов в системе).
- Исправлено получение рабочего времени путём добавления некоторого количества квантов к моменту времени. Исправлено в хранимых функциях “CalendarAddWorkQuants” и “CalendarAddWorkingDaysToDate”, а также в тех местах, где платформа аналогичным образом обращается к календарю.
- В карточке “Все сотрудники” для PostgreSQL период расчёта теперь по умолчанию 1800 секунд, как и в MSSQL. Ранее период расчёта был 60 секунд, что по умолчанию могло приводить к блокировкам на таблицу ролей.
- Удалено свойство IConnectionSettings.ReceiveTimeout, поскольку оно не используется при подключении со стороны клиента. Также удалены аналогичные настройки “ReceiveTimeout” в конфигурационных файлах. Удалять их необязательно, но они не оказывают влияние на клиентские таймауты.
Обновление на новую сборку¶
- Изменены карточки (необязательные изменения): Active Directory Sync (settings), All employees, Author of document, CancelTemplate, Calendar (settings), Computed performers, Continuous document load (settings), Creator of card, DeregisterTemplate, EditTemplate, Initiator, NewIterationTemplate, PostgreSql\Roles\Author of document, PostgreSql\Roles\Computed performers, PostgreSql\Roles\Creator of card, PostgreSql\Roles\Initiator, PostgreSql\Roles\Registrator of document, PostgreSql\Roles\Registrators, PostgreSql\Roles\Supervisor of initiator, RebuildTemplate, RegisterTemplate, Registrator of document, Registrators, RejectTemplate, Server settings (settings), Standard solution (settings), StartProcessTemplate, Supervisor of initiator.
- Перед обновлением схемы выполните скрипт Fixes/Migration-3.3-pre.*.sql.
- После обновления схемы выполните скрипт Fixes/Migration-3.3.*.sql.
- После окончания обновления всей конфигурации выполните скрипт Fixes/Migration-3.3-final.*.sql.
- Обновление схемы выполните с помощью приложения SchemeEditor или консольной утилиты tadmin ImportSchemeSql (если не используются скрипты Upgrade.bat / upgrade.sh). Приложение TessaAdmin и команда tadmin ImportScheme (соединение с веб-сервисом) не будут запускаться при подключении к серверу до того, как будет импортирована схема данных через прямое подключение к базе данных.
- Изменён конфигурационный файл app.json для веб-сервисов (Services/app.json и linux/web/app.json).
- Изменены файлы тем интерфейса в подпапке themes для приложения TessaClient.
- Если в рабочих местах вы использовали расширение на узле ManagerWorkplaceExtension, то удалите его и добавьте, заново указав настройки.
- При обновлении системы вручную (без использования скрипта Upgrade.bat или upgrade.sh) откройте карточку настроек “Временные зоны” и нажмите плитку “Обновить смещения” на левой боковой панели.
- После обновления с предыдущих сборок (и для автоматического, и для ручного режима) откройте карточку настроек “Временные зоны”. Для зоны “Default” (с идентификатором 0) укажите сдвиг, соответствующей вашему часовому поясу (в соответствии с которым сотрудники работали с системой ранее). Для часового пояса UTC+03:00 в поле “Сдвиг” должно быть “3:00:00”. Для временных зон с отрицательным смещением (т.е. UTC-03:00) поставьте флажок “Отрицательное направление сдвига”. Теперь сохраните карточку и далее выполните подряд три скрипта: Fixes/SetTimeZoneForMetaAndTaskRoles.**.sql, Fixes/UpdateTimeZoneForTaskHistory.**.sql и Fixes/UpdateTimeZoneForTasks.**.sql (ms - версия для MS SQL, pg - версия для PostgreSQL). Эти скрипты обновят таблицы с заданиями и историей заданий так, чтобы указать им зону “Default” и заданное вами количество часов.
- После обновления с предыдущих сборок (и для автоматического, и для ручного режима) проверьте настройки в карточке настроек “Календарь”. Скорее всего, во всех полях со временем (в т.ч. в таблице “Исключения”) будет смещение на несколько часов, в зависимости от часового пояса, в котором выполнялась настройка. Например, если у вас сервер приложений в часовом поясе UTC+03:00, то в карточке календаря после обновления все поля со временем будут на три часа раньше положенного (рабочий день начинается в 6:00, а не в 9:00, и т.п.). Для их изменения откройте скрипт Fixes/ShiftCalendarSettingsIntervals.**.sql на редактирование (ms - версия для MS SQL, pg - версия для PostgreSQL). В параметре offsetMinutes укажите количество минут для вашего часового пояса, т.е. для UTC+03:00 должно быть указано число 180 (это 60 минут в часе умножить на 3 часа). Выполните скрипт ровно один раз. Далее обновите карточку “Календарь” и проверьте поля со временем ещё раз. После того, как все интервалы будут корректными - выполните штатный перерасчёт календаря.
- Временная папка с дампами схемы данных для Windows теперь расположена по пути “%appdata%\tessa\Dumps”, а для Linux по пути “$HOMEDIR/.config/tessa/dumps”.
- Расширения web-клиента, использующие старые объекты viewContext, должны быть переписаны с использованием нового API. Расширения на карточки это не затрагивает.
- Команда Select в утилите tadmin теперь выводит значения во всех строках и колонках в формате CSV (с учётом эскейпинга). Старое поведение (первая колонка первой строки без эскейпинга) можно восстановить, указав параметр -text. Если вы использовали эту команду в своих скриптах, то проверьте, требуется ли указать параметр -text в вашем случае (отличается ли результат с параметром и без него).
- В карточках с типом “Уведомление” теперь поле “Тип уведомления” является обязательным. По умолчанию для всех существующих уведомлений прописывается тип уведомления “Прочее”. После обновления следует задать корректный тип уведомления для всех уведомлений, где это необходимо.
- Убедитесь, что в карточках правил доступа для состояния “Проект” поставлен новый флажок “Подписка на уведомления”. В противном случае для карточек в состоянии “Проект” также будет доступна кнопка “Редактировать”.
- В проект расширений Tessa.Extensions.Client добавлена ссылка на сборку System.Net.Http из состава .NET Framework.
- В клиентских расширениях desktop-клиента для модели представления GridViewModel в контроле “Таблица” добавлены свойства AddRowButton и DeleteRowsButton с объектами-параметрами для кнопок “Добавить” и “Удалить”. Используйте их вместо свойств AddRowCommand, AddButtonVisibility, DeleteRowsCommand, DeleteButtonVisibility.
- В методе-расширении unityContainer.RegisterServer() удалён параметр registerSettingsFromConfig, теперь метод работает так, если бы параметр всегда был равен false. Явно вызовите метод unityContainer.RegisterApplicationServerSettingsFromConfig() для регистрации настроек.
- Во всех методах объекта INotificationManager был изменен набор параметров. Теперь различные варианты метода вместо нескольких общих параметров принимают объект INotificationSendContext, который содержит все ранее передаваемые параметры.
- Удалены классы-реализации INotificationSender для типовых и системных уведомлений. Используйте отправку уведомлений по карточкам-уведомлениям. Кастомизированные реализации INotificationSender продолжат работать.
- В интерфейсе IUIHost параметры методов CreateCardAsync, OpenCardAsync и ShowCardAsync перенесены в объекты настроек options. В коде расширений проверьте вызовы этих методов. Также в объект options передайте Splash, если операция выполняется в сплэш-окне, это гарантирует корректное закрытие сплэш-окна, если ваш код будет вызван с переопределением открытия в модальном диалоге.
- В процессе согласования, существовавшем в сборках платформы до выпуска версии 2.6, присутствовало уведомление инициатору при завершении согласования вида “Документ согласован”. Процессы маршрутов позволяют автоматизировать любые процессы, не только процессы согласования, поэтому уведомление было удалено. В текущей версии это уведомление было добавлено в карточке уведомления “Документ согласован” и в одноимённом типе уведомления. По умолчанию система не использует данное уведомление! Чтобы его задействовать, добавьте в маршрут этап отправки уведомления, укажите список получателей (например, “Инициатор”) и укажите ссылку на уведомление “Документ согласован”, а также удалите флажок “Скрывать при выборе” для типа уведомления “Документ согласован”.
- Было удалено представление KrApprovalStates, поскольку оно полностью дублировало KrDocStates. Во всех представлениях и типах карточек, где у вас использовалось это представление, замените его на KrDocStates. Вы можете найти все места использования поиском по папке Configuration.
- Прогресс активной операции теперь является вещественным числом Double вместо целого числа Int16. Число по-прежнему представляет проценты от 0 до 100, но в представлении выводится дополнительно два знака после запятой (актуально для длительных операций). Проверьте код ваших расширений, использующий IOperationRepository.
- Удалены методы RuntimeHelper.InvokeAsync(), используйте вместо них методы Task.Run(). Также удалены параметры longRunning из асинхронных методов, для выполнения длительной обработки в отдельном потоке используйте вызов Task.Factory.StartNew(() => { … }, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default). Если вы не уверены, будет ли обработка длительной (десятки секунд), то используйте Task.Run().
- В интерфейс ICardContentStrategy добавлен метод Move(sourceContext, targetContext). Если вы используете собственную реализацию интерфейса ICardContentStrategy для организации файловых хранилищ, то добавьте определение этого метода в интерфейс. В качестве реализации “влоб” вы можете сначала скопировать файл, и затем удалить исходный файл. Или же вы можете оптимизировать, и, например, использовать метод System.IO.File.Move(…).
- Удалено свойство IConnectionSettings.ReceiveTimeout, поскольку оно не используется при подключении со стороны клиента. Также удалены аналогичные настройки “ReceiveTimeout” в конфигурационных файлах. Удалять их необязательно, но они не оказывают влияние на клиентские таймауты.
- В расширениях во всех местах вызова метода ICardStoreExecutionStrategy.InsertTaskHistory убедитесь, что заполнены свойства TimeZoneID и TimeZoneUtcOffsetMinutes в объекте CardTaskHistoryItem.
Изменения конфигурации при обновлении¶
-
Рабочие места:
-
Administrator
-
User
-
В узле “Состояния согласования” изменён заголовок на
$Workplaces_User_DocumentStates
и представление наKrDocStates
. -
В узел “Контрагенты” для режима отбора добавлено расширение
CreateCardExtension
с алиасомPartner
и параметром представленияPartnerID
. -
В папке “Диаграммы” указано “Где отображать узел” - “
Tessa Client
”. -
Добавлено представление “Типы условий для правил уведомлений” в режиме отбора.
-
Добавлено представление с подписками на уведомления внизу.
-
Изменены узлы “Уведомления” и “Типы уведомлений” в режиме отбора.
-
-
-
Представления:
-
AvailableDeputyUsers
-
BusinessProcessTemplates
-
CompletedTasks
-
CompletionOptionCards
(добавлено) -
CompletionOptions
-
ContractsDocuments
-
Documents
-
EmittedTasks
-
IncomingDocuments
-
KrApprovalStates
(удалено) -
KrDocStateCards
(добавлено) -
KrPermissions
-
KrSecondaryProcesses
-
KrStageCommonMethods
-
KrStageTemplates
-
LinkedDocuments
-
MyCompletedTasks
-
MyDocuments
-
MyTasks
-
NotificationConditionTypes
(добавлено) -
NotificationSubscriptions
(добавлено) -
NotificationTypes
-
Operations
-
OutgoingDocuments
-
Partitions
(добавлено) -
Partners
-
PartnersTypes
-
ProtocolCompletedTasks
-
ReportCurrentTasksByDepartment
-
ReportCurrentTasksByDepUnpivoted
-
ReportCurrentTasksByUser
-
ReportPastTasksByDepartment
-
ReportPastTasksByUser
-
TaskHistory
-
TaskTypes
-
TimeZones
(добавлено) -
Types
-
VatTypes
-
WorkflowEngineLogs
-
-
Таблицы:
-
AdSyncSettings
-
AdSyncSettingsVirtual
-
CalendarExclusions
-
CalendarSettings
-
CompletionOptionsVirtual
(добавлена) -
DefaultTimeZone
(добавлена) -
DepartmentRoles
-
DocLoadSettings
-
KrApprovalCommonInfo
-
KrDepartmentCondition
(добавлена) -
KrDepartmentConditionSettings
(добавлена) -
KrDocStateCondition
(добавлена) -
KrDocStateVirtual
(добавлена) -
KrDocTypeCondition
(добавлена) -
KrNotificationSettingVirtual
-
KrPartnerCondition
(добавлена) -
KrPermissionFlags
-
KrPermissions
-
KrProcessStageTypes
-
KrSettingsRouteExtraTaskTypes
(добавлена) -
KrStages
-
KrStagesVirtual
-
KrTypedTaskSettingsVirtual
(добавлена) -
KrUniversalTaskOptions
-
KrUniversalTaskOptionsSettingsVirtual
-
KrUniversalTaskSettingsVirtual
-
KrUsersCondition
(добавлена) -
NotificationConditionTypes
(добавлена) -
NotificationConditionTypesBuildOutput
(добавлена) -
Notifications
-
NotificationSubscribeTypes
(добавлена) -
NotificationSubscriptions
(добавлена) -
NotificationSubscriptionSettings
(добавлена) -
NotificationTypeCardTypes
(добавлена) -
NotificationTypes
-
NotificationUnsubscribeTypes
(добавлена) -
Operations
-
OperationsVirtual
(добавлена) -
PersonalRoleNotificationConditionsVirtual
(добавлена) -
PersonalRoleNotificationRulesVirtual
(добавлена) -
PersonalRoleNotificationRuleTypesVirtual
(добавлена) -
PersonalRoles
-
PersonalRoleSatellite
-
PersonalRoleUnsubscibedTypesVirtual
(добавлена) -
Roles
-
ServerInstances
-
Sessions
-
TaskCommonInfo
-
TaskHistory
-
TaskKinds
(перенесена в библиотекуDefault
) -
Tasks
-
TimeZones
(добавлена) -
TimeZonesSettings
(добавлена) -
TimeZonesVirtual
(добавлена) -
WeEmailAction
-
WeTaskAction
-
WeTaskActionNotificationRoles
-
WeTaskActionOptions
-
WeTaskGroupAction
-
WeTaskGroupActionOptions
-
WfSatelliteTaskHistory
-
WorkflowEngineLogs
-
WorkflowMain
-
-
Процедуры:
-
CalendarGetDefaultPeriodInfo
-
CalendarGetExclusionPeriodInfo
-
CalendarGetPeriodInfo
-
CalendarGetQuantType
-
CalendarPrepareQuants
-
-
Функции:
-
CalendarAddWorkingDaysToDate
-
CalendarAddWorkingDaysToDateExact
-
CalendarAddWorkQuants
-
CalendarGetDateDiff
-
CalendarGetDayOfWeek
-
CalendarGetFirstQuantStart
-
CalendarGetLastQuantStart
-
CalendarIsWorkTime
-
FormatAmount
(добавлена) -
GetAggregateRoleUsers
-
-
Миграции:
-
Platform
-
WorkflowEngine
(удалена)
-
-
Карточки:
-
Acquaintance
-
AcquaintanceType
(добавлена) -
AdditionalApprovalCompletedNotification
(добавлена) -
AdditionalApprovalCompletedNotificationType
(добавлена) -
AdditionalApprovalNotification
(добавлена) -
AdditionalApprovalNotificationType
(добавлена) -
Aggregate roles
-
ApprovedNotification
(добавлена) -
ApprovedNotificationType
(добавлена) -
AuthorCondition
(добавлена) -
CommentNotification
(добавлена) -
CommentNotificationType
(добавлена) -
Default access rules
(флажок “Подписка на уведомления”) -
DepartmentCondition
(добавлена) -
DocStateCondition
(добавлена) -
DocTypeCondition
(добавлена) -
InitiatorCondition
(добавлена) -
NotificationTypes\Other
(добавлена) -
NotificationTypes\System
(добавлена) -
PartnerCondition
(добавлена) -
PasswordExpires
-
PostgreSql\Roles\Aggregate roles
-
PostgreSql\Roles\All employees
-
ReturnFromPostponeNotification
(добавлена) -
ReturnFromPostponeNotificationType
(добавлена) -
TaskNotification
(добавлена) -
TaskNotificationType
(добавлена) -
TasksNotificationType
(добавлена) -
Time zones (settings)
(добавлена) -
TokenNotification
(добавлена) -
WfChildResolutionNotification
(добавлена) -
WfChildResolutionNotificationType
(добавлена) -
WfRevokeNotification
(добавлена) -
WfRevokeNotificationType
(добавлена)
-
-
Изменены библиотеки локализации.