Описание релизов/0.43.0: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 32 промежуточные версии 2 участников)
Строка 1: Строка 1:
 +
{{DISPLAYTITLE:0.43 - Фердинанд Пóрше}}
 +
[[Файл:Ferdinand Porsche1.jpg|300px|link=https://ru.wikipedia.org/wiki/Порше,_Фердинанд]] <br>
 +
=Критичные изменения=
 +
*Обновление версии Angular. '''Прикладным сервисам''', использующим библиотеки платформы, необходимо обновиться до Angular 13.
  
 
+
<div class="NavFrame collapsed" style="width:700px;">
=Критичные изменения=
+
  <div class="NavHead"> Библиотеки, которые следует обновить </div>
*Обновление версии Angular. Прикладным проектам, использующим библиотеки платформы, необходимо обновиться до Angular 13:
+
  <div class="NavContent">
 
"@angular/animations": "~13.1.3",<br>
 
"@angular/animations": "~13.1.3",<br>
 
"@angular/cdk": "^13.1.3",<br>
 
"@angular/cdk": "^13.1.3",<br>
Строка 28: Строка 32:
 
"ng-packagr": "^13.1.3",<br>
 
"ng-packagr": "^13.1.3",<br>
 
"typescript": "~4.5.5"<br>
 
"typescript": "~4.5.5"<br>
 +
</div></div>
 +
<br>
 +
*Не сохранена обратная совместимость между версиями клиентов и сервисов. При переходе на 43 релиз '''прикладным сервисам''' следует обновить клиенты до 43 версии.
 +
<br>
 +
*Отложенная загрузка справочников в формах: рекомендуем провести тестирование форм на корректность поведения.
 
<br>
 
<br>
*Нельзя использовать старые версии клиентов на новых версиях сервисах и наоборот, т.е. чтобы нужно использовать версии клиентов и сервисов > 0.43 или < 0.43.
+
*Удалены следующие свойства json в формах:
 +
*#BinaryConditionWorkFlowStateIn<br>
 +
*#EntryExpressionJsonQueryParameter<br>
 +
*#DataIndicatorDataSource<br>
 +
*#JsonDataSource<br>
 +
*#MetaObjectDataSource<br>
 +
*#UiDataMetaObject<br>
 +
*#UiDataSourceDataIndicator<br>
 +
*#UiDataSourceJson<br>
 
<br>
 
<br>
*Отложенная загрузка справочников в формах, возможно некоторые формы надо будет перенастроить.
+
*При использовании внешних справочников с нецелочисленными идентификаторами возможна перекодировка численных идентификаторов при сохранении модели такого справочника. Если фильтрация настроена явно на идентификатор, то следует перепроверить значения после сохранения.
 
<br>
 
<br>
*При переходе на новый релиз будут следующие изменения в таблицах перекодировок:
 
Для различных справочников на одном источнике и имеющим разные атрибуты идентификаторы будут генерироваться таблицы с новыми наименованиями, что повлечёт за собой создание новых таблиц и их заполнение, что означает для подобных справочников таблица перекодировки будет сгенерирована заново.
 
 
Пример старого наименования - dict_169012_id_mapping
 
Пример нового наименования - dict_169012_guid_id_id_mapping
 
 
Чем грозит такое изменение?
 
1) Что сгенерированный целочисленный идентификатор для нецелочисленного идентификатора может не совпасть с таковым в старой таблице, поэтому если для таких справочников используются где-то отметки с перечислением целочисленных идентификаторов напрямую (т.е. не через условия), то они станут не корректными.
 
2) При переходе на старый релиз (до данного изменения) будет использоваться таблица со старым наименованием, что приведёт к до заполнению таблицы недостающими данными, что опять же повлечет за собой ситуация, что сгенерированный идентификатор может не совпадать с таковым в новой таблице.
 
 
В общем, ключевая проблема, в том что теперь будут таблицы перекодировки и с старым наименованием и новым, если есть новая будет использоваться новая, если есть старая и новая, то будет использоваться новая, если есть только старая, то будет использоваться она.
 
 
От старой таблицы мы не можем отказаться по нескольким причинам:
 
1) Мы не знает какой атрибут идентификатор и какого справочника был использован в качестве значение при генерации значений в таблице перекодировке, поэтому мы не можем просто взять и переложить данные в новую таблицу или поменять название старой таблицы на новое.
 
2) Старую таблицу нужно оставить для совместимости, что если вдруг будет откат версии платформы, то такие справочники хотя бы будут открываться, а не падать с ошибкой о том, что не могут найти старую таблицу (т.к. таблица создается при сохранении и появится, только при пересохранении справочника).
 
  
 
= Новая функциональность =
 
= Новая функциональность =
Строка 57: Строка 59:
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavContent">
 
   <div class="NavContent">
[https://study.3v-cloud.com/navigator/#/home?objectId= Отчёт с файлом(.pdf)]
+
[https://study.3v-cloud.com/navigator/#/home?objectId=1518 Отчёт с файлом(.pdf)]
 
   </div>  
 
   </div>  
 
</div>
 
</div>
Строка 63: Строка 65:
  
 
=== Автоматическое добавление виртуального элемента в боковик ===
 
=== Автоматическое добавление виртуального элемента в боковик ===
Сейчас виртуальный элемент добавляется по умолчанию в сложные структуры боковика. Это сделано во избежание того, чтобы дочерние элементы не скрывались под родительскими. Эта настройка также вынесена в отчёт.
+
Сейчас виртуальный элемент добавляется по умолчанию в сложные структуры боковика. Это сделано во избежание того, чтобы дочерние элементы не скрывались под родительскими.  
 +
 
 +
<gallery mode="packed" margin=200px; heights=400px style="text-align:left;">
 +
Файл:автоматический виртуальный элемент.png|<div style="text-align:center">'''Иерархия с виртуальным элементом'''</div>
 +
Файл:нет вир.элемент.png|<div style="text-align:center">'''Иерархия без виртуального элемента'''</div>
 +
</gallery>
 +
 
 +
Данная настройка вынесена в конструктор отчётов.
 
[[Файл:вирт.эл. по умолчанию.png|слева|750px|border]] <br clear="both" /><br>
 
[[Файл:вирт.эл. по умолчанию.png|слева|750px|border]] <br clear="both" /><br>
  
Строка 69: Строка 78:
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavContent">
 
   <div class="NavContent">
[https://study.3v-cloud.com/navigator/#/home?objectId= Отчёт с двумя показателями(174349)]
+
[https://study.3v-cloud.com/navigator/#/?viewId=1488 Отчёт с автоматическими виртуальными элементами]
 
   </div>  
 
   </div>  
 
</div>
 
</div>
 
<br>
 
<br>
+
 
 
== Формы ==
 
== Формы ==
 
=== Новый элемент. Вкладки(trv-tabset и trv-tab) ===
 
=== Новый элемент. Вкладки(trv-tabset и trv-tab) ===
Реализован новый элемент Вкладки. Для вкладок появилась возможность задать условия отображения, которые позволяют скрывать как саму вкладку, так и вложенные в неё элементов. В названии вкладки можно задать отступы и иконку из [https://fonts.google.com/icons?selected=Material+Icons Material Icons]. [[Платформа_3V/Формы/Компоненты/Верстка/Вкладки|Подробнее...]]
+
Реализован новый элемент Вкладки. Для вкладок появилась возможность располагать компонент горизонтально и вертикально. В названии вкладки можно задать отступы и иконку из [https://fonts.google.com/icons?selected=Material+Icons Material Icons]. [[Платформа_3V/Формы/Компоненты/Верстка/Вкладки|Подробнее...]]. А также реализована настройка заголовков, правил и прочего через конструктор.
 
  [[Файл:вкладка1.png|слева|border]] <br clear="both" /><br>
 
  [[Файл:вкладка1.png|слева|border]] <br clear="both" /><br>
 
   
 
   
Строка 87: Строка 96:
 
<br>
 
<br>
  
 
 
=== Новый элемент. Контекстное меню(trv-dropdown) ===
 
=== Новый элемент. Контекстное меню(trv-dropdown) ===
 
Реализован новый элемент Контекстное меню. Контекстное меню - элемент, который представляет собой некоторое количество выпадающих кнопок. Для того, чтобы задать выпадающие элементы, следует внутри компонента добавить Пункты меню. Также существует возможность добавить разделитель, для визуального отделения пунктов меню друг от друга.  
 
Реализован новый элемент Контекстное меню. Контекстное меню - элемент, который представляет собой некоторое количество выпадающих кнопок. Для того, чтобы задать выпадающие элементы, следует внутри компонента добавить Пункты меню. Также существует возможность добавить разделитель, для визуального отделения пунктов меню друг от друга.  
Строка 102: Строка 110:
 
=== "Автоматическая высота" для линейных диаграмм ===
 
=== "Автоматическая высота" для линейных диаграмм ===
 
Для диаграмм реализован флаг "Автоматическая высота", включение которого позволяет диаграмме отстраиваться самостоятельно без задания высоты. Отстраивается она по размеру и количеству баров.   
 
Для диаграмм реализован флаг "Автоматическая высота", включение которого позволяет диаграмме отстраиваться самостоятельно без задания высоты. Отстраивается она по размеру и количеству баров.   
 +
[[Файл:автоматическая высота для л.диаграммы.png|слева|800px|border]]<br clear="both" /><br>
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavContent">
 
   <div class="NavContent">
[https://3v.3v-group.net/navigator/#/home?objectId=157445 (дэв) - Форма с линейной диаграммой]
+
[https://study.3v-cloud.com/navigator/#/home?objectId=1524 Форма с линейной диаграммой]
 
   </div>  
 
   </div>  
 
</div>
 
</div>
Строка 111: Строка 120:
  
 
=== Операнд для расчета ячейки отчёта ===
 
=== Операнд для расчета ячейки отчёта ===
Добавлен операнд  '''''EntryExpressionPivotSourceCellValueParameter''''' для рассчёта ячейки отчёта, где в свойстве '''''pivotSourceId''''' задаётся идентификатор отчета-источника данных, '''''column''''' - номер столбца, '''''row''''' - номер строки ('''индексы строк и столбцов начинается с 0''').
+
Добавлен операнд  '''''EntryExpressionPivotSourceCellValueParameter''''' для расчёта ячейки отчёта, где<br>
 +
'''''pivotSourceId''''' - идентификатор отчета-источника данных, <br>
 +
'''''column''''' - номер столбца, <br>
 +
'''''row''''' - номер строки.<br>
 +
'''Важно!!!''' Индексы строк и столбцов начинается с 0
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;">
 
<div style="font-weight:bold;line-height:1.6;">JSON</div>
 
<div style="font-weight:bold;line-height:1.6;">JSON</div>
Строка 134: Строка 147:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div></div>
 
</div></div>
<br><br>
+
<br>
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
Строка 144: Строка 157:
  
 
== Показатели ==
 
== Показатели ==
 +
=== Блокировка значений факта в выпадающем списке ===
 +
Добавлено свойство блокировки значений факта показателя с типом "Элемент справочника".
 +
Для того, чтобы настроить данную функциональность следует в связанном справочнике, который используется в качестве факта с типом "элемент справочник" добавить столбец логического типа и настроить связь на этот атрибут в '''''canSelectAttribute''''' показателе.
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  ...
 +
  "indicatorDictionaries": [
 +
    {
 +
      "mappings": [
 +
        {
 +
          "elementId": 1,
 +
          "columnId": 3,
 +
          "dictionaryElementsOptions": {
 +
            "displayAttributeId": 2,
 +
            "canSelectAttribute": {
 +
              "discriminator": "OwnAttributeDefinitionDto",
 +
              "id": 20
 +
            },
 +
            "dictionaryId": 1527,
 +
            "hierarchyId": null,
 +
            "limit": null
 +
          }
 +
        }
 +
      ],
 +
      "discriminator": "DataIndicatorFactDictionaryDto",
 +
      "dictionaryId": 1529
 +
    }
 +
  ],
 +
}
 +
</syntaxhighlight>
 +
</div></div>
 +
 +
 +
[[Файл:canselect.png|слева|650px|border]] <br clear="both" /><br><br>
  
== Согласование ==
 
=== Переход к любому состоянию для роли админа ===
 
Пользователь с ролью админ может перейти на любое состояние запущенного процесса. В конфигурационный файл добавлено свойство ProcessAdminRole, в котором следует указать роль, под которой
 
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavContent">
 
   <div class="NavContent">
[https://3v.3v-group.net/navigator/#/home?objectId=165120 (дэв) - Согласование]
+
[https://study.3v-cloud.com/navigator/#/home?objectId=1558 Показатель с заблокированным элементом справочника]
 
   </div>  
 
   </div>  
 
</div>
 
</div>
 
<br>
 
<br>
  
=== Новый внешний источник для получения данных по процессу (дописать)===
+
== Согласование ==
Для согласования добавлен источник '''''ProcessStateV2''''', работает как '''''ProcessState''''', только отличается набором полей.
+
=== Переход к любому состоянию для роли админа ===
 +
Пользователь с ролью админ может перейти на любое состояние запущенного процесса. В конфигурационный файл добавлено свойство '''''ProcessAdminRole''''', в котором следует указать роль админа.
 +
 
 +
=== Новый внешний источник для получения данных по процессу ===
 +
Для согласования добавлен источник '''''ProcessStateV2''''', который отличается набором полей.<br>
 +
Изменены названия:
 +
*'''''StateId'''''-->'''''Id ''''' - Идентификатор процесса. Также изменён тип данных на строковый.
 +
*'''''ParentStateId'''''-->'''''ParentId ''''' - Идентификатор родительского процесса
 +
*'''''StateName'''''-->'''''Name ''''' - Наименование состояния процесса или подпроцесса
 +
Добавлено:
 +
*'''''EntryId''''' - Идентификатор состояния процесса или подроцесса
 +
Все дальнейшие доработки будут внесены в '''''ProcessStateV2'''''. '''''ProcessState''''' остаётся как устаревший источник.
 +
<gallery mode="packed" margin=200px; heights=130px style="text-align:left;">
 +
Файл:согласование v1.png|<div style="text-align:center">'''ProcessState'''</div>
 +
Файл:согласование v2.png|<div style="text-align:center">'''ProcessStateV2'''</div>
 +
</gallery>
  
добавлены подстановки для SubProcessNameTemplate<br>
+
=== Новые подстановки в название подпроцесса ===
SubProcessName - наименование подпроцесса из модели родительского процесса<br>
+
Добавлены подстановки для '''''SubProcessNameTemplate'''''<br>
StateName - наименование текущего состояния подпроцесса
+
*'''''SubProcessName''''' - наименование подпроцесса из модели родительского процесса<br>
 +
*'''''StateName''''' - наименование текущего состояния подпроцесса.
  
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
+
''Пример шаблона''
  <div class="NavHead">Примеры</div>
+
  <nowiki>%SubProcessName% - %StateName%</nowiki>
  <div class="NavContent">
+
 
[https://3v.3v-group.net/navigator/#/home?objectId=172487 (дэв) - Согласование]
+
''Пример уведомления в письме:''
  </div>  
+
Запустить проведение анализа - Анализ завершён
</div>
+
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"subProcesses": [
 +
            {
 +
              "workflowId": 1,
 +
              "name": "Запустить проведение анализа",
 +
              ...
 +
              "parameterMappings": [
 +
                {
 +
                  "parentProcessParameterId": 1,
 +
                  "subProcessParameterId": 2
 +
                }
 +
              ],
 +
              "subProcessNameTemplate": "%SubProcessName% - %StateName%"
 +
            }
 +
          ]
 +
</syntaxhighlight>
 +
</div></div>
 
<br>
 
<br>
  
== Уведомления ==
 
 
== Навигатор ==
 
== Навигатор ==
 
=== Доработка реестра согласования ===
 
=== Доработка реестра согласования ===
Строка 184: Строка 267:
  
 
=== Контекстное меню навигатора ===
 
=== Контекстное меню навигатора ===
Реализовано контекстное меню для левого дерева навигатора. Конеткстное меню позволяет
+
Реализовано контекстное меню для левого дерева навигатора. Контекстное меню позволяет:
 
*Создать папку или объект в выделенной папке
 
*Создать папку или объект в выделенной папке
 
*Свернуть или развернуть выделенную папку
 
*Свернуть или развернуть выделенную папку
Строка 191: Строка 274:
 
*Вырезать выделенную папку
 
*Вырезать выделенную папку
 
*Вставить в выделенную папку объекты в буфере обмена
 
*Вставить в выделенную папку объекты в буфере обмена
*Переименовтаь
+
*Переименовать
 
*Открыть панель прав доступа
 
*Открыть панель прав доступа
 
*Открыть панель свойств папки
 
*Открыть панель свойств папки
Строка 203: Строка 286:
  
 
== Пользовательский навигатор ==
 
== Пользовательский навигатор ==
=== Индикатор уведомлений(пример) ===
+
=== Индикатор уведомлений ===
Реализован индикатор уведомлений, который .... Для того, чтобы настроить индикацию в меню пользовательского навигатора нужно сделать следующую настройку:<br>
+
Реализован индикатор уведомлений, который показывает наличие уведомлений на пунктах меню пользовательского навигатора. <br>
MENU_ITEM_NOTIFICATION_BOOL_CSS - Оформление уведомления элемента меню (для флага, а не числа)<br>
+
Для того, чтобы настроить уведомление в  "Меню пользовательского навигатора" следует задать запрос, к методу, который возвращает целочисленное или логическое значение. [[Платформа_3V/Пользовательский_навигатор/Меню_навигатора(описание_справочника)#Настроить уведомления|Подробнее...]]
MENU_ITEM_NOTIFICATION_CSS - Оформление уведомления элемента меню <br>
+
 
 +
Для того, чтобы настроить дизайн уведомления в меню пользовательского навигатора нужно задать следующие настройки:<br>
 +
'''''MENU_ITEM_NOTIFICATION_BOOL_CSS''''' - Оформление уведомления элемента меню в формате CSS(для флага),<br>
 +
'''''MENU_ITEM_NOTIFICATION_CSS''''' - Оформление уведомления элемента меню в формате CSS(для числа).
 +
[[Платформа 3V/Пользовательский навигатор/Настройка дизайна#Оформить_уведомления|Подробнее...]]
 
[[Файл:Уведомления.png|слева|750px|border]] <br clear="both" /><br>
 
[[Файл:Уведомления.png|слева|750px|border]] <br clear="both" /><br>
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavContent">
 
   <div class="NavContent">
[https://study.3v-cloud.com/navigator/#/home?objectId=912 ОПИСАНИЕ ПРИМЕРА]
+
[https://study.3v-cloud.com/navigator/#/home?objectId=912 Меню пользовательского навигатора]
 
   </div>  
 
   </div>  
 
</div>
 
</div>
Строка 259: Строка 346:
 
|}
 
|}
  
По умолчанию аудируются только изменения метаобъектов и структуры согласований.
+
По умолчанию аудируются только изменения метаобъектов и структуры согласований:
 +
* Если в конфигурационном файле развертываемого приложения определен параметр "Level": "Default", то в аудит перестанут писаться изменения элементов справочника; при определении "Level": "Detailed" будет писаться все, как и раньше.
 +
* Если в конфигурационном файле развертываемого приложения нет упоминания аудита, то начиная с 43 версии фиксируются минимальные изменения, связанные с редактированием метаданных
  
 
== Общее ==
 
== Общее ==
Строка 272: Строка 361:
 
*'''CurrentLocale()''' - вычисляет текущую локаль.  
 
*'''CurrentLocale()''' - вычисляет текущую локаль.  
 
Подробнее об их использовании и настройке можно прочитать [[Платформа_3V/Выражение/Расчет_выражений|здесь]].
 
Подробнее об их использовании и настройке можно прочитать [[Платформа_3V/Выражение/Расчет_выражений|здесь]].
 +
 +
'''Отчеты:''' Новый операнд (PredefinedPivotOperandDto), позволяющий вычислить в отчетах уникальный GUID (инстанс) '''текущего открытого''' отчета ("value": "PivotInstanceId") и идентификатор текущего отчета "value": "PivotId"
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"expression": "[1]",
 +
"operands": [
 +
  {
 +
      "value": "PivotId",
 +
      "discriminator": "PredefinedPivotOperandDto",
 +
      "code": null,
 +
      "id": 1,
 +
      "name": null
 +
  }
 +
],
 +
"id": 1,
 +
"name": "Выражение",
 +
"code": null
 +
}
 +
</syntaxhighlight>
 +
</div></div>
 +
 +
'''Формы:''' Новый операнд (EntryExpressionPredefinedParameter) в выражениях, позволяющий вычислить в формах уникальный GUID (инстанс) '''текущей открытой''' формы ("value": "CardInstanceId") и идентификатор текущей формы "value": "CardModelId"
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"expression": "[1]",
 +
"operands": [
 +
  {
 +
  "value": "CardInstanceId",
 +
  "discriminator": "EntryExpressionPredefinedParameter",
 +
  "id": 1,
 +
  "allowMultipleValues": false
 +
  }
 +
],
 +
"id": 1,
 +
"name": "Идентификатор инстанса карточки",
 +
"code": null
 +
}
 +
</syntaxhighlight>
 +
</div></div>
  
 
= Конструкторы =
 
= Конструкторы =
 
== Конструктор справочников ==
 
== Конструктор справочников ==
 
=== Настройка локализованных названий ===
 
=== Настройка локализованных названий ===
Реализован вынос локализации наименований атрибутов в конструктор.  
+
Реализована возможность задания локализованных наименований и значений атрибутов через конструктор.
 
[[Файл:локализация в КС.gif|слева|border]] <br clear="both" /><br>
 
[[Файл:локализация в КС.gif|слева|border]] <br clear="both" /><br>
  

Текущая версия на 07:54, 1 марта 2022

Ferdinand Porsche1.jpg

Содержание

Критичные изменения

  • Обновление версии Angular. Прикладным сервисам, использующим библиотеки платформы, необходимо обновиться до Angular 13.


  • Не сохранена обратная совместимость между версиями клиентов и сервисов. При переходе на 43 релиз прикладным сервисам следует обновить клиенты до 43 версии.


  • Отложенная загрузка справочников в формах: рекомендуем провести тестирование форм на корректность поведения.


  • Удалены следующие свойства json в формах:
    1. BinaryConditionWorkFlowStateIn
    2. EntryExpressionJsonQueryParameter
    3. DataIndicatorDataSource
    4. JsonDataSource
    5. MetaObjectDataSource
    6. UiDataMetaObject
    7. UiDataSourceDataIndicator
    8. UiDataSourceJson


  • При использовании внешних справочников с нецелочисленными идентификаторами возможна перекодировка численных идентификаторов при сохранении модели такого справочника. Если фильтрация настроена явно на идентификатор, то следует перепроверить значения после сохранения.


Новая функциональность

Отчёты

Предпросмотр документа

Добавлена функциональность предпросмотра документов типа .pdf. Для того, чтобы открылся предпросмотр следует нажать иконку в ячейке отчёта. Функциональность реализована и в пользовательском навигаторе.

предпросмотр.gif




Автоматическое добавление виртуального элемента в боковик

Сейчас виртуальный элемент добавляется по умолчанию в сложные структуры боковика. Это сделано во избежание того, чтобы дочерние элементы не скрывались под родительскими.

Данная настройка вынесена в конструктор отчётов.

вирт.эл. по умолчанию.png




Формы

Новый элемент. Вкладки(trv-tabset и trv-tab)

Реализован новый элемент Вкладки. Для вкладок появилась возможность располагать компонент горизонтально и вертикально. В названии вкладки можно задать отступы и иконку из Material Icons. Подробнее.... А также реализована настройка заголовков, правил и прочего через конструктор.

вкладка1.png




Новый элемент. Контекстное меню(trv-dropdown)

Реализован новый элемент Контекстное меню. Контекстное меню - элемент, который представляет собой некоторое количество выпадающих кнопок. Для того, чтобы задать выпадающие элементы, следует внутри компонента добавить Пункты меню. Также существует возможность добавить разделитель, для визуального отделения пунктов меню друг от друга.

к.меню.png




"Автоматическая высота" для линейных диаграмм

Для диаграмм реализован флаг "Автоматическая высота", включение которого позволяет диаграмме отстраиваться самостоятельно без задания высоты. Отстраивается она по размеру и количеству баров.

автоматическая высота для л.диаграммы.png




Операнд для расчета ячейки отчёта

Добавлен операнд EntryExpressionPivotSourceCellValueParameter для расчёта ячейки отчёта, где
pivotSourceId - идентификатор отчета-источника данных,
column - номер столбца,
row - номер строки.
Важно!!! Индексы строк и столбцов начинается с 0

JSON
 1 {
 2  "expression": "[1]",
 3  "operands": [
 4   {
 5    "pivotSourceId": 1,
 6    "column": 0,
 7    "row": 2,
 8    "discriminator": "EntryExpressionPivotSourceCellValueParameter",
 9    "id": 1,
10    "allowMultipleValues": false
11   }
12  ],
13  "id": 1,
14  "name": "Выражение",
15  "code": null
16 }



Показатели

Блокировка значений факта в выпадающем списке

Добавлено свойство блокировки значений факта показателя с типом "Элемент справочника". Для того, чтобы настроить данную функциональность следует в связанном справочнике, который используется в качестве факта с типом "элемент справочник" добавить столбец логического типа и настроить связь на этот атрибут в canSelectAttribute показателе.

JSON
 1 {
 2    ...
 3    "indicatorDictionaries": [
 4     {
 5       "mappings": [
 6         {
 7           "elementId": 1,
 8           "columnId": 3,
 9           "dictionaryElementsOptions": {
10             "displayAttributeId": 2,
11             "canSelectAttribute": {
12               "discriminator": "OwnAttributeDefinitionDto",
13               "id": 20
14             },
15             "dictionaryId": 1527,
16             "hierarchyId": null,
17             "limit": null
18           }
19         }
20       ],
21       "discriminator": "DataIndicatorFactDictionaryDto",
22       "dictionaryId": 1529
23     }
24   ],
25 }


canselect.png





Согласование

Переход к любому состоянию для роли админа

Пользователь с ролью админ может перейти на любое состояние запущенного процесса. В конфигурационный файл добавлено свойство ProcessAdminRole, в котором следует указать роль админа.

Новый внешний источник для получения данных по процессу

Для согласования добавлен источник ProcessStateV2, который отличается набором полей.
Изменены названия:

  • StateId-->Id - Идентификатор процесса. Также изменён тип данных на строковый.
  • ParentStateId-->ParentId - Идентификатор родительского процесса
  • StateName-->Name - Наименование состояния процесса или подпроцесса

Добавлено:

  • EntryId - Идентификатор состояния процесса или подроцесса

Все дальнейшие доработки будут внесены в ProcessStateV2. ProcessState остаётся как устаревший источник.

Новые подстановки в название подпроцесса

Добавлены подстановки для SubProcessNameTemplate

  • SubProcessName - наименование подпроцесса из модели родительского процесса
  • StateName - наименование текущего состояния подпроцесса.

Пример шаблона

 %SubProcessName% - %StateName%

Пример уведомления в письме:

Запустить проведение анализа - Анализ завершён
JSON
 1  "subProcesses": [
 2             {
 3               "workflowId": 1,
 4               "name": "Запустить проведение анализа",
 5               ...
 6               "parameterMappings": [
 7                 {
 8                   "parentProcessParameterId": 1,
 9                   "subProcessParameterId": 2
10                 }
11               ],
12               "subProcessNameTemplate": "%SubProcessName% - %StateName%"
13             }
14           ]


Навигатор

Доработка реестра согласования

Доработан реестр согласования:

  • Убраны кнопки "Остановить" и "Перезапустить",
  • Добавлена кнопка удаления экземпляра процесса согласования,
  • Добавлена кнопка "Обновить" с пунктами:
    • "Обновить реестр" - полностью обновляет реестр процессов.
    • "Обновить шаблон" - обновляет шаблон экземпляра процесса в соответствии с основной модельною объекта согласования.
    • "Обновить данные по субъектам" - обновляет кэш субъектов экземпляра процесса.
реестр.png



Контекстное меню навигатора

Реализовано контекстное меню для левого дерева навигатора. Контекстное меню позволяет:

  • Создать папку или объект в выделенной папке
  • Свернуть или развернуть выделенную папку
  • Добавить в обновлению папку и всё её содержимое
  • Копировать ссылку на папку или её идентификатор
  • Вырезать выделенную папку
  • Вставить в выделенную папку объекты в буфере обмена
  • Переименовать
  • Открыть панель прав доступа
  • Открыть панель свойств папки
  • Удалить папку
контекстное меню навигатора.gif



Переключение локализации до авторизации на стенде

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

локализация из кк.gif



Пользовательский навигатор

Индикатор уведомлений

Реализован индикатор уведомлений, который показывает наличие уведомлений на пунктах меню пользовательского навигатора.
Для того, чтобы настроить уведомление в "Меню пользовательского навигатора" следует задать запрос, к методу, который возвращает целочисленное или логическое значение. Подробнее...

Для того, чтобы настроить дизайн уведомления в меню пользовательского навигатора нужно задать следующие настройки:
MENU_ITEM_NOTIFICATION_BOOL_CSS - Оформление уведомления элемента меню в формате CSS(для флага),
MENU_ITEM_NOTIFICATION_CSS - Оформление уведомления элемента меню в формате CSS(для числа). Подробнее...

Уведомления.png




Аудит

Гранулярный аудит

Реализована возможность более гибко настраивать аудирование системы с помощью задания действий, которые нужно записывать. В конфигах в секции AuditSettings добавлено два новых параметра:
Enabled - логическое значение, определяющее, включен ли аудит,
Actions - массив элементов, задающий аудируемые действия.

Элемент массива Actions Описание записываемых действий
None Действия не записываются в аудит
MetaObjectChanges Изменение метаобъекта
DictionaryDataSaved Сохранение данных справочника
DictionaryElementChanges Изменение элемента справочника
IndicatorDataSaved Сохранение данных показателя
IndicatorDataChanges Изменение данных показателя
CalculationExecutions Расчёт методики
PivotOpenings Открытие отчёта
DbStructureChanges Изменение структуры базы данных
UserOperations Пользовательские операции
SchedulerTaskExecutions Выполнение запланированной задачи
WorkflowStateChanges Изменение состояния согласования
WorkflowProcessesChanges Изменение согласования
All Все действия
DictionaryDataSaved Сохранены данные справочника
IndicatorDataSaved Сохранены данные показателя

По умолчанию аудируются только изменения метаобъектов и структуры согласований:

  • Если в конфигурационном файле развертываемого приложения определен параметр "Level": "Default", то в аудит перестанут писаться изменения элементов справочника; при определении "Level": "Detailed" будет писаться все, как и раньше.
  • Если в конфигурационном файле развертываемого приложения нет упоминания аудита, то начиная с 43 версии фиксируются минимальные изменения, связанные с редактированием метаданных

Общее

Новые функции

Добавлены новые функции в NCalc:

  • Median() - вычисляет медиану набора чисел,
  • AddMinutes() - добавление минут к дате,
  • AddHours() - добавляет часы к дате,
  • AddDays() - добавляет дни к дате,
  • AddMonths() - добавляет месяцы к дате,
  • AddYears() - добавляет годы к дате.
  • CurrentLocale() - вычисляет текущую локаль.

Подробнее об их использовании и настройке можно прочитать здесь.

Отчеты: Новый операнд (PredefinedPivotOperandDto), позволяющий вычислить в отчетах уникальный GUID (инстанс) текущего открытого отчета ("value": "PivotInstanceId") и идентификатор текущего отчета "value": "PivotId"

JSON
 1 {
 2  "expression": "[1]",
 3  "operands": [
 4   {
 5       "value": "PivotId",
 6       "discriminator": "PredefinedPivotOperandDto",
 7       "code": null,
 8       "id": 1,
 9       "name": null
10    }
11  ],
12  "id": 1,
13  "name": "Выражение",
14  "code": null
15 }

Формы: Новый операнд (EntryExpressionPredefinedParameter) в выражениях, позволяющий вычислить в формах уникальный GUID (инстанс) текущей открытой формы ("value": "CardInstanceId") и идентификатор текущей формы "value": "CardModelId"

JSON
 1 {
 2  "expression": "[1]",
 3  "operands": [
 4   {
 5    "value": "CardInstanceId",
 6    "discriminator": "EntryExpressionPredefinedParameter",
 7    "id": 1,
 8    "allowMultipleValues": false
 9   }
10  ],
11  "id": 1,
12  "name": "Идентификатор инстанса карточки",
13  "code": null
14 }

Конструкторы

Конструктор справочников

Настройка локализованных названий

Реализована возможность задания локализованных наименований и значений атрибутов через конструктор.

локализация в КС.gif



Конструктор форм

Полная локализация конструктора форм

Реализована локализация левой и правой панели настройки для всех элементов форм.

Локализация КФ.png