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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 5: Строка 5:
  
 
===Выставление значения в поле формы===
 
===Выставление значения в поле формы===
При настройке значения поля через выражение, нельзя указывать это же поле в качестве источника формы. Будет осуществляться проверка на цикл и такая форма не откроется.
+
При установке значения в поле через выражение нельзя использовать данное поле в качестве операнда выражения. Будет осуществляться проверка на цикл и такая форма не откроется.
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">

Версия 17:12, 23 апреля 2022

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

Формы

Для прикладных приложений:

Удалено публичное API "IFormsDataService.getUpdatedBsModel" - вместо него, следует использовать getChangeControlValue(..) и generateBsModelFromOnlyChangeElements(..) в одном потоке.

Выставление значения в поле формы

При установке значения в поле через выражение нельзя использовать данное поле в качестве операнда выражения. Будет осуществляться проверка на цикл и такая форма не откроется.

Пример выражения
 1     {
 2       "expression": "if(isNullOrEmpty([1]),Today(), [1])",
 3       "returnFirstParameterValue": false,
 4       "operands": [
 5         {
 6           "uiSourceId": 21,
 7           "discriminator": "EntryExpressionUiSourceParameter",
 8           "id": 1,
 9           "allowMultipleValues": false
10         }
11       ],
12       "id": 2011,
13       "name": "Установить текущую дату",
14       "code": null
15     }

В случае выставления значения в поле при открытии, необходимо настраивать через действие дискриминатор 'CalculateControlValueAction'. При установке значения по умолчанию в поле, источник которого атрибут справочника, необходимо задать значения атрибуту в источнике.

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

Формы

Возможность в выражении вычислить состояние и шаг подпроцесса

Реализована возможность в выражениях в формах вычислять состояния и шаги подпроцесса. Для вычисления в выражениях необходимо использовать дискриминатор "EntryExpressionWorkflowContainsStatesBooleanParameter", а при настройке у источника согласования "WorkflowStepValidateRules".


Если параметры подпроцесса для получения состояний/шагов не заданы, то настроенная валидация или выражение срабатывает для всех экземпляров подпроцесса. Пример указания состояния подпроцесса в операндах выражения:

Пример вычисления состояния подпроцесса в операндах выражения
 1  "operands": [
 2   {
 3    "workflowSourceId": 1,
 4    "workflowStateIds": [
 5     2
 6    ],
 7    "subProcess": {
 8     "workflowId": 201681,
 9     "parameters": [
10      {
11       "id": 1,
12       "expressionId": null,
13       "value": 1
14      }
15     ]
16    },
17    "discriminator": "EntryExpressionWorkflowContainsStatesBooleanParameter",
18    "id": 1,
19    "allowMultipleValues": false
20   }


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

Отправка уведомлений из согласований на разных языках

Реализована отправка уведомлений из согласования на языке пользователя.
Уведомление отправляются пользователю на том языке, который определен в атрибутах данного пользователя.
Для настройки возможности отправки локализованных уведомлений согласования необходимо локализовать текста уведомлений в настройках согласования. В поле "language" необходимо прописать необходимый язык, а в поле "value" - текст уведомления на заданном языке.
Пример настройки локализации:

Пример настройки локализации уведомлений
 1           "localizedTitle": {
 2             "defaultValue": "Default title",
 3             "items": [
 4               {
 5                 "language": "ru",
 6                 "value": "Ru title"
 7               },
 8               {
 9                 "language": "en",
10                 "value": "En title"
11               }
12             ]
13           },
14           "localizedBody": {
15             "defaultValue": "Default body",
16             "items": [
17               {
18                 "language": "ru",
19                 "value": "Ru body"
20               },
21               {
22                 "language": "en",
23                 "value": "En body"
24               }
25             ]
26           },



Навигатор

Работа с деревом объектов навигатора через клавиатуру

Для центрального дерева в навигаторе:

  • При нажатии на кнопки вверх/вниз в режиме просмотра "Список" меняется выделение на вышележащий/нижележащий элемент
  • При нажатии на кнопки вверх/вниз/вправо/влево в режиме просмотра "Плитка" меняется выделение на соответствующий элемент
  • При нажатии на Enter на папке происходит открытие данной папки и выделение первого элемента в ней
  • При нажатии на Backspace производится переход на уровень выше и выделение встает на папку, из которой был совершен переход.
управление с клавиатуры.gif




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

Отображение доступных языков

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

2 языка.png



Если же языков 3 и более, они отображаются раскрывающимся списком.

комбик.png



Возможность открыть метаобъект

Если в форме c помощью действия OpenMetaObjectAction на кнопки настроено открытие метаобъектов, таких как форма или отчет, то открыть этот метаобъект можно через пользовательский навигатор.

открытие метаобъекта 3.gif



Файловое хранилище

Возможность хранения файлов репозитория в одном бакете S3

Сервис файлохранилища(FileStorage) теперь поддерживает возможность сохранять файлы разных приложений в одном бакете, но в разных папках. Для этого в конфигурационный файл добавлен признак, который по умолчанию выключен:

  1. UseOneBucket - Признак, что для хранения файлов по всем приложениям используется один бакет.
  2. BucketName - Наименование бакета, которое используется для хранения файлов по всем приложениям. Данный бакет будет использоваться только при включении признака UseOneBucket.

Данная возможность была реализована для переноса данных на Яндекс.Cloud. В Яндексе имя бакета(корзины) должно быть уникальным, соответственно возникала проблема, так как наименования бакетов совпадают с наименованием приложения.