Ольга Тимошенко: Друзья, к нам снова пришел Степан. Он пришел не один, а с аналитиками. Вернее, со своим вариантом решения довольно востребованного кейса — по передаче аналитики из одной задачи в другую. Передаю микрофон Степану.
Степан Чельцов: В чате энтузиастов возникла дискуссия, где человек пытался через Интегромат отправить аналитики одной задачи в надзадачу, и у него не получалось. Меня привлекла ситуация, потому что запросы на это иногда возникали, я чувствовал возможность реализации, но руки не доходили. Итак, к барьеру.
Нам понадобится:
- Кнопка процесса или сценарий для передачи данных аналитик;
- Вебхук для приема данных;
- Терпение и смекалка.
Вебхук
Сначала подготовим вебхук:
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. Сохраняем сценарий / кнопку.
Это была предварительная подготовка, потому что мы еще не знаем, какая у вас прилетит аналитика, а может и не одного вида прилетит. Разберем сначала кейс с одной аналитикой и каким-то количеством строк.
Одна аналитика
Вот пример моей аналитики. Расположил вертикально специально, чтобы считать было удобно. А считать мы будем строки:
Чтобы разобрать массив аналитик, нам понадобится понять базовую логику работы с массивами — они исчисляются с нуля, а не с единицы. Эти числа нам очень понадобятся. То есть:
- Строка «Услуги» имеет номер 0;
- Строка «Спецификация» имеет номер 1;
- Продолжаем сами;
- Строка «Критерий приемки» имеет номер 11.
Вернемся к нашему вебхуку и сделаем следующие настройки, как у меня:
Что здесь важно заметить:
- все строки начинаются с massiv[*] — это для выборки всех-всех строк аналитик;
- через точку идет .data, в в скобках какой-то номер — этот тот самый номер из аналитик выше;
- и еще раз через точку идет .value — это как раз значение поля аналитики;
- в поле «Сохранить» стоит «Все значения» — это для получения вообще всех значений по всем строкам.
Вы можете спросить, раз мы такие умные, зачем же мы комментарий добавляем? Ответ: потому что даже опытный разработчик потратит время на поиски своих ошибок, а они обязательно будут. Такой комментарий на этапе отладки поможет понять, а есть ли в ваших инфоблоках вообще хоть что-нибудь. И с каждым разом вы будете все увереннее разбираться, где же напортачили.
Теперь прокрутим наш вебхук и начнем добавлять аналитику, как у меня:
Что здесь важно сделать:
- выбрать «Добавить столько аналитик, сколько значений в инфоблоке»;
- указать этот инфоблок, у меня это massiv;
- указать задачу, в которую добавляем аналитики, у меня это «Текущая задача»;
- каждому полю аналитики присвоить поле из инфоблока.
Ремарка: если у вас есть поля типа «Запись справочника», задача подберется из списка по названию. А вот если у вас поле типа «Задача» — по названию подберется первая попавшаяся по возрастанию задача с таким названием. Потому называйте задачи уникальными названиями.
Сохраняем наш вебхук и запускаем сценарий. У меня получилось сначала вот такое:
Номер я четко увидел, массив покрутил у себя в PyCharm’e, потом вывел себе все поля для проверки самого себя, получилось уже получше:
Ну и аналитики у меня добавились корректно:
Когда закончите настройки, не забудьте удалить комментарий в задачу-приемника, это нам больше не нужно для ежедневной работы.
Несколько аналитик
А теперь имитируем ситуацию, когда у вас несколько аналитик в задаче-источнике:
А вот что прилетело ко мне:
Данные добавились, но пользы мне от этого мало. Получились мусорные данные. Что же можно сделать?
В первую очередь, надо для себя уяснить, что для каждой аналитики придется делать свой вебхук, потому что вебхук не проверяет условия полученных значений, он их только устанавливает в поля. Следом важно понимать контекст событий, в которых появляется аналитика. Вы можете настроить триггер на добавление комментария, который содержит определенную аналитику:
Тогда и отправите аналитики самого комментария:
Возможно, что ваши ребята редактируют прикрепленные к задаче аналитики, их тоже можно взять отдельно. Если там всего один вид аналитик, конечно:
Зачем это все нужно?
Практическая польза таких операций:
- В подзадачах работают люди, информация из их аналитик важна вам в других местах;
- Вам надо перегнать данные одних аналитик в других аналитики, с другим названием и сутью. Скажем, заседание директоров — аналитики протокола встречи, а данные нужны финансистам, руководителям и прочим в разных аналитиках и задачах. Или вы решили поменять логику работы, но старые аналитики удалять не можете — по ним есть отчеты и документы;
- В надзадаче у вас плановые значения, а в подзадачах — фактические. Их можно прокидывать для баланса показателей;
- Вы переезжаете с одного аккаунта на другой или необходимо в связке работать на несколько аккаунтов. По такому принципу мы будем передавать фактическое время клиентам на поддержке Планфикса, кого обслуживаем;
- Данные могут прилетать и не из Планфикса, но теперь вы можете разобраться на примере, как их приземлить правильно.
Что полезно почитать:
- почитай отца и мать;
- Статью JSONpath;
- Любые статьи на тему JSON и парсинга данных.
А если хотите глубже разбираться, приходите на мои воркшопы по вокруг Планфикса.
Ольга Тимошенко: Спасибо, Степан. Обычно с такими настройками новичкам трудно разобраться, разве что за плечами уже есть опыт подобной настройки. Однако, как показывает практика, многие новички уже через некоторое время перестают быть таковыми и начинают настраивать довольно сложные процессы в ПланФиксе. И в процессе настройки такой кейс окажется очень полезным. Вопросы Степану можно задавать в комментариях. И чтобы не пропустить ни одну важную новость, подписывайтесь на наши соцсети: Facebook, ВКонтакте, Telegram, Twitter и YouTube-канал.
Степан, спасибо!
Всегда рад раскопать что-то такое интересное =)
Да, в Планфикс все очень грустно с банальной пересдачей данных.
Чтобы передать аналитику из одной задачи в другую задачу в одном аккаунте Планфикс, нужно взять бубен, взять сторонний сервис, которому еще нужно заплатить, передать данные из задачи в это сервис, потом передать обратно в Планфикс. Все эти костыли глючат и иногда ломаются …
2021 год …
Андрей, а что конкретно вы имеете ввиду?
Есть нюансы в передаче разных аналитик между задачами, но это скорее вопрос, зачем и почему это нужно.
Многие процессы можно строить не от аналитик, которые кто-то добавил, а перестроить процесс, чтобы аналитики появлялись в результате работы людей с полями и кнопками, например. И ровно теми же сценариями прокидывать данные в другие объекты Планфикса.
Степан, добрый день!
Небольшой вопрос по предложенному вами кейсу – возможно ли перенос позиции между аналитиками по полю Id?
Извлекаем в вебхуке ValueId – и добавляем в нужную аналитику по ID записи справочника.
Потому как сейчас добавить можно только значение в поле аналитики по данным из извлеченного инфоблока.
Но структура аналитики не позволяет вывести поле ID в свой шаблон.
Извлечь можем – добавить нет, или ответ не на поверхности))
Добрый день!
С записями справочника я обычно по названию подбираю, это неплохо работает, если названия у вас отличаются друг от друга.
А по технике исполнения с записями действительно сложнее все устроено, скорее всего надо программировать эту работу.
Если кому-то будет удобнее смотреть видео, чем читать текст – Дмитрий Марцынкевич сделал классное видео-обучалку https://youtu.be/43oAoVJlDgQ