Платформа 3V/Формы/Правила: различия между версиями
(не показана 1 промежуточная версия этого же участника) | |||
Строка 36: | Строка 36: | ||
* задайте правило и нажмите "Применить" | * задайте правило и нажмите "Применить" | ||
− | [[Файл:правило у элемента1.gif|border | + | [[Файл:правило у элемента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
Настройка правил видимости/редактируемости позволяет скрыть или заблокировать определенные поля формы (поля ввода, кнопки, таблицы и прочее) при определенных условиях.
Для ограничения видимости или редактируемости элемента необходимо настроить Выражение, на основании которого будет происходить расчет.
Примечание! Итог выражения должен быть равен 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. В пункте "Правила" в выбранном элементе:
- нажмите + Добавить
- выберите необходимый тип правила
- нажмите + Новое правило
- задайте правило и нажмите "Применить"
2.Добавьте Выражение в соответствующем блоке в левой панели и выберите его уже при настройке элемента в пункте "Правило".
Подробнее о настройке выражения смотрите страницу Выражение.
Пример использования: настройка правила на совпадение текущего пользователя и атрибута "Пользователь"
Пример можно посмотреть здесь.
При условии, что текущий открываемый справочник, например, справочник "Заявок" имеет атрибут, содержащий информацию о логине или связи с пользователем и необходимо сравнить является ли текущий пользователь указанному в атрибуте:
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")
3. Измените значение в поле "Создатель" на свой логин, нажмите на "Сохранить" и вы увидите изображение, если сменить на логин произвольного пользователя, то изображение пропадет