Перейти к основному содержимому

Настройка задач и процессов

Формулы: как настроить расчеты в карточках

Формулы помогают считать значения по данным карточки. Например, в карточке рекламной кампании можно записывать заявки с сайта и из чата, а общий итог получать в поле «Всего заявок». Если с сайта пришло 12 заявок, а из чата — 8, поле покажет 20. Когда вы обновите одно из чисел, итог пересчитается.

Результатом формулы может быть число, текст, дата или ответ «Да» или «Нет». Он отображается среди остальных полей карточки, а само поле с формулой также можно вывести на доску, в список или на диаграмму Ганта.

Как добавить поле с формулой

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

  1. Откройте настройки компании и перейдите в «Типы карточек».
  2. Выберите тип карточки, в котором хотите считать заявки.
  3. Добавьте поле типа «Формула».

Подробнее о создании полей и настройке карточек рассказали в отдельных статьях. Пользовательские поля, Типы карточек.

💡
Чтобы редактировать формулы, сотруднику нужны права доступа «Доступ к настройкам компании» и «Управление справочниками».

Как пользоваться редактором

Короткие выражения можно добавить напрямую из всплывающего окна, но для работы с длинными выражениями лучше использовать редактор формул. Чтобы открыть его, нажмите «Развернуть редактор».

В развернутом окне доступны три вкладки.

  • «Поля» — данные карточки, пользовательские поля, родительская карточка и подзадачи.
  • «Функции» — действия для работы с числами, текстом, датами и условиями. У функций есть описания и примеры.
  • «Операторы» — знаки для вычислений и сравнений, а также заготовки для формул из нескольких шагов.

Как составить формулу с помощью ИИ

Если у вас подключения лицензия Shtab AI, то вы сможете сгенерировать формулу с помощью Shtab AI. Для этого в окне с формулой нажмите «Сгенерировать».

Сгенерированное выражение подставится в редактор. Проверьте, что в карточке с 12 заявками с сайта и 8 из чата получается 20, затем нажмите «Сохранить». Если результат отличается от ожидаемого, уточните запрос или поправьте выражение вручную.

Как записывать формулы

Что нужно записатьПример
Значение поля{Заявки с сайта}
Число20 или 1.5. Дробная часть отделяется точкой
Текст"Цель достигнута" в двойных кавычках
Сложение и вычитание{Заявки с сайта} + {Заявки с чата}, 20 - {Заявки с сайта}
Умножение и деление{Заявки с сайта} * 2, {Заявки с чата} / 2
Действие, которое нужно выполнить первым({Заявки с сайта} + {Заявки с чата}) / 2
Соединение текста"Кампания " & {Название}
Логическое значениеИСТИНА или ЛОЖЬ. Также подходят TRUE и FALSE

Для сравнений используются = — равно, <> — не равно, > — больше, < — меньше, >= — больше или равно, <= — меньше или равно.

Функция выполняет готовое действие. Значения для неё указываются в круглых скобках. Например, ОКРУГЛ(12.345; 2) округлит число до двух знаков и вернёт 12.35.

Значения в скобках можно разделять точкой с запятой или запятой. Для дробной части числа используйте точку. У функций есть русские и английские названия. Например, СУММ и SUM выполняют одно и то же действие. Регистр букв не влияет на результат.

Как добавить условие

Допустим, цель кампании — получить хотя бы 20 заявок. Добавьте отдельное поле типа «Формула», например «Статус цели».

ЕСЛИ({Заявки с сайта} + {Заявки с чата} >= 20; "Цель достигнута"; "Ниже цели")

Первое значение в скобках — условие. Второе — результат, если условие выполняется. Третье — результат для остальных случаев.

При 12 заявках с сайта и 8 из чата поле покажет «Цель достигнута». Если из чата пришло 5 заявок, общий итог составит 17 и поле покажет «Ниже цели».

Как проверить несколько условий

Допустим, вы хотите увидеть, поступили ли заявки из обоих каналов. Добавьте поле типа «Формула» и назовите его «Проверка заявок».

ЕСЛИ(И({Заявки с сайта} > 0; {Заявки с чата} > 0); "Оба канала"; "Проверьте каналы")

Функция И проверяет, что в каждом канале есть хотя бы одна заявка. Если оба условия выполняются, поле покажет «Оба канала». В остальных случаях появится «Проверьте каналы».

Как оформить результат

Добавить подпись к числу

Если итог нужно показать с пояснением, соедините текст и результат расчёта через &.

"Всего заявок — " & ({Заявки с сайта} + {Заявки с чата})

При 12 заявках с сайта и 8 из чата получится Всего заявок — 20. Для дальнейших расчётов используйте числовое поле «Всего заявок» из первого примера.

Показать долю заявок с сайта

Разделите число заявок с сайта на их общее количество и примените формат "0%". Проверка ЕСЛИ нужна на случай, когда заявок пока нет.

ЕСЛИ(
  {Заявки с сайта} + {Заявки с чата} = 0;
  "Нет заявок";
  ТЕКСТ({Заявки с сайта} / ({Заявки с сайта} + {Заявки с чата}); "0%")
)

Если с сайта пришло 12 заявок из 20, поле покажет 60%. Формат "0%" сам переводит долю в проценты и добавляет знак %.

Как работать с датами и сроками

Посчитать дни до дедлайна

РАЗНДАТ(СЕГОДНЯ(); {Дедлайн})

СЕГОДНЯ() возвращает сегодняшнюю дату. РАЗНДАТ считает разницу от первой даты до второй. По умолчанию результат выражается в календарных днях.

Если дедлайн через пять дней, формула покажет 5. Если он прошёл пять дней назад, получится -5. При пустом дедлайне поле покажет прочерк.

Показать состояние срока

ЕСЛИ({Завершена}; "Завершена";
  ЕСЛИ(ЕПУСТО({Дедлайн}); "Без срока";
    ЕСЛИ({Дедлайн} < СЕГОДНЯ(); "Просрочено"; "В срок")))

Формула проверяет, завершена ли карточка и указан ли дедлайн. Если карточка открыта и у неё есть дедлайн, формула сравнивает его с сегодняшней датой. Карточка с дедлайном на сегодня получит результат «В срок».

Рассчитать дату через неделю

ДАТАДОБАВИТЬ({Дата начала}; 1; "weeks")

Если дата начала — 10 ноября, поле с формулой покажет 17 ноября. Чтобы сдвинуть дату на неделю назад, передайте -1. Для дней используется "days", для месяцев — "months", для часов — "hours".

Чтобы посчитать рабочие дни между датами, используйте ЧИСТРАБДНИ({Дата начала}; {Дедлайн}). Эта функция считает дни с понедельника по пятницу и включает обе даты, если они приходятся на будни. Праздники, отпуска и индивидуальные графики в расчёте не учитываются.

Как использовать данные родителя и подзадач

Взять поле родительской карточки

Чтобы вывести в подзадаче дедлайн родительской карточки, введите выражение.

{Родитель.Дедлайн}

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

Сложить заявки за неделю

В родительской карточке можно вести кампанию за неделю, а в подзадачах — записывать заявки за каждый день. Добавьте поля «Заявки с сайта» и «Заявки из чата» в карточки дней. В родительской карточке создайте поле «Заявки за неделю» с формулой.

СУММ({Подзадачи.Заявки с сайта}) + СУММ({Подзадачи.Заявки из чата})

Первая СУММ складывает заявки с сайта по всем подзадачам, вторая — заявки из чата. Затем формула складывает итоги двух каналов.

ПодзадачаЗаявки с сайтаЗаявки из чатаВсего за день
Понедельник12820
Вторник6612
Среда538

В этом примере поле «Заявки за неделю» покажет 40.

Посчитать подзадачи или собрать их названия

Что нужно получитьФормулаПример результата
Количество подзадачСЧЁТ({Подзадачи})3
Количество подзадач с заполненным дедлайномСЧЁТ({Подзадачи.Дедлайн})2, если срок указан у двух карточек
Названия подзадач через запятуюОБЪЕДИНИТЬ({Подзадачи.Название}; ", ")Понедельник, Вторник, Среда

Как составить формулу из нескольких шагов

Если нужно посчитать заявки только по незавершённым подзадачам, пройдите по карточкам с помощью цикла и проверяйте состояние каждой. Для такого расчёта можно создать отдельное поле «Заявки по открытым подзадачам».

ПЕРЕМЕННАЯ итог = 0
ЦИКЛ подзадача В {Подзадачи}
  ЕСЛИ НЕ({подзадача.Завершена}) ТО
    итог = итог + {подзадача.Заявки с сайта} + {подзадача.Заявки из чата}
  КОНЕЦ
КОНЕЦ
итог

ПЕРЕМЕННАЯ задаёт начальное значение итога. ЦИКЛ по очереди берёт каждую подзадачу. Если она открыта, её заявки добавляются к итогу. В последней строке формула выводит накопленное число.

Если завершить карточку «Среда» с 8 заявками, в результате останутся понедельник и вторник. Формула покажет 32.

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

Какие поля можно использовать в формулах

Поля можно выбрать на вкладке «Поля» или из подсказок при вводе {.

ДанныеПримеры ссылок
Название и расположение карточки{Название}, {ID}, {Проект}, {Группа}
Состояние карточки{Статус}, {Приоритет}, {Тип}, {Завершена}
Участники и метки{Исполнители}, {Ответственные}, {Автор}, {Теги}
Даты{Дата начала}, {Дедлайн}, {Дата создания}, {Дата завершения}
Счётчики{Чеклист всего}, {Чеклист выполнено}, {Комментарии}, {Файлы}
Пользовательские поля{Заявки с сайта}, {Заявки из чата} и другие поля вашей компании

Названия в подсказках могут отличаться от подписей в карточке. Например, в формуле для меток используется {Теги}. Исполнителей и другие списки можно посчитать через СЧЁТ или собрать в текст через ОБЪЕДИНИТЬ.

Как использовать результат другой формулы

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

МАКС(25 - {Всего заявок}; 0)

При 20 заявках результат будет 5. Когда заявок станет 25 или больше, формула покажет 0.

Задавайте зависимости в одном направлении. В этом примере «Осталось до цели» использует «Всего заявок». Если «Всего заявок» тоже начнёт ссылаться на «Осталось до цели», возникнет взаимная ссылка.

Справочник функций

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

Числа

ФункцияДругие названияЧто делает
ОКРУГЛ(число; [знаков])ROUNDОкругляет до указанного числа знаков. По умолчанию — до целого
ОКРВНИЗ(число)FLOOR, ЦЕЛОЕ, INTОкругляет вниз до целого
ОКРВВЕРХ(число)CEILINGОкругляет вверх до целого
МОДУЛЬ(число)ABSВозвращает абсолютное значение
ОСТАТ(число; делитель)MODВозвращает остаток от деления
СТЕПЕНЬ(число; степень)POWERВозводит число в степень
КОРЕНЬ(число)SQRTВычисляет квадратный корень
СУММ(значение; …)SUMСкладывает числа или значения списка
СРЗНАЧ(значение; …)AVERAGEВычисляет среднее арифметическое
МИН(значение; …)MINВыбирает наименьшее значение
МАКС(значение; …)MAXВыбирает наибольшее значение

Текст и списки

ФункцияДругие названияЧто делает
СЦЕПИТЬ(значение; …)CONCAT, СЦЕП, CONCATENATEСоединяет значения в текст
ПРОПИСН(текст)UPPERПереводит текст в заглавные буквы
СТРОЧН(текст)LOWERПереводит текст в строчные буквы
ДЛСТР(текст)LENСчитает символы
СЖПРОБЕЛЫ(текст)TRIMУбирает лишние пробелы
ЛЕВСИМВ(текст; количество)LEFTВозвращает указанное число символов с начала
ПРАВСИМВ(текст; количество)RIGHTВозвращает указанное число символов с конца
ПСТР(текст; начало; количество)MIDВозвращает фрагмент текста с указанной позиции
ПОДСТАВИТЬ(текст; что; чем)SUBSTITUTE, REPLACEЗаменяет все совпадения в тексте
НАЙТИ(что; текст)FINDВозвращает позицию первого совпадения или 0
СОДЕРЖИТ(текст; что)CONTAINSПроверяет, есть ли указанный текст в строке, без учёта регистра
ТЕКСТ(значение; [формат])TEXT, FORMATПреобразует значение в текст с заданным форматом
ЗНАЧЕН(текст)VALUEПреобразует текст в число
ОБЪЕДИНИТЬ(список; [разделитель])JOINСобирает список в текст через разделитель
СЧЁТ(список)COUNT, СЧЕТСчитает элементы списка или заполненные значения поля подзадач

Даты

ФункцияАнглийское названиеЧто делает
СЕГОДНЯ()TODAYВозвращает сегодняшнюю дату
ТДАТА()NOWВозвращает текущие дату и время
ДАТА(год; месяц; день)DATEСобирает дату из года, месяца и дня
РАЗНДАТ(от; до; [единица])DATEDIFFСчитает разницу между датами. По умолчанию — в днях
ДАТАДОБАВИТЬ(дата; число; [единица])DATEADDСдвигает дату на указанное количество единиц времени
ЧИСТРАБДНИ(от; до)NETWORKDAYSСчитает будни между датами включительно
ГОД(дата)YEARВозвращает год
МЕСЯЦ(дата)MONTHВозвращает номер месяца
ДЕНЬ(дата)DAYВозвращает день месяца
ДЕНЬНЕД(дата)WEEKDAYВозвращает номер дня недели от 1 для понедельника до 7 для воскресенья

В РАЗНДАТ и ДАТАДОБАВИТЬ можно указать единицу времени "days", "weeks", "months", "years", "hours" или "minutes".

Условия и проверки

ФункцияАнглийское названиеЧто делает
ЕСЛИ(условие; если_да; [если_нет])IFВыбирает результат по условию
И(условие; …)ANDПроверяет, выполняются ли все условия
ИЛИ(условие; …)ORПроверяет, выполняется ли хотя бы одно условие
НЕ(условие)NOTМеняет условие на противоположное
ЕПУСТО(значение)ISBLANKПроверяет, пустое ли значение
ЕСЛИОШИБКА(выражение; замена)IFERRORВозвращает замену при ошибке вычисления

Если вы переходите из Excel

При переносе расчёта замените ссылки на ячейки ссылками на поля карточки. Например, в выражении A2+B2 вместо ячеек можно указать {Заявки с сайта} и {Заявки из чата}. У некоторых знакомых функций отличаются порядок аргументов и результат.

ФункцияЧто учесть при переносе
ОКРВНИЗ, ОКРВВЕРХВ Shtab принимают одно число и округляют до целого. В Excel у этих функций есть второй обязательный аргумент для округления до кратного. ОКРВНИЗ, ОКРВВЕРХ
СЧЁТВ Shtab можно посчитать заполненные поля подзадач, в том числе текстовые. В Excel при подсчёте ячеек СЧЁТ учитывает числовые значения. СЧЁТ в Excel
ОБЪЕДИНИТЬВ Shtab сначала указывается список, затем разделитель. Английское имя — JOIN. В Excel TEXTJOIN принимает разделитель, признак пропуска пустых ячеек и затем текст. ОБЪЕДИНИТЬ в Excel
РАЗНДАТВ Shtab английское имя — DATEDIFF, с двумя буквами F. Функция по умолчанию считает дни и может вернуть отрицательное число. В Excel у DATEDIF нужно явно указать единицу, а начальная дата позже конечной вызывает ошибку. РАЗНДАТ в Excel
НАЙТИВ Shtab, если совпадения нет, функция возвращает 0. В Excel отсутствие совпадения вызывает ошибку и можно указать начальную позицию поиска. НАЙТИ в Excel
REPLACEВ Shtab это другое название ПОДСТАВИТЬ, которое заменяет совпадения в тексте. В Excel REPLACE заменяет заданное количество символов с указанной позиции. ЗАМЕНИТЬ в Excel

Почему формула показывает другой результат

Что произошлоЧто проверить
Итог меньше ожидаемогоПроверьте, заполнены ли оба исходных поля. Пустое числовое поле при сложении считается нулём
В поле прочеркОткройте редактор и проверьте исходные значения. Например, пустой дедлайн или деление на ноль могут дать пустой результат
Формула не сохраняетсяПроверьте сообщение под выражением, названия полей, скобки и аргументы функций
Редактор сообщает о взаимной ссылкеПроверьте, не зависит ли формула от самой себя через другое поле
Расчёт перестал работать после удаления поляЗамените ссылку на удалённое поле или уберите её из выражения
Формула слишком сложнаяСократите выражение. Действуют ограничения до 2000 символов, 50 ссылок на поля и 200 шагов
Редактор не открываетсяПроверьте, доступны ли пользовательские поля в компании и есть ли у вас права на редактирование формул

Результат вычисляется из исходных значений карточки. Чтобы изменить результат, отредактируйте эти значения или выражение. Чтобы убрать расчёт со всех карточек с этим полем, очистите выражение в редакторе и сохраните изменения.

По результатам формул пока нельзя фильтровать, сортировать или группировать карточки. Эти значения также не включаются в экспорт XLSX.

Если формула использует поле с ограниченным доступом, итог может быть виден сотрудникам, которые не видят исходное значение. Например, сотрудник может видеть общее число заявок без доступа к разбивке по каналам. Проверьте, кому доступно поле с итогом.


По любым вопросам будем рады помочь в поддержке.