Последнее обновление: 28 мая 2026 г.
Представьте: вы смотрите на свою программу для управления проектами и думаете: «Постойте, а массивным формулам тут вообще место?» Ведь обычно мы воспринимаем формулы как нечто, что просто складывает или вычитает числа, верно? Что ж, отложите эту мысль.
Дело вот в чём: когда у вас в проекте куча задач, и каждая живёт своей жизнью, для успеха нужно стать виртуозом метрик. Вот тут-то массивные формулы и приходят на помощь. В этой статье я покажу, как эти эффектные формулы способны преобразить вашу работу с данными. Готовьтесь погрузиться в мир вашего проекта так, как никогда раньше!
Array Formulas доступны для всех уровней подписки. Дополнительную информацию можно найти на нашей странице тарифов.
Массив — это набор данных, например задачи, исполнители, длительности и числа. Массивная формула позволяет выполнять несколько вычислений в пределах выбранного набора данных, то есть массива.
Например, если вы хотите вычислить отклонение задачи от плана, можно написать такую формулу:
timeSpent - estimated
Затем, если вы хотите вычислить отклонение от плана по всем подзадачам, можно написать такую формулу:
subtasks.timeSpent - subtasks.estimated
Это может показаться чем-то непонятным — я объясню это позже. Сейчас вам достаточно знать, что в формуле выше subtasks — это набор подзадач, и с массивными формулами вы можете просто вычесть один массив из другого, как будто работаете с обычными значениями.
Вы можете поэкспериментировать с формулой, просто введя её в описании задачи и заключив в {{ и }}. Дополнительную информацию см. в нашем руководстве.
В формуле Quire вы можете задать произвольный массив с помощью [ и ]. Например, набор из 1, 2 и 3 выглядит так:
[1, 2, 3]
Затем, если вы хотите умножить его на значение, можно сделать так:
[1, 2, 3] * 5
Результат будет
[5, 10, 15]
Также можно выполнить вычисление над двумя массивами:
[1, 2, 3] - [2, 1, 3]
Результат будет
[-1, 1, 0]
Хорошо, теперь мы можем объяснить упомянутую выше формулу:
subtasks.timeSpent - subtasks.estimated
Предположим, у нас есть три подзадачи, затраченное время по которым составляет 1 ч, 2 ч и 3 ч, а расчётное время — 2 ч, 1 ч, 3 ч. Тогда subtasks.timeSpent на самом деле вычисляется как [1h, 2h, 3h], а subtasks.estimated — как [2h, 1h, 3h]. И результат — [-1h, 1h, 0h].
1h означает продолжительность 1 час. Дополнительную информацию см. в нашем руководстве.
Чтобы отсортировать набор данных, достаточно использовать функцию sort:
sort([3, 1, 5, 2, 4]) * 2
Она вернёт следующий результат:
[2, 4, 6, 8, 10]
Это эквивалентно sort(3, 1, 5, 2, 4) * 2
Если вам нужны только первые три элемента, можно использовать оператор limit так:
sort([3, 1, 5, 2, 4]) * 2 limit 3
Если вы хотите отфильтровать меньшие значения, можно использовать оператор where так:
[3, 1, 5, 2, 4] where any > 4
Он вернёт следующий результат:
[3, 5]
any — ключевое слово, обозначающее каждое значение в массиве слева от оператора where.
Вернёмся к формуле, вычисляющей отклонение от плана, и поэкспериментируем с ней: subtasks.timeSpent - subtasks.estimated.
Она возвращает отклонение по времени для всех подзадач. Теперь предположим, что мы хотим получить сами задачи, а не отклонение от плана, — тогда можно использовать оператор order by так:
subtasks order by any.timeSpent - any.estimated
По умолчанию используется сортировка по возрастанию. Вы можете изменить её на убывание с помощью ключевого слова desc так:
subtasks order by desc any.timeSpent - any.estimated
А вот более продвинутая и сложная формула. Попробуйте догадаться, что она делает:
subtasks where any.timeSpent > 1d and any.due < tomorrow and any.priority >= high order by desc any.timeSpent - any.estimated limit 3
Применить это проще простого — достаточно создать пользовательское поле с формулой. Допустим, вы хотите следить за тем, во сколько вам обходится каждая задача. Сначала создайте пользовательское поле, скажем, Cost, чтобы записывать стоимость каждой задачи.

Затем создайте ещё одно поле, например Total Cost, чтобы рассчитывать общую стоимость каждой задачи вместе с её подзадачами следующим образом.

Несколько моментов, на которые стоит обратить внимание:
Cost и cost равнозначны. Так же, как SUBTASKS и subtasks.{ и }. Именно поэтому в формуле выше вы видите {Total Cost}.Давайте копнём чуть глубже, как вычисляется Total Cost. Сначала предположим, что у нас есть три задачи: A, B и C. Причём B и C — подзадачи A. Также вы указали Cost для A, B, C равным 50, 30, 10 соответственно. Тогда:
SUM(30, 10, 50). Получится 90.
Вот ещё один интересный способ использования формул — их можно вставить прямо в описание проекта. Представьте, что вы хотите показать общую стоимость проекта. Просто напишите в описании проекта что-то вроде этого:
Total cost: {{SUM(tasks.{Total Cost})}}
Где:
{{ и }}. Кроме того, как только вы введёте {{, окно автодополнения поможет вам завершить формулу.tasks — это встроенный идентификатор, обозначающий все задачи в проекте. Опять же, он нечувствителен к регистру.Если мы хотим узнать 5 самых дорогих задач, можно сделать так:
{{tasks order by desc any.{Total Cost} limit 5}}
Или, если вы хотите перечислить задачи, на которые ушло слишком много времени:
{{tasks where any.timeSpent - any.estimated > 1d order by desc any.timeSpent - any.estimated limit 5}}
Формулу можно поместить в любое описание, где поддерживается markdown, в том числе в задачи и комментарии. Вы даже можете подытожить результаты работы своих коллег, написав соответствующие формулы в описании их профилей.
Чтобы изучить возможности массивных формул Quire, попробуйте вводить их прямо в описании задачи — так удобнее экспериментировать.
Массивные формулы позволяют выполнять вычисления над наборами данных (задачи, подзадачи, пользовательские поля) вместо отдельных значений. Например, subtasks.timeSpent - subtasks.estimated возвращает отклонение от плана по каждой подзадаче в одну строку.
Откройте описание любой задачи, заключите формулу в двойные фигурные скобки — и по мере набора текста откроется окно автодополнения. Тот же приём работает в комментариях, описаниях проектов и пользовательских полях.
sort переупорядочивает массив, limit возвращает первые N элементов, а where фильтрует с помощью ключевого слова any. Они объединяются в цепочку, так что вы можете отсортировать подзадачи по затраченному времени по убыванию, а затем ограничить выборку тремя верхними.
Да. Любое поле, поддерживающее markdown в стиле Quire, поддерживает формулы внутри двойных фигурных скобок, включая описания задач, описания проектов и комментарии.
Арифметика над массивами, сравнение, sort/limit/where/order by и агрегации вроде SUM и AVG. Полный справочник есть в руководстве по формулам Quire.
Итак, вот и всё, что нужно знать о массивных формулах в Quire — вашем незаменимом помощнике в управлении проектами. И знаете что? Quire не просто запрыгнул в поезд массивных формул — он им управляет! Это первопроходец, пионер — первая в истории программа для управления проектами, которая принесла вам массивные формулы, и не просто принесла, а делает это на высшем уровне.
С Quire массивные формулы — это не просто функция, это отточенный до совершенства опыт. Так что, если вы нацелены вывести аналитику своих проектов на новый уровень, массивные формулы Quire здесь, чтобы покорить ваш мир. Готовьтесь считать числа, открывать инсайты и поднимать управление проектами на совершенно новый уровень с продвинутыми массивными формулами Quire. Ваши проекты скажут вам спасибо — и ваша организованная, влюблённая в данные натура тоже!