Содержимое

# Определение условий

Условия представляют собой логические выражения, которые можно использовать для управления отображением полей и разделов в документе. Несмотря на то, что последующие примеры касаются полей, они также применимы и к разделам.

Условия могут быть определены для следующих типов полей:

1. Текст с условием: отображает текст А, если условие истинно, или текст Б, если условие ложно.

2. Скрытый текст: скрывает содержимое поля, если условие истинно.

3. Скрытый абзац: скрывает абзац, если условие истинно.

4. Любая запись и Следующая запись: управляет доступом к записям базы данных.

Самый простой способ определить условие - ввести логическое выражение непосредственно в поле Условие , используя следующие значения:

ИСТИНА | Условие всегда выполняется. В качестве текста условия можно также ввести любое значение, не равное 0.
ЛОЖЬ | Условие не выполняется. Здесь также можно ввести значение 0.

Если оставить поле Условие пустым, условие будет считаться невыполненным.

При определении условия используйте те же элементы для определения формулы, а именно: операторы сравнения, математические и статистические функции, форматы чисел, переменные и константы.

При определении условия можно использовать следующие типы переменных:

1. Предварительно определённые переменные LibreOfficeDev, используемые в статистике в свойствах документа.

2. Пользовательские переменные, созданные с помощью поля "Задать переменную".

3. Переменные на основе данных пользователя

4. Переменные на основе содержимого полей базы данных

В выражениях условий не могут использоваться внутренние переменные, такие как номера страниц и глав.

## Условия и переменные

В следующих примерах используется переменная "х".

x == 1 или x EQ 1 | Условие истинно, если "х" равно 1.
x != 1 или x NEQ 1 | Условие истинно, если "х" не равно 1.
sinx == 0 | Условие истинно, если "х" кратно пи.

Для использования операторов сравнения со строками операнды следует заключить в двойные кавычки:

x == "ABC" или x EQ "ABC" | Проверяет, содержит ли переменная «х» строку «ABC» (ИСТИНА), или не содержит (ЛОЖЬ).
x == "" или x EQ "" или !x или NOT x | Проверяет, содержит ли переменная "х" пустую строку.

Оператор сравнения "равно" в условии должен быть представлен двумя знаками равенства (==). Например, если переменной "х" задано значение 1, условие можно ввести в виде x==1.

## Сведения о пользователе

Можно включить данные пользователя при определении условий. Для изменения данных пользователя, выберите LibreOfficeDev - ПараметрыСервис - Параметры - LibreOfficeDev - Пользователь. Данные пользователя должны вводиться в виде строк. Для запроса к данным пользователя можно использовать условия «==» (EQ), «!=» (NEQ), или «!» (NOT).

В следующей таблице перечислены переменные для пользовательских данных и их значение.

Переменная | Значение
--- | ---
user_firstname | Имя
user_lastname | Фамилия
user_initials | Инициалы
user_company | Organization
user_street | Улица
user_country | Страна
user_zipcode | Почтовый индекс
user_city | Город
user_title | Звание
user_position | Должность
user_tel_work | Номер рабочего телефона
user_tel_home | Номер домашнего телефона
user_fax | Факс
user_email | Адрес эл. почты
user_state | Область (не во всех версиях LibreOfficeDev)

Например, чтобы скрыть абзац, текст или раздел от пользователя с конкретными инициалами, например, «ЛМ», введите условие: user_initials==«ЛМ».

## Условия и поля базы данных

Можно определить условия для доступа к базам данных или полям баз данных. Например, можно проверить содержимое поля базы данных из условия или использовать поля базы данных в логических выражениях. В таблице приведено ещё несколько примеров использования баз данных в условиях:

Пример | Значение
--- | ---
Database.Table.Company Database.Table.Company NEQ "" Database.Table.Company != "" | Условие истинно, если поле COMPANY не пусто. (В первом примере оператор не требуется.)
!Database.Table.Company NOT Database.Table.Company Database.Table.Company EQ "" Database.Table.Company =="" | При пустом поле COMPANY возвращает значение ИСТИНА.
Database.Table.Company != "Sun" Database.Table.Company NEQ "Sun" | Возвращает значение ИСТИНА, если текущее значение в поле COMPANY отлично от «Sun». (Восклицательный знак обозначает отрицание.)
Database.Table.Firstname AND Database.Table.Name | Возвращает значение ИСТИНА, если запись содержит имя и фамилию.

Обратите внимание на разницу между логическим НЕ ("!") и оператором сравнения "не равно" "!=" (NEQ).

При обращении к полю базы данных в условии используйте форму "Databasename.Tablename.Fieldname". Если одно из имён содержит символ, являющийся оператором, например, знак "минус" (-), заключите имя в квадратные скобки, например, Databasename.[Table-name].Fieldname. Никогда не используйте пробелы в имени поля.

### Пример: Скрытие пустого поля базы данных

Можно создать условие, которое скрывает пустое поле, например, если поле COMPANY пусто для некоторых записей данных.

Выберите элемент списка Скрытый абзац и введите следующее условие: Addressbook.Addresses.Company EQ ""

или

NOT Addressbook.Addresses.Company

Если поле базы данных COMPANY пусто, условие истинно и абзац будет скрыт.

Для отображения скрытых абзацев на экране выберите LibreOfficeDev - ПараметрыСервис - Параметры - LibreOfficeDev Writer - Вид и снимите флажок Скрытые абзацы.

## Примеры условий в полях

В следующих примерах используется поле "Текст с условием", однако они могут быть применены к любым полям, которые могут быть связаны с условием. Используемый для условий синтаксис используется также для полей "Скрытый текст", "Скрытый абзац", "Любая запись" или "Следующая запись".

## Для отображения текста с условием на основе числа страниц поступайте следующим образом:

1. Выберите пункты менюВставка - Поля - Дополнительно и откройте вкладку Функции.

2. В списке Тип выберите поле «Текст с условием».

3. В поле Условие введите "page == 1".

4. В поле Если выполняется введите "В документе только одна страница".

5. В поле Иначе введите "В документе несколько страниц".

6. Нажмите кнопку Вставить, затем нажмите кнопку Закрыть.

## Для отображения текста с условием на основе пользовательской переменной:

1. Выберите Вставка - Поля - Ещё поля, а затем щёлкните вкладку Переменные.

2. В списке Тип выберите поле «Задать переменную».

3. В поле Имя введите «Прибыль».

4. В поле Значение введите "5000".

5. Нажмите кнопку Вставить.

6. Откройте вкладку Функции и выберите поле «Текст с условием» в списке Тип.

7. В поле Условие введите «Прибыль < 5000».

8. В поле Если выполняется введите "Цель не достигнута".

9. В поле Иначе введите «Цель достигнута».

10. Нажмите кнопку Вставить.

Для изменения содержимого переменной "Прибыль" дважды щёлкните поле переменной.

## Для отображения текста с условием на основе содержимого поля базы данных.

В первой части данного примера в документ вставляется пробел между полями «Имя» и «Фамилия», а во второй части вставляется текст, основанный на содержимом поля. В данном примере требуется зарегистрированный в LibreOfficeDev источник адресов.

1. Выберите пункты менюВставка - Поля - Дополнительно и откройте вкладку База данных.

2. В списке Тип выберите "Поля слияния".

3. В поле Выбор базы данных дважды щёлкните адресную книгу, щёлкните «Имя», затем нажмите кнопку Вставить. Повторите то же самое для поля «Фамилия».

4. В документе установите курсор между двумя полями, нажмите пробел и вернитесь в диалоговое окно Поля.

5. Откройте вкладку Функции и выберите «Текст с условием» в списке Тип.

6. В поле Условие введите: "Addressbook.addresses.firstname".

7. В поле Если выполняется введите пробел, а поле Иначе оставьте пустым.

Теперь можно использовать условие, чтобы вставить текст на основе содержимого поля «Имя».

1. В диалоговом окне Поля выберите вкладку Функции.

2. В поле Тип выберите «Текст с условием».

3. В поле Условие введите: Addressbook.addresses.firstname == "Михаил"

4. В поле Если выполняется введите «Уважаемый».

5. В поле Иначе введите «Добрый день».

6. Нажмите кнопку Вставить.

Пожалуйста, поддержите нас!