Вычисляемые поля задач

Сегодняшняя новость хорошо иллюстрирует процесс развития ПланФикса, о котором я часто упоминаю. Ваши идеи, мысли, примеры каких-то жизненных ситуаций, которыми вы с нами делитесь, постепенно укладываются в общую картину. В какой-то момент они реализуются в коде, включаются в систему и продолжают жить и развиваться уже в новом качестве.

Процесс работы над ПланФиксом

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

Затем наступает время первых шагов. Со стороны в них не всегда угадывается связь с рассматриваемой идеей. Например, запуск в сентябре прошлого года полей типа “Итоги аналитики” мог показаться чем-то отдельным, хотя на самом деле это одна из первых частей реализации вычисляемых полей. Затем были вычисляемые поля аналитик, которые уже гораздо ближе подбирались к теме. И вот, наконец, сегодня мы запустили вычисляемые поля в задачах.

 

Где это?
Добавлять вычисляемое поле лучше сразу в шаблоне задачи, в котором вы планируете его использовать:

Добавлегние нового поля в шаблоне задачи

 

В списке типов пользовательских полей появился новый пункт:

Вычисляемое поле в списке кастомных полей ПланФикса

 

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

Поле для ввода формулы вычисляемого поля

 

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

 

Для чего это?
Первое, что приходит в голову, это использование вычисляемых полей в шаблонах различных заказов и заявок. Очень часто необходимо рассчитать значение по введенным в такую заявку данным. Например, площадь остекления по размерам окна или итоговую стоимость доставки заказа с учетом подъема на этаж.

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

 

Как это работает?
Представим, что в задаче-контракте с клиентом у вас оговорен суммарный объем оказываемых в его рамках услуг. Для этой цели в шаблон задачи добавлено поле “Длительность в часах”. Проводя работы по договору, вы или ваши сотрудники отражаете их длительность аналитикой, например стандартной “Фактическое время работы”. В шаблон задачи добавлено поле ”Суммарное время работы над задачей”, в котором собираются итоги по этой аналитике. Добавив вычисляемое поле “Остаток по договору” с простой формулой:

Формула в вычисляемом поле ПланФикса

 

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

Отображение остатка оплаченного клиентом времени по договору обслуживания

Тут есть важный момент, о котором я хочу вас предупредить. Вычисляемое поле пересчитывается только при создании или изменении самой задачи. Если, к примеру, в формуле вы используете какой-то реквизит из карточки контрагента задачи, и этот реквизит у него изменился, значение в вычисляемом поле в этот момент не пересчитается. Для того, чтобы это произошло, нужно какое-то изменение в самой задаче, пусть и не связанное конкретно с участвующими в формуле значениями.

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

  • вы сделали что-то для клиента и добавляете в задачу аналитику “Фактическое время работы”;
  • на это событие реагирует поле “Суммарное время работы над задачей” — оно отвечает за суммирование данных из этой аналитики — и пересчитывается, изменяя свое значение;
  • изменение значения поля “Суммарное время работы над задачей” в свою очередь генерирует событие “Задача изменена”, а тут уже просыпается мафия (в смысле, вычисляемые поля) и быстренько пересчитывает свои формулы, кабы чего не упустить;
  • вот так в вычисляемом поле “Остаток по договору” сразу после добавления в задачу аналитики оказывается актуальное значение.

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

 

Что дальше?
Два следующих шага по ветке развития вычисляемых полей:

  • Появление вычисляемых полей в проектах и контактах. Там тоже иногда нужно кое-что повычислять.
  • Возможность суммировать данные из полей подзадач в вычисляемое поле надзадачи или проекта. Это откроет дополнительный пул возможностей для сбора и обработки данных в ПланФиксе.

Еще дальше мы с вами заглядывать пока не будем. А вот воздействовать на это прекрасное далёко можно и нужно, подбрасывая свои идеи и примеры в воронку на картинке, которой начинается эта заметка.

Дмитрий Гончаренко Команда ПланФикса

P.S. На этой неделе состоится торжественный запуск первой email-рассылки с зубодробительной подборкой забубенных новостей и примеров для энтузиастов ПланФикса. Если вы относите себя к этой славной когороте, но еще не подписались — торопитесь. Детали тут.

40 Comments

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

    Интересно что же в новостях будет забубенного.

  2. Понимаю что это нахальство :), но: хотелось бы свои функции делать.
    Например: есть 2 числа — первое префикс организации, второе 3-х значный порядковый номер, соединяем их как строки, вычисляем контрольный разряд, на выходе строка со штрих-кодом EAN-13.
    Функция на Visual Basic:
    Function RetCheckSymbol(s As String) As String
    ‘s — строка штрих-кода
    cs = 0 ‘контрольная сумма

    For i = 1 To 12
    digit = Mid(s, i, 1) — «0» ‘прочитаем цифры штрих-кода по одной
    If i Mod 2 = 0 Then
    cs = cs + digit * 3 ‘умножение каждой цифры на ее вес, 1 или 3
    Else
    cs = cs + digit * 1
    End If
    Next i

    cs = cs Mod 10 ‘какое число должно быть добавлено, чтобы сделать сумму в cs делящейся на 10
    If cs 0 Then
    cs = 10 — cs
    End If

    RetCheckSymbol = cs
    End Function

  3. Спасибо!
    Планируется ли добавление условных операторов в вычисляемые поля? Например, как в Ексель:
    =ЕСЛИ(A=5;10;B) // Если значение поля А равно 5, то установить значение вычисляемого поля 10, в противном случае установить значение поля B.

  4. Ок.
    А как рассчитать остаток в случае, если начальное сальдо минут на проведение работ рассчитывается в динамике, допустим через отчет по принципу: общий баланс минут создает задача Договор обслуживания с пакетом минут введенных через отдельную аналитику в этой задаче минус подзадачи с фактическим временем только по определенному, подчеркиваю, определенному виду работ?
    Полученное таким образом сальдо мы должны рассчитать в поле Длительность в часах, как в примере, либо записать в это поле напрямую из отчета, который выполняет эту функцию расчета безупречно . И далее отнять объем затраченного времени по данной задаче, рассчитанный через итоги аналитик. Но вот загвоздка! Итоги не могут рассчитаться для определенного вида работ. А только для всей аналитики фактическое время, в целом.
    В сухом остатке: не можем рассчитать начальный объем, не можем рассчитать сколько списали в рамках текущей задачи по опр. виду работ и соответственно не можем сориентировать клиента об остатке, не заглядывая в отчет.

    1. Дмитрий Гончаренко

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

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

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

  5. Рассматривал указанную вами возможность с другими аналитиками.
    Просто перекраивать всю работу очень не хотелось бы) и переучивать персонал)
    А уточнения по параметру в самой аналитике на примере вида работ в аналитике фактическое время в будущем в итогах аналитик не предвидеться?

    На самом деле всем функционалом ПФ очень довольны. Спасибо вам огромное за труд. Просто хотелось еще немножечко магии)):

    Чтобы, когда консультант начинал работать с клиентом, сразу бы видел доступный остаток, как я описал выше, без перехода в отчет.
    А когда завершил консультацию и закрыл время, из рассчитанного поля сообщил бы клиенту оставшийся объем минут с учетом списанного им объёма за период текущей работы.
    Вот)

    1. Дмитрий Гончаренко

      >> А уточнения по параметру в самой аналитике на примере вида работ в аналитике фактическое время в будущем в итогах аналитик не предвидеться?

      — Для того, чтобы это работало, нужно усложнять настройку поля типа «Итоги аналитики» и помимо реквизита, по которому будет происходить суммирование, добавлять в него дополнительные параметры, которым должна соответствовать эта запись аналитики, чтобы ее значение учлось в накапливаемой сумме. Это не то чтобы совсем невозможно, просто достаточно сложно — и в реализации, и (что гораздо важнее) в настройке всем последующим поколениям пользователей ПланФикса. Поэтому мы не торопимся копать в такие глубины, чтобы не закопаться самим и не закопать в них наших клиентов.

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

    В нашем случае, не хватает возможности отображать блок итогов по сумме из вычисляемых полей в задаче. Это бы сильно упростило жизнь. Это ж вроде как не сложно сделать? Удивился почему нет 🙂

      1. В планировщике любом, вот скриншот: http://prntscr.com/lwkke4

        Я могу выбрать поле типа «строка», чтобы отобразить сумму по этому полю из всех задач, но не могу выбрать поле типа «вычисляемое поле».

        Это та функция, которая нам нужна, чтобы понимать сколько еще денег «зарыто» во всех сделках, которые находятся на этапе «Внесена предоплата».

        Если сложно объяснил, попробую показать примеры нашей настройки Планфикса.

  7. Все супер… Одно «хреново». Придется сейчас потратить время, чтобы внедрять новшество) Но это приятные хлопоты.
    А штука нужна была давно…
    Я так понимаю, теперь в том числе многие шаблоны можно настроить на ворд, которые раньше приходилось пускать через эксель…

    1. Дмитрий Гончаренко

      Спасибо, Виталий!
      По срокам всегда сложно давать прогнозы, но точно в следующем году. Хотелось бы, чтобы в первой его половине 🙂

      1. Здравствуйте!
        В случае суммирования полей из подзадач, откроется огроменная возможность учета всевозможных финансовых средств, склады, балансы, продажи, закупки, движение по счетам и прочее…
        Тут Ваше изобретение (наш любимый Планфикс) могло бы существенно прибавить в областях использования как в бухгалтерии так и других учетах на предприятиях, это же новый 1С.
        А это новые клиенты!!!
        Т.е. уже вижу как перейти с Клоудшопа окончательно.
        И «прощай 1С» не за горами…
        Наборы сценариев, шаблонов и рабочих пространств с вычисляемыми полями и суммированием — Ухх… Заживем)

        Желаю воодушевления в реализации данного потенциала!

  8. Что-то у меня не работает. Создал тестовый шаблон с полем «Стоимость по договору» (числовое), поле типа итоги аналитики «Фактическое поступление» и вычисляемое поле «Остаток» ({{Задача.Стоимость по договору}}-{{Задача.»Фактическое поступление»}}). В созданной задаче проставляю стоимость договора. В задаче добавляю аналитику «Фактическое поступление». В поле итоги аналитики появляется сумма, а в поле «Остаток» та же цифра, что и в стоимости.

  9. Добрый день!
    Спасибо за долгожданную фичу. Ждем поддержки JavaScript в вычисляемых полях 😉

    У меня в Подио, например, расчет бонуса курьера вот так считается от нагрузки:
    var markId=-1;
    var loadId=-1;
    if(@Оценка==»2 — Все нормально, делал почти все по инструкции.»){
    markId=0;
    }else if(@Оценка==»3 — Отлично! Все успел, без заминок, вежливо и с хорошим настроением.»){
    markId=1;
    }
    var load=@Нагрузка сумма;

    if(load){
    if(load==3){
    loadId=0;
    }else if((load>=3.5) && (load=5) && (load=8) && (load=9) && (load=10 && load=11){
    loadId=9;
    }
    }

    if((markId==-1) || (loadId==-1)){
    0;
    }else{
    var array=[
    [62,125],
    [75,150],
    [87,175],
    [100,200],
    [112,225],
    [125,250],
    [137,275],
    [150,300],
    [200,350],
    [250,400]];

    array[loadId][markId];
    }

    1. Дмитрий Гончаренко

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

  10. Добрый день, Уважаемые коллеги.
    Спасибо команде PlanFix за долгожданную возможность.
    Для себя уже нашел три способа применения.
    1. Использование вычислимого поля типа строка для формирования значения текстового поля по заданному «шаблону».
    Ранее для формирования значения поля номер договора приходилось сценарием создавать новое действие (без уведомляемых), формировать его текст по заданному шаблону, а потом вторым сценарием переносить текст действия в текстовое поле. Теперь для этого используем вычисляемое поле сразу получая в него значение «по шаблону». Еще один плюс в том что не нужно использовать сценарии, при любом изменении задачи (в том числе тех полей которые используются в вычислимом поле) значение вычислимого поля должно изменится (судя по описанию логики). Меньше сценариев проще сопровождение (и не выход за ограничения тарифа).
    Важно отметить что для сборки текстовой строки в вычислимое поле необходимо фрагменты текста или символы окружать кавычками (как в формулах отчетов) и если в тексте есть символы знаков действий (+, /, -) система вычисляет значение как число. Например {{Задача.Номер 1}}-{{Задача.Номер 2}} выдаст разницу Номер 1- Номер 2 (Номер 1 = 5, Номер 2 = 3, Результат 2). «»+{{Задача.Номер 1}}+»-«+{{Задача.Номер 2}} — выдаст нужный результат 52.
    2. На форуме есть задача/запрос от энтузиастов добавить в параметры отбора проверку является ли задача подзадачей (что-то типа является подзадачей или есть надзадача). Для наших внутренних целей добавил для всех задач два вычислимых поля — Номер задачи (нужен) и Номер надзадачи. Они заполняются при создании задачи автоматически. Также для определенных задач добавил обычное поле типа строка Номер подзадачи. Теперь при создании подзадачи, она сама в Надзадачу запишет в поле Номер подзадачи значение своего номера. И это дает возможность в процессе надзадачи реализовать сценарии для изменения подзадачи (правда есть ограничение это работает только с последней созданной подзадачей). Как это можно применить. У меня есть задача «аналитику из надзадачи» скопировать или преобразовать в аналитику «подзадачи». Теперь это можно сделать сценарием через «письмо» с указанием номера подзадачи, при поступлении письма обработать его специальным правилом и определить в какую подзадачу нужно заполнить определенную аналитику «надзадачи».
    3. Вариативность указания цены по задаче в целом или по итогам аналитики. Есть такие сущности типа договор или счет где цена договора или сумма счета может быть задана одной цифрой или как сумма по аналитики (спецификация или состав счета). В этом случае в задаче делаем вычислимое поле Сумма договора и заполняем в него либо значение из поля Цена договора либо как итого по полю аналитики (например приоритет строкам аналитики если сумма по аналитике > 0 то используем её).

  11. Спасибо полезная штука!
    А когда примерно планируете запустить вот это:
    «Возможность суммировать данные из полей подзадач в вычисляемое поле надзадачи или проекта. «?

Добавить комментарий