Платформа 3V/Формы/Правила

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

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

наличие правила.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