Во многих ситуациях требуется сделать отображаемый текст разным, в зависимости от условий (уважаемый/уважаемая в зависимости от пола пользователя или клиента, выбор плательщика в зависимости занесенных данных, надпись в зависимости от статуса РЗ и др.)
Для того, что бы сделать выбор в зависимости от условий, можно использовать 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, "ДО")}