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

Ольга Тимошенко: Друзья, к нам снова пришел Степан. Он пришел не один, а с аналитиками. Вернее, со своим вариантом решения довольно востребованного кейса — по передаче аналитики из одной задачи в другую. Передаю микрофон Степану.

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

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

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

Вебхук

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

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

Тип запроса — POST-запрос в формате JSON
Тип запроса — POST-запрос в формате JSON.

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

Получаем URL
Получаем URL
По клику картинка откроется в новом окне и большем размере.

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

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

Извлекаем данные
Извлекаем данные.
По клику картинка откроется в новом окне и большем размере.

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

Отправляем HTTP-запрос по нажатию на кнопку
Отправляем HTTP-запрос по нажатию на кнопку.
По клику картинка откроется в новом окне и большем размере.

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 — это как раз значение поля аналитики;
  • в поле «Сохранить» стоит «Все значения» — это для получения вообще всех значений по всем строкам.

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

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

Добавляем аналитику
Добавляем аналитику.
По клику картинка откроется в новом окне и большем размере.

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

  • выбрать «Добавить столько аналитик, сколько значений в инфоблоке»;
  • указать этот инфоблок, у меня это massiv;
  • указать задачу, в которую добавляем аналитики, у меня это «Текущая задача»;
  • каждому полю аналитики присвоить поле из инфоблока.

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

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

Какое-то такое, набор символов
Примерно вот такое.
Если нужно — его можно увеличить.

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

Да, наверное, получше
Да, все-таки получше.
По клику картинка откроется в новом окне и большем размере.

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

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

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

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

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

Тут две аналитики
Тут две аналитики.
По клику картинка откроется в новом окне и большем размере.

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

Что-то не то прилетело
Что-то не то прилетело.
По клику картинка откроется в новом окне и большем размере.

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

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

Комментарий содержит прикрепленную аналитику
Комментарий содержит прикрепленную аналитику.
По клику картинка откроется в новом окне и большем размере.

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

Сценарий сработает на добавление комментарий с этой аналитикой
Сценарий сработает на добавление комментария с этой аналитикой.
По клику картинка откроется в новом окне и большем размере.

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

Когда в задаче одна аналитика
Когда в задаче одна аналитика.
По клику картинка откроется в новом окне и большем размере.

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

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

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

Что полезно почитать:

  • почитай отца и мать;
  • Статью JSONpath;
  • Любые статьи на тему JSON и парсинга данных.

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


Ольга Тимошенко: Спасибо, Степан. Обычно с такими настройками новичкам трудно разобраться, разве что за плечами уже есть опыт подобной настройки. Однако, как показывает практика, многие новички уже через некоторое время перестают быть таковыми и начинают настраивать довольно сложные процессы в ПланФиксе. И в процессе настройки такой кейс окажется очень полезным. Вопросы Степану можно задавать в комментариях. И чтобы не пропустить ни одну важную новость, подписывайтесь на наши соцсети: Facebook, ВКонтакте, Telegram, Twitter и YouTube-канал.

7 комментариев

  1. Аватар

    Да, в Планфикс все очень грустно с банальной пересдачей данных.

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

    1. Аватар

      Андрей, а что конкретно вы имеете ввиду?

      Есть нюансы в передаче разных аналитик между задачами, но это скорее вопрос, зачем и почему это нужно.

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

      1. Аватар

        Степан, добрый день!
        Небольшой вопрос по предложенному вами кейсу – возможно ли перенос позиции между аналитиками по полю Id?
        Извлекаем в вебхуке ValueId – и добавляем в нужную аналитику по ID записи справочника.

        Потому как сейчас добавить можно только значение в поле аналитики по данным из извлеченного инфоблока.
        Но структура аналитики не позволяет вывести поле ID в свой шаблон.

        Извлечь можем – добавить нет, или ответ не на поверхности))

        1. Аватар

          Добрый день!

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

          А по технике исполнения с записями действительно сложнее все устроено, скорее всего надо программировать эту работу.

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