Выбор в зависимости от условия

Во многих ситуациях требуется сделать отображаемый текст разным, в зависимости от условий (уважаемый/уважаемая в зависимости  от пола пользователя или клиента, выбор плательщика в зависимости занесенных данных, надпись в зависимости от статуса РЗ и др.)

 

Для того, что бы сделать выбор в зависимости от условий, можно использовать IIF.

IIF:

 

Как любое логическое выражение IIF начинается и заканчивается с фигурных скобок {}.

{В фигурных скобках IIF находится за пределами его (условий, выделенных круглыми скобками)}

 

 {IIF (Если_условие == "тому, что здесь", "то_писать_это", "Если_нет_то_это")}

Пример:

1)        {IIF (Работы.Машинозаезды_работы.car_age < 48, "До 4х лет", "Старше 4х лет")}

2)        {IIF (Машинозаезд.type_descr == "", "___________", Машинозаезд.type_descr}

Двойной IIF:

3)        {IIF (Если_условие == "тому, что здесь", IIF (Если_условие == "тому, что здесь 2", "то писать то, что здесь", "иначе писать то, что здесь"), "Если ничего не подходит, то то, что здесь")}.

Если требуется сделать тройной IIF, он делается по образу и подобию двойного.

IIF может иметь большую вложенность, но не желательно использовать большую вложенность условий в больших таблицах.

Если требуется использовать несколько переменных в условии ответа, то необходимо сцепление строк знаком "+".

 {IIF (Если_условие == "тому, что здесь", "Текст при выполнении условия", то.это+", "+и.это)}

Пример:

 {IIF (Машинозаезд.status_descr == "Готов", "Текст при выполнении условия"+Машинозаезд.document_id,"Текст при НЕ выполнении условия"+Машинозаезд.document_id+", "+Машинозаезд.status_descr)}

 

Объединение нескольких условий возможно выполнить с помощью логических И (&&), или логических ИЛИ (||) следующим образом:

{CountIf(GroupHeaderBand1,TrafficAndWorksheets.contact_type_id == 1 && TrafficAndWorksheets.traffic_type == 1 && TrafficAndWorksheets.traffic_in_period && (TrafficAndWorksheets.record_type == 2 || TrafficAndWorksheets.record_type == 3))}

Где:

CountIf - считать если

С помощью && объединяются условия, и при выполнении всех условий выражение считается правдой

С помощью || сравниваются условия, и при выполнении одного из них выражение считается правдой

Пример:

{IIF(Машинозаезд.document_id >= 100 && (Работы.Машинозаезды_работы.car_age <= 48 || Машинозаезд.status_descr == "Готов"), "Правильный, "Не правильный")} т.е. если  Машинозаезд.document_id больше, или равен 100 И (Работы.Машинозаезды_работы.car_age меньше или равен 48, ИЛИ Машинозаезд.status_descr равен "Готов"), то написать "Правильный", иначе "Не правильный"

 

Если требуется разрыв строки, требуется использовать {Environment.NewLine}.

 

Если требуется сделать выбор понятным для конечного пользователя, или заменить выводимую переменную на визуально другое представление можно использовать Switch:

Синтаксис Switch:

 {Switch (Если_условие == "этому", "то", если_условие == "этому", "то", если_условие ==...)}

Пример:

 {Switch (Работы.Машинозаезды_работы.workshop_type_id ==1, "Слесарный", Работы.Машинозаезды_работы.workshop_type_id == 2, "Кузовной", Работы.Машинозаезды_работы.workshop_type_id == 3, "Прочее", Работы.Машинозаезды_работы.workshop_type_id == 4, "ДО")}