Внедрение ПланФикса на производстве: Интеграция с приложением для считывания штрих-кодов

Дмитрий Гончаренко: Сегодня в рубрике Рассказ от первого лица уже знакомый вам Сергей Улаев, руководитель компании AffContext, рассказывает о том, как использование штрих-кодов помогло подключить в ПланФикс рабочих на производстве. Тема, которую не раз подымали наши пользователи, раскрывается на примере конкретного внедрения, которое можно повторить на любом предприятии.

Сергей Улаев: Похоже, что это будет завершающая часть по нашей «трилогии» внедрения ПланФикса на одном производственном предприятии.
Напомню, что до этого были следующие статьи:

А эта часть будет технической. Очень технической. Чтобы показать кусочек (написал сначала «всю», потом понял, что описать весь возможный функционал системы просто невозможно) «подкапотной мощи» в интеграциях с, казалось бы, самыми нетривиальными приложениями. Например, с приложением для сканирования штрих-кодов – XSCANPET.

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

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

Авторство данной статьи смело отдаю Александру – моему партнёру по работе с системой. Я лишь описываю его реализацию. Ну, погнали.

Для общего понимания – небольшая предыстория. Во время внедрения ПланФикса на предприятии по производству фасадного декора, нужно было решить следующую задачу:

  1. На каждом этапе производства конкретного элемента фасадного декора (например, подоконника) рабочие цехов (резка, шлифовка, торцовка и т.д.) должны заносить данные в систему (аналитики ПланФикса)
  2. При этом процесс занесения должен проходить сразу в цеху, с мобильного устройства, без отрыва от производства, в 2 клика и предельно понятно с первого взгляда для простого рабочего.

Когда перед нами встала эта задача, мы не знали, как это сделать. Вот «вообще совсем ну никак» не знали. И даже техподдержка системы сказала, что ранее такой связки ещё никто не делал. Что ж… будем «копать» сами, навыки есть.

Не буду описывать разные варианты, которые мы перепробовали, сразу к результату – мы пришли к такой связке:

Цепочка интеграции приложений для импорта данных аналитики в ПланФикс

 

А вы думали, будет просто?)
А вы думали, будет просто? 🙂

Первые 3 блока опишу кратко, ибо они выходят за рамки этой статьи.

  1. XSCANPET – это Андроид приложение (стоит 129 руб), которое позволяет с помощью смартфона вносить любые данные в локальные Excel-таблицы, создавать там нужные поля (текстовые, числовые, таймкоды, штрихкоды, фотографии, формулы, дата, время и т.д.). Под наши задачи подошел идеально.
  2. FolderSync – это Андроид приложение, которое фоном синхронизировало Excel-файл на смартфоне с облаком Google Drive.
  3. Google Drive был выбран не просто так, под нашу связку подошел только этот сервис. Почему – ответ в самом конце статьи.

И отдельно четвёртый блок – Microsoft Flow, т.к. он представляет самую техническую часть из всего этого списка. Вообще, как это всё в связке работает, мы частично показали на видео.

Почему именно Microsoft Flow (а не Zapier, например)?

Фактически, причин тому было 2:

  1. Бесплатно до 700 срабатываний в месяц (наш поток отрабатывает 1 раз в сутки ночью)
  2. В бесплатном тарифе нет ограничений на количество шагов в потоке.

Ну… и 3-я – он нам понравился интуитивно. Вроде бы, это называется «чуйка» 🙂

Когда с телефона через приложение XSCANPET происходит сканирование штрих-кода, внутри устройства создаётся\редактируется такая таблица. Из неё-то мы дальше и будем импортировать данные:

Таблица для импорта данных в ПланФикс

Описание столбцов:

A) Номер задачи в ПланФиксе (берется при экспорте отчета из ПланФикса в Excel)
B) Внутренний код элемента
C) Название элемента
D) Сколько нужно сделать всего
E) Наименование заявки
F) Название проекта
G) Дата занесения результата
H) Время занесения результата
I) Этап производства
J) Сколько сделано на данном этапе производства
K) Количество брака на данном этапе
L) Таймкод (всегда уникальное значение и его нельзя менять вручную)
M) Комментарий, оставленный при внесении результата

Общий алгоритм занесения данных в ПланФикс выглядит так:

Общий алгоритм занесения данных в ПланФикс из штрих-кодов

Пояснения ниже:

Триггер по времени срабатывает 1 раз в сутки в 5 утра по местному времени, когда точно никто ничего не заносит. В это время в систему импортируются данные за предыдущий рабочий день.

Отсюда, кстати, родилось правило – обязательно заносить результат работы до 24:00. В идеале – сразу в момент фиксации результата. (Update из будущего – выполняли ли его? Нет. Но это другая история, которой здесь не будет 🙂 ).

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

Данные получаем из Excel файла в Google Drive, который заранее был синхронизирован с помощью наших Android-приложений.

Дальше авторизуемся в ПланФикс, наша цель получить SID (из справки ПланФикса – они его дают при авторизации, он выдаётся в рамках одной сессии\ потока). Т.е. 1 поток Microsoft Flow = 1 ключ. Потом его надо получать снова «с нуля»для дальнейшего использования уже в другом потоке.

В какой-то момент нам пришло понимание, что могут быть ситуации занесения данных-дублей. Чёрт знает, каким образом (интернет отключили в офисе, сел телефон, «магия» и пр.), но могут – это 100%. И это внесёт сильную корректировку во все данные. А ещё это не сразу можно заметить. Всё в этой жизни идеально не сделаешь, поэтому лучше сразу проработать такой вариант развития событий. И мы придумали следующее… (блок 1 с картинки выше)

У нас есть множество аналитик:

Набор аналитик которые импорнтируются в ПланФикс

В каждой аналитике есть свой набор полей:

Набор полей аналитики для импорта

Наша задача – через API получить список всех внесённых аналитик конкретной задачи и получить значения полей Timecode данных аналитик. Timecode – это поле которое берется из приложения XSCANPET (оно всегда уникальное). И если значение Timecode уже есть в задаче, значит данная аналитика уже вносилась и ее не нужно заносить снова.

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

 

Теперь погрузимся в детали потока Microsoft Flow по описанной выше схеме:

1. Сначала настраиваем триггер на срабатывание раз в сутки в 5 утра по местному времени:

Настройка триггера Microsoft Flow для импорта данных в ПланФикс

2. Инициализируем переменные типа String, в которых мы будем хранить ID аналитик и ID полей аналитики для дальнейшего использования:

Инициализация переменных в Microsoft Flow для импорта данных в ПланФикс

3. Получаем данные из Excel:

Процесс импорта данных из Excel в ПланФикс в Microsoft Flow

Пункты с картинки выше обозначают следующее:

a. Это действие «ExcelGetRows» в Microsoft Flow. В нем подключаемся к Google Drive, выбираем наш файл и обязательно таблицу
b. Нужно удалить все пустые строки из Excel-таблицы (прикиньте, люди в приложении могут случайно добавить результат «ноль» и от этого создаётся пустая строка). Это делается с помощью действия «FilterArray»
c. Используем действие «ParseJSON», чтобыдалее в потоке мы могли использовать данные из ячеек таблицы Excel

4. Авторизуемся в ПланФикс и сохраняем SID (в справке все расписано)

Авторизация в ПланФикс и сохранение SID в процессе Microsoft Flow

5. Получаем список добавленных аналитик конкретной задачи и список всех добавленных Timecode

Получаем список аналитик конкретной задачи ПланФикса в процессе Microsoft Flow

Разберем блок выше подробнее (да, я понимаю, что до этого момента дочитали только технари 🙂 ).

Действие «Switch 2»переключает поток в зависимости от того, какой цех заполнял данные:

  • «Резка – добавление результата»
  • «Шлифовка – добавление брака»
  • и т.д.

Это всё аналитики, у которых есть свой постоянный ID в ПланФиксе (описание «Switch 2»на картинке ниже):

5-секундная пауза для глаз от такого чтива 🙂

И далее…
Действие «Получаем список аналитик задач» в детализации выглядит так:


С помощью действия «Compose» и формул получаем список всех Timecode:

Далее сверяем, есть ли совпадение между уже внесенными в ПланФикс Timecode и новыми из Excel:

Если совпадений нет, то вносим новую аналитику в задачу:

6. Двумя последними действиями мы очищаем таблицу:

Действие «Getfileusingid» берет содержимое файла «чистый шаблон.xlsx».Это такая же таблица, только пустая (но с форматированием, названием столбцов). Действие «Updatefile» обновляет наш файл цеха резки (к примеру) на содержимое из чистого шаблона. Т.е. мы делаем очищение подстановкой такой же таблицы, но пустой.

Кстати, тут и будет ответ на вопрос «почему выбрали именно GoogleDrive».
Ответ – только в связке «GoogleDrive< – – – >MicrosoftFlow» можно таким образом очищать таблицу.

 

Не устали от всей этой информации?
На самом деле – это всё. Хотя ощущение некоей незаконченности мысли у нас тоже есть. Но, как я уже говорил, пусть контент будет лучше таким, чем вообще никаким.

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

Но хочется донести основную мысль, что ПланФикс – тот ещё «пластилин». Надеюсь, это получилось.
Конец трилогии 🙂

 

Сергей Улаев

Руководитель ООО “ЭффКонтекст”

ООО "ЭффКонтекст"

 

 

 

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

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

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

    1. Откуда
      Изучили программу BarTender – https://www.bartendersoftware.com/software/enterprise/

      В ней мы изначально создаём нужные стикеры, которые цех резки наклеивает на элементы в процессе создания новой заявки. Программа создаёт штрихкоды на основе БД из той же Excel-базы (это целый пласт неописанной информации)

      В штрих-код закодирован номер задачи + рядом выводится отдельно название проекта, элемента и пр. (настраиваемо).

      Мы в нашем блоге в нашей художественной истории этого проекта описывали чуть больше деталей из практики этого дела:
      Часть № 4 – https://blog.affcontext.ru/vnedrenie-sistemy-upravleniya-proektami-proizvodstvom-na-baze-planfix-chast-4
      Часть № 5 – https://blog.affcontext.ru/vnedrenie-sistemy-upravleniya-proektami-proizvodstvom-na-baze-planfix-chast-5

      Мы и инструкцию для заказчика писали по настройке этих всех приложений. Если вам реально интересно в этом разобраться чуть больше, чем “просто интерес”, то сообщите – найду эту информацию

      1. Простите, вы вроде в Москве?
        Может проще приехать и поговорить на месте о нюансах?
        У нас много опыта, готов поделится, так как явно вы двигаетесь вместе с нами в одну сторону. Уделите мне пару часов? Или приезжайте к нам на Электродную, расскажу как у нас работает.
        Вы ближе всех к тому, что сделали мы ещё 13 лет назад в плане штрих-кодов и учёта атомарных операций.

    1. Увидел ссылку на видео, но хочется именно боевое использование увидеть ребятами в цеху.

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

      И я бы отказался от СМС, потому что ~3₽ на каждом браке/заказе терять смысла нет, а юзабельность сотен сообщений под вопросом.

      1. “…что вы очень скоро можете упереться в потолок.”
        Потолок чего? Не понял

        “И я бы отказался от СМС, потому что ~3₽ на каждом браке/заказе терять смысла нет, а юзабельность сотен сообщений под вопросом”
        Да и мы это понимаем. Описанное тут не является истиной и конечной практикой. Тогда всё делалось быстро только ради того, чтобы понять – схема вообще рабочая? Техника работать будет? Люди работать будут? Удобство будет?

        Поэтому вопрос оптимизации там и не стоял, это логично.
        К слову – сейчас с этой схемой клиент, увы не работает. В конце концов всё упёрлось в то, что на одном из этапов производства “умирал стикер” 🙁
        А фиксировать все этапы, кроме этого, заказчик уже не хотел. Там думали-думали над этим вопрос. И в итоге решили отложить эту тему, как нерешённую. Увы, это уже больше организационные моменты

    1. Само приложение XSCANPET прекрасно выполняет свои функции, стоит 129 рублей + мин. общие финансовые затраты на тестирование гипотезы + было ощущение, что ридер может “не зайти” для людей в плане использования. Ну..знаете, они там эти детали таскали из угла в угол по цеху, а может и на улицу за 50 метров. И надо потом быстро всё отсканировать. Телефон всегда в кармане. Ридер – не факт.

      Наверняка, и с ним можно. Просто не пробовали.

    1. Не могу оценить, что именно тут считать.
      Скажу так – от состояния “не знаем ничего” до первого рабочего сканирования и занесения аналитики прошло 2 – 2.5 недели. С учётом, что не только этим занимались.

    1. “Не совсем раскрыт вопрос именно внесения информации в файл эксель”
      Можете чуток переформулировать ваш вопрос? Пока я его не понял.
      Пока могу сказать (ну и описано было), что в момент сканирования результат заносился в локальный Excek файл на телефоне, а потом этот файл автоматически “улетал” в общую центральную БД всех записей со всех цехов (цеха то разные, каждый мог занести лишь информацию именно по своей работе)

      “При чём тут штрих-коды”
      Ну как…сделали 50 элементов (однотипных, допустим). Надо их занести в систему. Можно ручками (не особо удобно + компьютер нужен), можно через сканирование (один раз отсканировал и вбил число “50” для результата)

      Штрих-коды

      1. Т.е. в штрихкоде есть инфа только о номере заявки-заказа-наряда, а всё остальное подтягивает XSCANPET?
        Лень разбираться в нём, поэтому и вопрос.

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

      2. “вбил число «50» для результата”

        У вас рабочий решает сколько сделать деталей?
        По идее, раз запланировали сделать 50, то и вбивать ничего не надо. Отсканировал номер наряда, значит закончил все 50.

        1. “Т.е. в штрихкоде есть инфа только о номере заявки-заказа-наряда, а всё остальное подтягивает XSCANPET?”

          Да, в момент сканирования мы получаем лишь номер задачи. Потом приложение из единой облачной центральной базы данных (где хранится информация по столбцам о всех задачах ) подтягивает информацию по этой задаче и выводит её на экран смартфона, чтобы ДО занесения результата человек мог убедиться, что он сканирует тот элемент по тому проекту, что ему надо (поверьте, это ещё та проблема на производстве. Вот поставил случайно 2 колоны от разных проектов рядом и всё – кердык).

          И лишь когда человек убедился, что это то, что ему нужно – он заносит количество сделанных элементов этого вида детали.

          “У вас рабочий решает сколько сделать деталей?…Отсканировал номер наряда, значит закончил все 50”
          Он заносит фактический результат. И 50 = 5 раз по 10 штук в течение недели (к примеру). Поэтому результат заносится порционно. Нельзя просто взять и сказать “я сделал”.

            1. Там понятия “наряд” не было. Сколько сделано за день – столько фиксируешь. И далее деталь уходит на следующий этап. Т.е. нельзя их складировать, чтобы потом “закрыть” весь наряд.

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