Как мы превратили рутинную работу в удовольствие: история создания плагина для Р7-Офиса

от автора

Многие компании продолжают активно использовать 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 сотрудников.

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 1 с источниками.jpg

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

Шаг 2: Подключение к базе данных

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

Аналогично подключаем второй источник данных, теперь выбрав «из базы данных SQL» и заполнив все необходимые параметры подключения.

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 2 с формай для базы.jpg

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

Шаг 3: Работа с данными

Двойное нажатие на таблицу откроет каталог действий, доступных для выбранного источника. Здесь по умолчанию создается запрос на выбор всех данных из таблицы (в нашем случае SELECT * FROM), который можно настроить или скорректировать, используя синтаксис SQL. После полной загрузки данных можно перейти к их преобразованию. Для этого в плагине доступно множество функций, которые откроются после нажатия на кнопку «+ добавить действие» под загруженными источниками данных.

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 4 каталог действий.jpg

Шаг 4: Объединение и преобразование данных

Так как в обоих источниках есть ID сотрудника. Мы объединим таблицы KPI и таблицу отделов, используя действие «Объединение данных». При этом указываем параметры объединения «Объединить по именам строки», чтобы объединить данные на основе одинаковых значений.

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 5 действия объединения.jpg

Для удобства работы с данными применим функции «Перемещение» и «Удаление ячеек», чтобы получить таблицу с нужными данными в подходящем формате.

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 6 удаление столбцов.jpg

Шаг 5: Сводный отчет по KPI

Чтобы преобразовать собранные данные в агрегированный список отделов с указанием среднего значения KPI, воспользуемся функцией «Сведение данных». В результате мы получим сводный отчет, который будет отображать список подразделений компании и средний балл KPI сотрудников каждого из них.

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 8 действие сортировка.jpg

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

C:\Users\smikhaylova\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\G0QRIC0A\Screen 9 скрин результата.jpg

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

Заключение

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

Делитесь своими впечатлениями и предложениями. Мы всегда открыты к улучшениям и новому взгляду на продукт. 


ссылка на оригинал статьи https://habr.com/ru/articles/865334/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *