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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 5: Строка 5:
  
 
===Выставление значения в поле формы===
 
===Выставление значения в поле формы===
При настройке значения поля через выражение, нельзя указывать это же поле в качестве источника формы. Будет осуществляться проверка на цикл и такая форма не откроется.  
+
При настройке значения поля через выражение, нельзя указывать это же поле в качестве источника формы. Будет осуществляться проверка на цикл и такая форма не откроется.
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">Пример выражения</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
    {
 +
      "expression": "if(isNullOrEmpty([1]),Today(), [1])",
 +
      "returnFirstParameterValue": false,
 +
      "operands": [
 +
        {
 +
          "uiSourceId": 21,
 +
          "discriminator": "EntryExpressionUiSourceParameter",
 +
          "id": 1,
 +
          "allowMultipleValues": false
 +
        }
 +
      ],
 +
      "id": 2011,
 +
      "name": "Установить текущую дату",
 +
      "code": null
 +
    }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
В случае выставления значения в поле при открытии, необходимо настраивать через  действие дискриминатор 'CalculateControlValueAction'. При установке значения по умолчанию в поле, источник которого атрибут справочника, необходимо задать значения атрибуту в источнике.
  
 
=Новая функциональность=
 
=Новая функциональность=

Версия 06:12, 6 апреля 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'. При установке значения по умолчанию в поле, источник которого атрибут справочника, необходимо задать значения атрибуту в источнике.

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

Отчет

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

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

Пример задания параметров
 1             "parameterSources": [
 2               {
 3                 "parameterId": 1,
 4                 "valueSource": {
 5                   "dictionaryAttribute": {
 6                     "dictionaryId": 1,
 7                     "attribute": {
 8                       "discriminator": "OwnAttributeDefinitionDto",
 9                       "id": 1
10                     }
11                   },
12                   "discriminator": "AttributeValueSourceDto"
13                 }
14               },
15               {
16                 "parameterId": 2,
17                 "valueSource": {
18                   "dictionaryAttribute": {
19                     "dictionaryId": 2,
20                     "attribute": {
21                       "discriminator": "OwnAttributeDefinitionDto",
22                       "id": 1
23                     }
24                   },
25                   "discriminator": "AttributeValueSourceDto"
26                 }
27               }
28             ],
гиперссылки.gif



Формы

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

Реализована возможность в выражениях в формах вычислять состояния и шаги подпроцесса. Для вычисления в выражениях необходимо использовать дискриминатор "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   }

Объединение модели клиента и сервера формы

Теперь при создании формы создается 1 объект - форма, вместо двух отдельных - клиентской и серверной. Создаваемая форма объединяет в себе клиентскую и серверную часть: серверная часть располагается в блоке "serverModel", клиентская часть в блоке "data".

форма клиент сервер.png



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

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

Реализована отправка уведомлений из согласования на языке пользователя.
Уведомление отправляются пользователю на том языке, который определен в атрибутах данного пользователя.
Для настройки возможности отправки локализованных уведомлений согласования необходимо локализовать текста уведомлений в настройках согласования. В поле "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           },


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

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

В шаблонах согласования был добавлен признак, определяющий как отправляется уведомление: email или sms.

1   "messageTypes": [
2     "Email",
3      "Sms"
4    ]

Для sms была добавлена настройка "localizedShortMessage", которая позволяет локализовать sms-уведомления.

Пример настройки локализации sms-уведомлений
 1           "localizedShortMessage": {
 2             "defaultValue": "Default short message",
 3             "items": [
 4               {
 5                 "language": "ru",
 6                 "value": "Ru short message"
 7               },
 8               {
 9                 "language": "en",
10                 "value": "En short message"
11               }
12             ]
13           },

Навигатор

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

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

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




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

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

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

2 языка.png



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

комбик.png



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

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

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



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

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

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

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

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