Вложенность функций: различия между версиями

Материал из Planfix
Перейти к: навигация, поиск
Нет описания правки
Нет описания правки
 
(не показано 15 промежуточных версий этого же участника)
Строка 7: Строка 7:
Функции в ПланФиксе поддерживают вложенность. Это значит, что любой из аргументов [[Функции |функции]] может быть заменен другой функцией, главное, чтобы тип её результата (строка, число, дата) соответствовал тому типу функции, в которую вы её добавили.
Функции в ПланФиксе поддерживают вложенность. Это значит, что любой из аргументов [[Функции |функции]] может быть заменен другой функцией, главное, чтобы тип её результата (строка, число, дата) соответствовал тому типу функции, в которую вы её добавили.


Все функции, которые используются вместо аргумента в другой функции, должны содержать то количество аргументов и тот синтаксис, который указан в справке добавляемой [[Функции |функции]].
 
== Важно ==
Все функции, которые используются вместо аргумента в другой функции, должны содержать то количество аргументов и порядок, который указан в справке добавляемой функции.




== Функция СЦЕПИТЬ ==
== Функция СЦЕПИТЬ ==
Функция ЕСЛИ содержит 3 аргумента:
Функция СЦЕПИТЬ содержит 3 аргумента:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
СЦЕПИТЬ('''"Текст_1"''';"Разделитель";'''"Текст_2"''')
СЦЕПИТЬ('''"Текст_1"''';"Разделитель";'''"Текст_2"''')
</div>
</div>
Аргументы:
Аргументы:
*'''Текст_1''' — текст, который соединяем.
*'''Текст_1''' — текст, который соединяем. Вместо аргумента можно добавить другую функцию над строками.
*'''Разделитель''' — может быть любым, даже пробелом — " ".
*'''Разделитель''' — может быть любым, даже пробелом — " ".
*'''Текст_2''' — текст, который соединяем.
*'''Текст_2''' — текст, который соединяем. Вместо аргумента можно добавить другую функцию над строками.


Вместо аргумента Текст_1 можно добавить другую функцию над строками, например, добавить ещё одну функцию СЦЕПИТЬ. При этом важно сохранить все аргументы функции и её синтаксис. В итоге получим такую функцию:
Вместо аргумента Текст_1 можно добавить другую функцию над строками, например, добавить ещё одну функцию СЦЕПИТЬ. При это важно указать все аргументы функции как в справке:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<span style="color:red;">СЦЕПИТЬ(</span><span style="color:green;">СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2")</span><span style="color:red;">;"Разделитель";"Текст_2"</span>)
<span style="color:red;">СЦЕПИТЬ(</span><span style="color:green;">СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2")</span><span style="color:red;">;"Разделитель";"Текст_2"</span>)
Строка 26: Строка 28:
Обратите внимание, добавленную вместо аргумента функцию двойными кавычками выделять не надо.
Обратите внимание, добавленную вместо аргумента функцию двойными кавычками выделять не надо.


Аргументы новой функции со вложенной функцией:
Аргументы новой функции:
*СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2")
*СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2")
*Текст_2
*Текст_2
Строка 33: Строка 35:




== Функция ЕСЛИ с вложенной функцией И ==
== Функция ЕСЛИ ==
Содержит 3 аргумента:
Содержит 3 аргумента:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
Строка 40: Строка 42:
Аргументы:
Аргументы:
*'''Условие''' — логическое выражение с использованием символов >, <, =, >=, <=, !=, другой функции или значения. Часто используется функция И.
*'''Условие''' — логическое выражение с использованием символов >, <, =, >=, <=, !=, другой функции или значения. Часто используется функция И.
*'''значение_да''' — числовое или строковое значение, которое вернет функция, если условие выполнится.
*'''значение_да''' — числовое или строковое значение, итоговый результат функции, если условие выполнится.
*'''значение_нет''' — числовое или строковое значение, которое вернет функция, если условие не выполнится.
*'''значение_нет''' — числовое или строковое значение, итоговый результат функции, если условие не выполнится.


Вместо условия можно использовать функцию [[Функция И |И]]:
Вместо условия можно использовать функцию [[Функция И |И]]:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
И(условие1;условие2)
</div>
В итоге функция ЕСЛИ станет выглядеть так:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<span style="color:red;">ЕСЛИ(</span><span style="color:green;">И(условие1;условие2)</span><span style="color:red;">;значение_да;значение_нет)</span>
<span style="color:red;">ЕСЛИ(</span><span style="color:green;">И(условие1;условие2)</span><span style="color:red;">;значение_да;значение_нет)</span>
</div>
</div>


Если требуется больше аргументов в условиях, можно ещё вложить одну функцию И в условия:
Если у вас более сложная задача, например, функция должна проверить три условия одновременно, то используйте вложенность функции И:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<span style="color:red;">ЕСЛИ(</span><span style="color:green;">И(<span style="color:blue;">И(условие1;условие2)</span>;условие2)</span><span style="color:red;">;значение_да;значение_нет)</span>
<span style="color:red;">ЕСЛИ(</span><span style="color:green;">И(<span style="color:blue;">И(условие1;условие2)</span>;условие2)</span><span style="color:red;">;значение_да;значение_нет)</span>
</div>
</div>
Например:
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">
<span style="color:red;">ЕСЛИ(</span><span style="color:green;">И(<span style="color:blue;">И(<nowiki>{{Системные.Сегодня.Число}}=19</nowiki>;<nowiki>{{Задача.Полных рабочих дней}}>15</nowiki>)</span>;<nowiki>{{Задача.Статус}}="В работе"</nowiki>)</span><span style="color:red;">;"Завершаем";"Чего-то не хватает")</span>
</div>


== Перейти ==
== Перейти ==
*[[Функции]]
*[[Функции]]
*[[Описание возможностей]]
*[[Описание возможностей]]

Текущая версия от 15:19, 19 мая 2023

Функции в ПланФиксе поддерживают вложенность. Это значит, что любой из аргументов функции может быть заменен другой функцией, главное, чтобы тип её результата (строка, число, дата) соответствовал тому типу функции, в которую вы её добавили.


Важно

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


Функция СЦЕПИТЬ

Функция СЦЕПИТЬ содержит 3 аргумента:

СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2")

Аргументы:

  • Текст_1 — текст, который соединяем. Вместо аргумента можно добавить другую функцию над строками.
  • Разделитель — может быть любым, даже пробелом — " ".
  • Текст_2 — текст, который соединяем. Вместо аргумента можно добавить другую функцию над строками.

Вместо аргумента Текст_1 можно добавить другую функцию над строками, например, добавить ещё одну функцию СЦЕПИТЬ. При это важно указать все аргументы функции как в справке:

СЦЕПИТЬ(СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2");"Разделитель";"Текст_2")

Обратите внимание, добавленную вместо аргумента функцию двойными кавычками выделять не надо.

Аргументы новой функции:

  • СЦЕПИТЬ("Текст_1";"Разделитель";"Текст_2")
  • Текст_2

По такому принципу можно формировать функции с разными уровнями вложенности.


Функция ЕСЛИ

Содержит 3 аргумента:

ЕСЛИ(условие;значение_да;значение_нет)

Аргументы:

  • Условие — логическое выражение с использованием символов >, <, =, >=, <=, !=, другой функции или значения. Часто используется функция И.
  • значение_да — числовое или строковое значение, итоговый результат функции, если условие выполнится.
  • значение_нет — числовое или строковое значение, итоговый результат функции, если условие не выполнится.

Вместо условия можно использовать функцию И:

И(условие1;условие2)

В итоге функция ЕСЛИ станет выглядеть так:

ЕСЛИ(И(условие1;условие2);значение_да;значение_нет)

Если у вас более сложная задача, например, функция должна проверить три условия одновременно, то используйте вложенность функции И:

ЕСЛИ(И(И(условие1;условие2);условие2);значение_да;значение_нет)

Например:

ЕСЛИ(И(И({{Системные.Сегодня.Число}}=19;{{Задача.Полных рабочих дней}}>15);{{Задача.Статус}}="В работе");"Завершаем";"Чего-то не хватает")


Перейти