Как передавать аналитики из одной задачи в другую

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

Один из последних кейсов – нестандартный способ передачи аналитик из одних задач в другие.

Передача аналитик – это просто?

Степан говорит, что с задачей пришлось «повозиться». На изыскания ушло около 8-ми часов. Но результат того стоил.

Кейс опубликован на официальном блоге ПланФикса. Администраторы и интеграторы платформы используют способ, присылают примеры решения клиентских задач.

И благодарят за удачное решение.

Решили поделиться кейсом с вами. Начнем.

Степан Чельцов о передаче аналитик из задач в задачи

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

Нам понадобятся:

  • кнопка процесса или сценарий для передачи данных аналитик;
  • вебхук для приема данных;
  • терпение и смекалка.

Вебхук

Сначала подготовим вебхук:

1. Тип получаемого запроса — POST-запрос в формате JSON.

2. Получаем URL для следующего шага.

3. Создаем переменную для задачи с единственным значением. У меня это task.

4. Создаем переменную для всех аналитик с выбором всех найденных значений. У меня это massiv[*].

5. Скроллим и выбираем пункт «Изменить существующую задачу», которую найдем по инфоблоку task или где у вас номер задачи.

6. Добавим в нее комментарий, который покажет содержимое нашего запроса. У меня это две строчки — {{Инфоблок.task}} и {{Инфоблок.massiv}}.

7. Сохраняем, больше ничего не делаем, дальше продолжим.

Сценарий передачи аналитик

Сценарий выглядит следующим образом:

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

2. Готовим HTTP-запрос к вебхуку:

  • указываем URL вебхука;
  • называем массив аналитик как-то по-английски (у меня это massiv и вообще все аналитики задачи {{Задача.Все аналитики.JSON}});
  • называем переменную с номером задачи, в которую отправим аналитики (у меня это task и номер надзадачи {{Задача.Надзадача.Номер}});
  • Content-type указываем application/json.

3. Сохраняем сценарий/кнопку.

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

Одна аналитика

Вот пример моей аналитики. Расположил вертикально специально, чтобы считать было удобно. А считать мы будем строки:

Чтобы разобрать массив аналитик, нам понадобится понять базовую логику работы с массивами — они исчисляются с нуля, а не с единицы. Эти числа нам очень понадобятся. То есть:

  1. Строка «Услуги» имеет номер 0.
  2. Строка «Спецификация» имеет номер 1.
  3. Продолжаем сами.
  4. Строка «Критерий приемки» имеет номер 11.

Вернемся к нашему вебхуку и сделаем следующие настройки, как у меня.

Что здесь важно заметить:

  • все строки начинаются с massiv[*] — это для выборки всех-всех строк аналитик;
  • через точку идет .data, в скобках какой-то номер — это тот самый номер из аналитик выше;
  • и еще раз через точку идет .value — это как раз значение поля аналитики;
  • в поле «Сохранить» стоит «Все значения» — это для получения вообще всех значений по всем строкам.

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

Теперь прокрутим наш вебхук и начнем добавлять аналитику как у меня.

Что здесь важно сделать:

Ремарка: если у вас есть поля типа «Запись справочника», задача подберется из списка по названию. А вот если у вас поле типа «Задача» — по названию подберется первая попавшаяся по возрастанию задача с таким названием. Потому называйте задачи уникальными названиями.

Сохраняем наш вебхук и запускаем сценарий. У меня получилось сначала вот такое:

Номер я четко увидел, массив покрутил у себя в PyCharm’e, потом вывел себе все поля для проверки самого себя, получилось уже получше:

Ну и аналитики у меня добавились корректно:

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

Несколько аналитик

А теперь имитируем ситуацию, когда у вас несколько аналитик в задаче-источнике:

А вот что прилетело ко мне:

Данные добавились, но пользы мне от этого мало. Получились мусорные данные. Что же можно сделать?

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

Тогда и отправите аналитики самого комментария:

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

Зачем это все нужно?

Практическая польза таких операций:

  1. В подзадачах работают люди, информация из их аналитик важна вам в других местах.
  2. Вам надо перегнать данные одних аналитик в другие аналитики, с другим названием и сутью. Скажем, заседание директоров — аналитики протокола встречи, а данные нужны финансистам, руководителям и прочим в разных аналитиках и задачах. Или вы решили поменять логику работы, но старые аналитики удалять не можете — по ним есть отчеты и документы.
  3. В надзадаче у вас плановые значения, а в подзадачах — фактические. Их можно прокидывать для баланса показателей.
  4. Вы переезжаете с одного аккаунта на другой или необходимо в связке работать на несколько аккаунтов. По такому принципу мы будем передавать фактическое время клиентам на поддержке Планфикса, кого обслуживаем.
  5. Данные могут прилетать и не из Планфикса, но теперь вы можете разобраться на примере, как их приземлить правильно.

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

И, конечно, я готов помогать консультациями по ПланФиксу всем, кто в этом нуждается.