Pull to refresh

Ищем замену Excel — OnlyOffice/Р7

Level of difficultyEasy
Reading time5 min
Views6.4K

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

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

Не всё так печально, если речь идёт о «простом» использовании офисных пакетов, таком как заполнение вручную «стандартных» документов и табличек. Тут отечественное ПО, призванное заместить собой творение «Монстра из Рэдмонда», вполне себе справляется, и даже почти без проблем открывает документы, созданные ранее в MS Office.

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

Степень доступной автоматизации сильно рознится, но данная статья не о сравнительном анализе возможностей нашего отечественно офисного ПО, а о нашем исследовании возможности повторения функционала из нашей разработки  —  расширения (addon) для «MS Excel» in2sql, в офисном пакете «Р7-Офис» от фирмы «АО «Р7».

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

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

Решение для последнего, было создано на базе, к которой в итоге перешли даже в самой Microsoft, а именно – на JavaScript. В принципе, степень проработки API хороша, и позволяет делать с документом почти всё, что можно сделать в нём вручную. Есть, разумеется, и нюансы, которые хотелось бы иметь при решении вопросов автоматизации, таких как доступ в область меню основной программы для упрощения и комфорта работы пользователя со сторонними решениями (плагинами, так как addon-ов, просто не предусмотрено ни в Р7, ни в ONLYOFFICE).

Но, в остальном, возможностей открывается достаточно, чтобы попробовать реализовать некоторый функционал из упомянутого выше расширения  in2sql. Для тех, кто ещё не в курсе - данный аддон призван решать интересную и весьма полезную возможность - он интегрирует в «Exсel» инструменты для удалённого доступа к БД и импорту данных из таблиц БД сразу в таблицу Excel путем SQL-запросов. Но этим возможности данного инструмента не ограничиваются, и те, кому он интересен, могут вкратце ознакомиться с ним в цикле статей, посвящённых ему.

Для проверки возможностей «Редактора таблиц Р7-Офис» был выбран пробный вариант из пакета «Для дома». Поскольку проще пробовать в одной среде, скачивался вариант для MS Windows и устанавливался на 10 версию. Для тестирования была взята базовая задача искомой надстройки – получение данных из облачной БД, в качестве которой использовалась развернутая в AWS пробная версия СУБД CLICKHOUSE.

Процесс создания плагинов достаточно прост и весьма подробно описан в руководстве на сайте для разработчиков. Опять же, стоит отметить , что если хочется получить более внятную инструкцию, то проще идти на  материнскую площадку к ONLYOFFICE. Там всё более грамотно разложено, хотя и большинство информации придётся читать на английском языке. Сами плагины могут быть разного типа, и, что очень обрадовало, с возможностью интеграции окна в окно самого редактора. Это весьма удобно для работы в ряде случаев (таких как наш), в отличие от отдельных окон-форм (не важно, модальных или нет).

Сам плагин представляет собой HTML страничку, в которой интегрируется запрограммированное API для плагинов, есть возможность добавлять множество сторонних скриптов (и целых библиотек), коих на JS написано очень много. С одной стороны, это существенно упрощает разработку, так как можно использовать множество редакторов, например, тот же Microsoft VS Code. С другой стороны, отсутствие интегрированной среды разработки приводит к существенным неудобствам, так как нет ни визуальных средств проектирования форм, ни, что более важно, нет встроенного в среду разработки автодополнения при наборе кода, которое позволяет существенно снизить ошибки при написании. Как следствие, скорость разработки из-за постоянного копания в вэб-справочниках на сайте разработчиков, существенно снижается, особенно на ранних стадиях. И такой проблемой, надо заметить, страдает практически всё свободной офисное ПО, а как следствие – и основанное на нём отечественное.

Для написания простейшего варианта плагина, достаточно 3 файлов:

  1. собственно HTML странички index.html, которая будет отображаться внутри редактора

  2. скрипта на JavaScript, который включает в себя саму алгоритмическую логику плагина

  3. файл настроек в формате JSON  - config.json, по которому офисное приложение понимает: «что за плагин, как он должен быть использован при вызове? И т.д.». Настроек там возможно довольно много и все они определяют функциональные возможности создаваемого плагина.

Кстати, на GitHub ONLYOFFICE, есть большой раздел с готовыми примерами плагинов самых разных направленностей, эти примеры могут существенно помочь в начале своей разработки.

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

Функционал простой. Есть некая облачная база данных, и в ней нам известна таблица,
из которой мы хотим получить определенное число записей, и в случае успеха все
эти записи нужно отобразить в таблице открытой в Р7. Вот как это выглядит на практике:

Сам запрос пока не редактируется, а просто формируется в теле функции запроса. Но можно выбрать тип ответа от ClickHouse (RAW – сырой, без форматирования, CSV – с разделением полей через запятую, и самый полезный и продвинутый – JSON, который позволяет помимо самого ответа с данными, получать и форматы ответа, и даже статистику по запросу). Также можно указывать и число запрашиваемых записей. Ну а внизу собственно кнопка «Запрос», по нажатию на которую, в случае успешного запроса, мы получаем заполненную таблицу:

А в случае ошибки выводится пояснительная запись о ней в поле самого плагина:

Какие выводы можно сделать из данного эксперимента? Прежде всего, что в первом приближении пакет Р7 вполне себе способен использоваться для решения достаточно серьёзных бизнес-задач, так как при тестировании он без проблем заполнял данные на всё количество записей, имевшихся в запрашиваемой таблице (16384 записи):

И занял этот запрос с последующим заполнением около 1 минуты,

В том числе радует, что есть возможность интеграции плагина внутри формы самого окна. Есть возможность за счёт чудес современного JS делать формы с большим числом достаточно удобных элементов оформления (различные tab-вкладки, иерархические меню, встроенные таблицы  и т.д.). Опять же, за счёт использования JS, есть возможность широко использовать современные фреймворки для решения разного рода аналитических задач с получаемыми данными, которые не предусмотрены в рамках самого офисного API, с последующей выдачей уже готовой аналитики в виде таблиц (в том числе и сводных), различных диаграмм и т.п, что вполне себе неплохо представлено в рамках самого пакета Р7.

Естественно, есть и минусы. Или, скорее, недочёты, которые вполне могут при желании исправить разработчики. Часть из них мы уже описали выше. К ним можно добавить ещё много предложений, но пока речь не о том. Главное – система Р7 вполне себе живая, а значит на ней можно решать достаточно серьезные бизнес задачи И для нас это означает, что фронт задач нашей команды расширяется и на отечественное офисное ПО.

Tags:
Hubs:
Total votes 9: ↑7 and ↓2+5
Comments18

Articles