Платформа 3V/Формы/Правила: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показана 1 промежуточная версия этого же участника)
Строка 36: Строка 36:
 
* задайте правило и нажмите "Применить"
 
* задайте правило и нажмите "Применить"
  
[[Файл:правило у элемента1.gif|border|800px]] <br clear="both" /><br>
+
[[Файл:правило у элемента1.gif|border]] <br clear="both" /><br>
  
 
2.Добавьте '''Выражение''' в соответствующем блоке в левой панели и выберите его уже при настройке элемента в пункте "Правило".
 
2.Добавьте '''Выражение''' в соответствующем блоке в левой панели и выберите его уже при настройке элемента в пункте "Правило".
Строка 43: Строка 43:
  
 
Подробнее о настройке выражения смотрите страницу [[Платформа_3V/Формы/Выражения | '''Выражение''']].
 
Подробнее о настройке выражения смотрите страницу [[Платформа_3V/Формы/Выражения | '''Выражение''']].
 +
 +
==Пример использования: настройка правила на совпадение текущего пользователя и атрибута "Пользователь"==
 +
Пример можно посмотреть [https://study.3v-cloud.com/navigator/#/home?objectId=1589 здесь.]<br>
 +
 +
При условии, что текущий открываемый справочник, например, справочник "Заявок" имеет атрибут, содержащий информацию о логине или связи с пользователем и необходимо сравнить является ли текущий пользователь указанному в атрибуте:<br>
 +
 +
1. Добавляем выражение, которое будет сравнивать атрибут "preferred_username" (логин текущего пользователя) с логином пользователя из атрибута. В данном случае в атрибуте находится справочник пользователей и поэтому мы вычисляем связанный (транзитивный) атрибут (id: 20 атрибут "Пользователь" -> id: 22 атрибут "Логин" спр."Пользователи"). И если они совпадают, выражение возвращает true
 +
<syntaxhighlight lang="JSON">
 +
{
 +
"expression": "if([1]=[2], true, false)",
 +
"returnFirstParameterValue": false,
 +
"operands": [
 +
  {
 +
  "dictionarySourceId": 1,
 +
  "attributeId": null,
 +
  "attribute": {
 +
    "innerAttribute": {
 +
    "discriminator": "OwnAttributeDefinitionDto",
 +
    "id": 22
 +
    },
 +
    "discriminator": "TransitiveAttributeDefinitionDto",
 +
    "id": 20
 +
  },
 +
  "getFirstElementValue": false,
 +
  "useAllInstanceElements": false,
 +
  "discriminator": "EntryExpressionDictionarySourceParameter",
 +
  "id": 1,
 +
  "allowMultipleValues": false
 +
  },
 +
  {
 +
  "attributeId": "preferred_username",
 +
  "discriminator": "EntryExpressionTokenAttributeParameter",
 +
  "id": 2,
 +
  "allowMultipleValues": false
 +
  }
 +
],
 +
"id": 1,
 +
"name": "Выражение",
 +
"code": null
 +
}
 +
</syntaxhighlight>
 +
 +
2. Выставляем данное выражение в правило на видимость поля. В нашем случае - это изображение. Правило на видимость (свойство: "'''visibleExpressionIds'''")
 +
 +
[[Файл:Видимость по логину.jpg|border|700px]] <br clear="both" /><br>
 +
 +
3. Измените значение в поле "Создатель" на свой логин, нажмите на "Сохранить" и вы увидите изображение, если сменить на логин произвольного пользователя, то изображение пропадет
 +
 +
[[Файл:Отображение по пользователю.gif|border|700px]]

Текущая версия на 06:48, 15 марта 2022

Настройка правил видимости/редактируемости позволяет скрыть или заблокировать определенные поля формы (поля ввода, кнопки, таблицы и прочее) при определенных условиях.

наличие правила.png

Для ограничения видимости или редактируемости элемента необходимо настроить Выражение, на основании которого будет происходить расчет.

Примечание! Итог выражения должен быть равен true или false. Пример выражения:

 1 {
 2  "id": 4,
 3  "expression": "if ([1] = 1, true, false)",
 4  "name": "Правило, видимость тип договора = аренда",
 5  "operands": [
 6   {
 7    "uiSourceId": 100,
 8    "id": 1,
 9    "discriminator": "EntryExpressionUiSourceParameterDto"
10   }
11  ],
12  "comment": "Операнд - это значение определенного элемента и поле будет видимо/редактируемо, если значение этого поля будет = 1 = элемент справочника 'аренда'"
13 }

Настройка правил

Настройка Правил производится двумя способами:

1. В пункте "Правила" в выбранном элементе:

  • нажмите + Добавить
  • выберите необходимый тип правила
  • нажмите + Новое правило
  • задайте правило и нажмите "Применить"

правило у элемента1.gif

2.Добавьте Выражение в соответствующем блоке в левой панели и выберите его уже при настройке элемента в пункте "Правило".

выражения.png

Подробнее о настройке выражения смотрите страницу Выражение.

Пример использования: настройка правила на совпадение текущего пользователя и атрибута "Пользователь"

Пример можно посмотреть здесь.

При условии, что текущий открываемый справочник, например, справочник "Заявок" имеет атрибут, содержащий информацию о логине или связи с пользователем и необходимо сравнить является ли текущий пользователь указанному в атрибуте:

1. Добавляем выражение, которое будет сравнивать атрибут "preferred_username" (логин текущего пользователя) с логином пользователя из атрибута. В данном случае в атрибуте находится справочник пользователей и поэтому мы вычисляем связанный (транзитивный) атрибут (id: 20 атрибут "Пользователь" -> id: 22 атрибут "Логин" спр."Пользователи"). И если они совпадают, выражение возвращает true

{
 "expression": "if([1]=[2], true, false)",
 "returnFirstParameterValue": false,
 "operands": [
  {
   "dictionarySourceId": 1,
   "attributeId": null,
   "attribute": {
    "innerAttribute": {
     "discriminator": "OwnAttributeDefinitionDto",
     "id": 22
    },
    "discriminator": "TransitiveAttributeDefinitionDto",
    "id": 20
   },
   "getFirstElementValue": false,
   "useAllInstanceElements": false,
   "discriminator": "EntryExpressionDictionarySourceParameter",
   "id": 1,
   "allowMultipleValues": false
  },
  {
   "attributeId": "preferred_username",
   "discriminator": "EntryExpressionTokenAttributeParameter",
   "id": 2,
   "allowMultipleValues": false
  }
 ],
 "id": 1,
 "name": "Выражение",
 "code": null
}

2. Выставляем данное выражение в правило на видимость поля. В нашем случае - это изображение. Правило на видимость (свойство: "visibleExpressionIds")

Видимость по логину.jpg

3. Измените значение в поле "Создатель" на свой логин, нажмите на "Сохранить" и вы увидите изображение, если сменить на логин произвольного пользователя, то изображение пропадет

Отображение по пользователю.gif