Многие компании продолжают активно использовать Excel и язык макросов VBA для обработки и анализа данных. Однако с переходом на отечественные офисные решения (например, Р7-Офис) появилась необходимость в разработке новых инструментов обработки данных на JavaScript.
В ЛАНИТ мы помогаем клиентам осуществить переход на Р7-Офис и создаем макросы, которые ранее использовались в Excel. Во время этого процесса наши разработчики внимательно анализировали запросы пользователей и выявили несколько общих трендов, на основе которых и был разработан наш плагин Аналитика.
Основной задачей, которую мы ставили перед собой при создании плагина, было упрощение перехода пользователей с Excel на Р7-Офис. В результате чего возникла идея no-code решения с интуитивно понятным интерфейсом и минимальным количеством новых языков программирования (таких, как JavaScript). С ним пользователи могли бы сосредоточиться на анализе данных, не отвлекаясь на изучение технологий.
От простого к сложному: как мы создавали плагин
Как уже упоминалось ранее, в процессе работы с Р7-Офис мы провели детальный анализ запросов пользователей и выявили несколько ключевых трендов. Наиболее частой задачей становилась выгрузка данных из различных источников — будь то файлы или базы данных. Нередко также возникала необходимость объединения табличных данных на одном листе для дальнейшей обработки.
В ответ на эти запросы мы решили разработать компактный фреймворк, который включал бы функции, о которых упоминали наши клиенты. На первых порах он состоял из базовых инструментов, но со временем мы добавляли новые возможности и функции, что позволило реализовать концепцию конструктора для создания макросов. Теперь пользователи могли комбинировать функции в необходимой последовательности, что значительно упрощало процесс.
В итоге накопленный опыт вдохновил нас на создание no-code плагина для Р7-Офис. Новый инструмент, который позволит пользователям самостоятельно формировать алгоритмы для выгрузки и обработки данных, не углубляясь в программирование.
Что пошло не так?
Как известно, Р7-Офис не может работать напрямую с внешними базами данных, что стало одной из главных проблем. Кроме того, возможности JavaScript в этой области также ограничены.
Это стало первым серьезным ограничением, которое необходимо было преодолеть, поскольку многим пользователям нужен быстрый доступ к актуальной информации для поддержания внутренних бизнес-процессов. А архитектура Р7-Офис не позволяла решить эту задачу только с помощью плагина.
Сначала мы пытались реализовать API на PHP для взаимодействия с SQL базами, но это привело к возникновению дополнительных сложностей для конечных пользователей.
Как решили проблему
Мы разработали собственную утилиту, которая стала тем самым мостом между Р7-Офисом и базами данных, избавив пользователей от необходимости дополнительной настройки и действий.
Другим вызовом, с которым мы столкнулись, оказалась динамическая типизация данных в JavaScript. Эта особенность языка создавала сложности при работе с данными, поступающими из баз данных и XLSX-файлов, где строгая типизация значений имеет критическое значение. Необходимо было учитывать и проблему с разделителем дробной части в числах: в большинстве XLSX-файлов используется запятая, тогда как JavaScript работает с точкой.
Кроме этого, мы столкнулись с проблемой изменения форматов даты и времени из XLSX и баз данных. Даты могли быть в самых разных форматах, и распознавание их в JavaScript работало эффективно лишь в том случае, если даты задавались в западном формате (сначала год и месяц), а не в восточноевропейском (где день-месяц).
Что мы сделали? Разработали собственный механизм распознавания дат, который позволяет нам эффективно обрабатывать даты в разных форматах и адаптироваться к требованиям пользователей.
При разработке мы ориентировались на Power Query и Power Pivot, потому что часть функционала схож с нашим плагином. Но плагин Аналитика нельзя назвать клоном Power Query из-за разных подходов в интерфейсе и гибкости архитектуры, чтобы не требовалось серьезных изменений для расширения функционала под нужды клиентов.
Как связаны тестирование плагина и кофе?
После завершения разработки базового функционала плагина мы приступили к его тестированию на реальных задачах офиса ЛАНИТ. В качестве тестового кейса выбрали оптимизацию работы кофемашины.
Коллеги жаловались на нехватку зерен в пиковые часы и на проблемы с молоком, которое портилось в часы спада. К счастью, наша кофемашина работала на Android, и, изучив её прошивку, мы смогли интегрировать скрипт, который собирал статистику и записывал данные о приготовленных чашках кофе в отдельный файл.
На протяжении месяца мы ежедневно выгружали данные из кофемашины и использовали функции сведения данных по видам кофейных напитков. Дальше производили сортировку по времени их приготовления, чтобы определить пики нагрузки и уже понимали промежутки времени, в которые требовалось пополнить контейнер для зерен или убрать молоко в холодильник.
На первый взгляд, задача могла показаться несущественной, но она значительно упростила жизнь коллег и повысила качество офисной рутины.
Не останавливаясь на достигнутом, мы начали искать новое применение нашему плагину в других сферах офисной жизни. Одной из задач, к примеру, стал перенос скрипта из Power Query в нашу no-code систему. Мы ставили перед собой цель объединить отчеты сотрудников из разных XLSX-файлов в один общий документ. В ответ на сложности с несоответствием структур отчетов, мы создали и реализовали дополнительные функции (сдвиг, обрезка таблиц, удаление пустых областей и замена значений ячеек), что значительно упростило процесс работы с отчетностью.
Использование плагина для подсчета KPI
Но самым успешным и одновременно самым распространённым стало применение плагина Аналитика при расчете ключевых показателей эффективности (KPI) отделов. Ниже мы погрузимся в пошаговую работу плагина, иллюстрирующую его функциональность.
Пошаговое применение плагина Аналитика
Шаг 1: Загрузка источников данных
Начнем с загрузки необходимых источников данных для формирования отчета. Это можно сделать через основное меню плагина в разделе «Источники» либо воспользовавшись кнопкой «+ новый источник» на правой панели.
Для получения данных из внешнего файла в формате xlsx выбираем источник «из файла». В диалоговом окне указываем нужный файл и нажимаем кнопку «Открыть». В нашем случае это уже заранее подготовленные данные с KPI сотрудников.
После этого в окне предварительного просмотра отобразятся загруженные данные.
Шаг 2: Подключение к базе данных
Теперь загрузим таблицу с информацией о сотрудниках и их отделах из внешней базы данных. К сожалению, плагин не поддерживает прямое подключение к базам данных из-за технических ограничений. Здесь на помощь придет утилита LDM Данные, которую нужно запустить на вашем ПК.
Аналогично подключаем второй источник данных, теперь выбрав «из базы данных SQL» и заполнив все необходимые параметры подключения.
Важно обратить внимание на сообщение об успешном подключении утилиты LDM Данные, после чего можно нажать «добавить». В случае соединения в окне предварительного просмотра появится список доступных таблиц из базы данных.
Шаг 3: Работа с данными
Двойное нажатие на таблицу откроет каталог действий, доступных для выбранного источника. Здесь по умолчанию создается запрос на выбор всех данных из таблицы (в нашем случае SELECT * FROM), который можно настроить или скорректировать, используя синтаксис SQL. После полной загрузки данных можно перейти к их преобразованию. Для этого в плагине доступно множество функций, которые откроются после нажатия на кнопку «+ добавить действие» под загруженными источниками данных.
Шаг 4: Объединение и преобразование данных
Так как в обоих источниках есть ID сотрудника. Мы объединим таблицы KPI и таблицу отделов, используя действие «Объединение данных». При этом указываем параметры объединения «Объединить по именам строки», чтобы объединить данные на основе одинаковых значений.
Для удобства работы с данными применим функции «Перемещение» и «Удаление ячеек», чтобы получить таблицу с нужными данными в подходящем формате.
Шаг 5: Сводный отчет по KPI
Чтобы преобразовать собранные данные в агрегированный список отделов с указанием среднего значения KPI, воспользуемся функцией «Сведение данных». В результате мы получим сводный отчет, который будет отображать список подразделений компании и средний балл KPI сотрудников каждого из них.
Для улучшения восприятия отчет можно отсортировать с помощью функции «Вертикальная сортировка», что позволит получить уложенный вид информации.
В результате мы получаем структурированный отчет, который позволяет оценивать эффективность работы отделов на основе собранных KPI.
Заключение
Каждый год мы сталкиваемся с растущими требованиями к аналитике данных и автоматизации бизнес-процессов. Подводя итоги, можно сказать, что плагин Аналитика не только облегчает процесс обработки и анализа данных, но и при желании открывает новые горизонты для его использования в бизнесе. Благодаря постоянному развитию и улучшению функционала, мы создаём инструмент, который делает нашу работу более продуктивной.
Делитесь своими впечатлениями и предложениями. Мы всегда открыты к улучшениям и новому взгляду на продукт.
Автор: Kirill_Live