Smart Forms: Наш опыт автоматизации сбора данных

Привет, Хабр! Сегодня я хочу поговорить о проблеме автоматизации сбора данных. В этом посте мы обсудим, какие именно минусы несет сбор данных через файлы Excel, а также расскажем подробнее о наших собственных наработках по автоматизации сбора информации. Речь пойдет о практических аспектах применения инструмента Smart Forms, поэтому пост будет интересен в первую очередь пользователям решений Visiology, а также специалистам, которые организуют сбор информации или планируют это делать. Всех, у кого уже есть подобный опыт на любой платформе приглашаю присоединиться к обсуждению в комментариях.

6c14efa23d0863e5a6e653e869b15f92.png

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

Подход, конечно, несет в себе ряд потенциальных проблем:  

  • Это долго — если нужно изменить какой-то показатель повторный сбор информации превращается в целую историю.

  • Это трудоёмко — нужно отправить запросы, проверить ответы, собрать отчеты, позвонить тем, кто не прислал свои данные, проверить не появилось ли искажений в информации за прошлые периоды.

  • Это неточно — не все ошибки и искажения будут заметны при ручной проверке, поэтому возникают ошибки. 

Все больше бизнес-процессов переходят на «цифровые рельсы», работа с данными объективно перерастает Excel — нормально работать с таблицами становится уже невозможно. Но с другой стороны, загонять сбор данных в систему ERP нередко оказывается слишком долго или слишком дорого. Например, если нам нужно собрать завтра данные об эффективности работников в филиалах, а через неделю перед отделом будет стоять уже другая задача, автоматизировать подобный сбор это на уровне ERP (скажем, 1С или SAP) будет просто нецелесообразно. И таких задач бывает достаточно много. Например,  

Нужен универсальный инструмент

Мы, как разработчики BI-системы и решений для Data-driven управления, стали все чаще сталкиваться с запросами на гибкие средства для сбора информации. Чтобы удовлетворить, их пришлось разрабатывать решение, которое позволило бы быстро создать справочники, подготовить формы, настроить различные правила, проверки, расчёты, а также определить регламент сбора различных данных. И все это с минимальными затратами и за наименьший промежуток времени.

Например, Русской Медной Компании был необходим инструмент для загрузки и консолидации управленческой отчётности по всем предприятиям группы. При этом нужно было прямо в нем реализовать и ввод корректировок, и процессы согласования и трансформацию данных. 

Еще один пример — ситуационный центр ХМАО. Сотрудникам организации нужно было наладить сбор различных показателей работы школ, муниципальных образований и подведомственных учреждений. Оказалось, что государственным органам подобный инструмент тоже нужен — ведь ингода «сверху» прилетает какое-то постановление, и его надо срочно выполнить. А чтобы собрать данные качественно, необходима автоматизация. 

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

Референсные кейсы: сбор информации со Smart Forms

Чтобы решить все эти (и многие другие задачи) мы предложили использовать Visiology Smart Forms — инструмент собственной разработки, который позволяет настроить сбор данных за несколько часов и в тот же день получить готовую отчётность. Архитектура системы не слишком сложна, а данные хранятся в Postgres. Для визуализации динамических изменений на дашбордах обычно используется наша собственная разработка ViQube, но результаты также могут быть переданы в любую другую систему по API.

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

  1. Сбор отчёта по продажам с каждого менеджера

Типичный случай: компания хочет настроить сбор данных по продажам, но не имеет соответствующих средств автоматизации. При этом обычно в организации так или иначе представлены справочники филиалов (в каждом филиале есть отделы и должности), и часть менеджеров числятся как «продажники». Есть покупатели, которые обращаются к продавцам, фиксируются обращения, и, собственно, показатели по каждому из обращений. 

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

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

Также можем задать настройки этого атрибута, настроить, что это атрибут будет заголовочным (будет отображаться во всех интерфейсах). Можем сделать группировку по определенному полю. Дополнительная настройка позволяет определить, что значения атрибута будут попадать в состав уникального ключа, гарантируя требование к уникальности и обязательность заполнения. Добавили атрибут филиала и добавим атрибут дата открытия. После создания справочника можем добавить в него записи. Например, создадим  4 филиала в сети. 

Следующее измерение — справочник отделов. В нем нужно добавить  должности внутри отделов. 

После этого заполняется справочник продуктов. В нем можно задать различные атрибуты продуктов. Но мы просто добавим группировочный атрибут «Группа продуктов». 

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

Следующий справочник должен содержать уже имена менеджеров по продажам. Для них можно зафиксировать отношение к филиалу и соответствие должности. Для этого можно настроить связи между справочниками. 

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

Добавляем клиентаДобавляем клиентаДобавляем менеджера Добавляем менеджера

После того как мы добавили клиентов и менеджеров, появляется возможность фиксировать обращения. Сейчас в этой конкретной форме нет какой-либо автоматизации. Но в определенных случаях можно задать правила заполнения. Например, легко  проставлять автоматически дату обращения при редактировании номера. Для этого нужно в редакторе справочника добавить «Правило» в соответствующем блоке. К примеру, при редактировании атрибута «Номер» мы будем проставлять дату обращения по формуле…или без формулы — просто сегодняшняя дата. При необходимости тут же можно добавить текстовый комментарий, чтобы всем было ясно, что мы тут автоматизировали. 

А вот пример сложного справочника, который содержит большое количество атрибутов. Он тут для того, чтобы показать дополнительные возможности для ведения реестров. Для реестра можно задать технические настройки, такик как: «Группировка», «Является обязательным», «Является частью уникального ключа», «Значения должны быть уникальны» и «Заголовочный атрибут». 

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

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

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

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

21b7a69e1569baaf69cf90b348619f42.png

Сейчас мы видим интерфейс навигатора форм, на текущий момент формы не существует, поэтому их нет. Давайте создадим их. Переходим в панель администратора и создаём структуру для отчёта. Здесь мы вводим наименования, выбираем справочники, по которым будут вноситься сведения. При необходимости добавляем календарь. Наш отчёт будет ежедневный, поэтому указываем сроки отчётов в интервале «начало-конец», «Гранулярность», то есть отчёт будет за каждый день. Настраиваем нужное нам отображение и для удобства выбираем наименование.

d6c9a668f77f9956f031d5a1a60f35d6.png

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

Но вспомним исходную задачу и добавим тираж по менеджерам. Тогда у каждого менеджера будет своя форма, а также по календарю — благодаря этому форма будет заполняться за каждый день. Остальные измерения мы раскидаем по строкам и столбцам (как покажется удобнее). Например, «Должности», «Продукты», «Обращения», «Клиенты» — в строки, а «Отчётные показатели» — в колонки. 

Нужно настроить видимость формы. Установим просмотр за прошедшую неделю. На этом этапе форма создана, и продавцы могут перейти к сдаче отчётности. 

Вот так это будет выглядеть на конкретном примере, когда у нас уже есть несколько продавцов и ряд обращений. Глобальные фильтры позволяют выделить отчёт по городу Москва для менеджера Пушкина в должности «Менеджер по продажам». И именно для него мы будем вводить сведения. Боковое меню и навигация возможны только в разрезе тех прав, которые есть у текущего пользователя. Соответственно, у Пушкина будет только отчетность Пушкина, у Иванова — только Иванова и так далее. 

  1. Создаем сводный отчет

После того как мы собрали первичные данные, возникает следующая задача — создание сводного отчёта. На этом этапе обычно требуется провести расчёты по данным из первичных форм, а также добавить сведения по филиалу. Для этого в системе Smart Forms предусмотрен свой редактор бизнес-правил. К примеру, мы можем настроить правила расчётов. 

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

Например, сумма — это количество, помноженное на цену за вычетом процента скидки. При необходимости добавляем комментарий. 

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

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

b9f0a86d94da0156d9bb29bd3465a764.png

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

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

Так создается сводная форма Так создается сводная форма

Выбираем дополнительно атрибуты, которые будут вводиться на уровне сводного отчёта, например, остатки на складах (с дополнительными комментариями). Такие атрибуты могут быть 6 типов — ссылка на какой-то другой справочник, логическое значение, числовое значение, дата, строка или тест. Например, комментарий — это строка, а остатки — целые числа. 

Чтобы получить отчет, сотрудник выбирает нужную форму и может вызвать расчёт с вводом параметров. После просмотра полученных данных он также может обогатить этот отчёт какими-то дополнительными сведениями. Например, можно отметить остатки на складах и добавить к ним комментарий: «требуется новая поставка».

  1. Автоматизируем согласования и планирование

После того как сводный отчёт собран обычно бизнесу требуется провести согласования и запустить определенные процедуры. Для этого в Smart Forms предусмотрен механизм создания бизнес-процессов.

Сейчас мы создадим бизнес-процесс под названием «Согласование».
Для этого добавим статусы, которым могут соответствовать данные отчёта. 

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

Создание Создание «согласования»

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

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

Выбор ответственныхВыбор ответственных

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

После этих действий на каждой форме с отчётом появляется дополнительная кнопка о переводе в статус. При попытке утвердить согласованную форму (перевод в статус «Утверждено») появляется предупреждение о том, что не хватает обязательного комментария. Если его добавить, форма будет утверждена!  

Добавление комментарияДобавление комментария

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

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

Если нам по каким-то причинам нужно загрузить исторические данные в Smart Forms предусмотрен механизм по загрузке неструктурированных Excel-файлов для формирования отчётов о прошлых периодах. 

Загрузка из ExcelЗагрузка из Excel

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

  1. Планируем ведение продаж

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

Форма плана по закупкамФорма плана по закупкам

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

Форма плана по персоналуФорма плана по персоналу

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

Заключение

Подобную практику можно использовать практически в любой компании. Доступ к созданной через Smart Forms форме можно открыть любому сотруднику напрямую, либо через API для публикации данных. Таким образом, форма бывает доступна просто как веб-ресурс, либо внутри любого ПО или портала. При этом все действия отслеживаются и протоколируются, и система позволяет проследить, откуда какое значение появилось в каждой ячейке — если это потребуется.

Кстати, справочники также можно интегрировать в Smart Forms через API, либо просто импортировать их. Точно так же поддерживается выгрузка собранной информации через API в любые другие системы. А пользователи Visiology Dashboards могут автоматически получить визуализацию с учетом данных из Smart Forms и внешних источников, например, внешних Excel файлов, настроить рассылку отчетов по расписанию и так далее.

После небольших настроек и конфигурирования можно адаптировать процесс сбора информации к новым требованиям и новым задачам. А за счет автоматизации информации начинает происходить без ручной рассылки и сбора документов и таблиц. Это значит, что компания получает доступ к оперативным данным с минимальными временными, трудовыми и финансовыми затратами. Кстати, Smart Forms вообще не лицензируется по количеству пользователей — их может быть сколько угодно, выдержал бы сервер.)

Кстати, в следующих постах мы как раз расскажем о кейсах использования Smart Forms на конкретных примерах. Так что если вы еще не подписаны на наш блог, самое время сделать это. Если у вас появились вопросы о сборе каких-либо данных, подготовке отчетности и интеграции, вы можете задать их в комментариях. Учитывая, что сегодня многие компании сталкиваются с подобными задачами, позитивный (и негативный) опыт работы со сбором данных будет полезен.

© Habrahabr.ru