Публикуется первая глава бесплатного курса основы разработки для Р7 . Дополнительные материалы можно найти вот тут
Особенности разработки в MS Office (Excel)
Базовым средством автоматизации в офисном пакете Microsoft Office, в течение длительного времени (С 1996 года по настоящее время) является скриптовый язык VBA (VisualBasic for Application). C 2007 года VBA не лицензируется для других разработчиков. Согласно статьи в Википедии , посвященной VBA, этот язык является неким упрощенным подмножеством языка VisualBasic.
Рассмотрим некоторые особенности VBA, которые потом будут являться основой для средств автоматизации в Р7:
-
Хотя язык VBA и не является полноценным объектно-ориентированным, в его структуру разработчики внедрили «объектную модель» как самого приложения, так и структуры документа этого приложения. Пользователь прямо «из коробки» получает возможность с помощью скриптов влиять на состояние программы и активного документа.
-
Ещё одним огромным плюсом MS Office является возможность записи ручных действий пользователя (причем как действий с интерфейсом самой программы, так и действий с документом) в программный код VBA, который далее можно запустить, чтобы повторить последовательность действий. Это и есть изначальная идея макросов.
-
Возможность визуального построения средств графического интерфейса между пользователем и программным продуктом, за что VBA и получил в названии слово Visual (визуальный). Это позволяет построить сложные среды для работы пользователя, с развитой логикой работы, которая может включать в себя процессы, связанные с другими программными продуктами внутри офисного пакета.
-
Изначально VBA использует глубокую интеграцию с технологиями системной программной автоматизации Microsoft, такими как ActiveX, COM и OLE. Поскольку эти технологии лежат в основе самой объектной модели VBA, Microsoft Office и тех программных продуктов, где происходит интеграция VBA как языка автоматизации, внедрение этих технологий скрыто от конечного пользователя. Это упрощает работу с ними и расширяет возможности пользовательских форм макросов, позволяя внедрять готовые сторонние решения легким по сравнению со многими другими языками программирования способами.
-
VBA имеет встроенную возможность использовать системные или прикладные библиотеки (dll), тем самым давая возможность пользователю интегрировать заложенные в этих библиотеках функции в свои макросы, расширяя их возможности за счёт уже готовых API, как операционной системы Windows, так и любых других API, зарегистрированных в операционной системе.
-
Для построения сложных макросов или редактирования записанных, используется интегрированная в приложение среда разработки (IDE — Integrated Development Environment ). IDE устарела, но до сих пор предоставляет все необходимые базовые возможности по разработке и отладке.
Помимо VBA, в более поздних версиях были добавлены средства автоматизации (в том числе и интегрированные) на других языках программирования(C++,C#), такие как VSTA (Visual Studio Tools for Applications). Добавлена поддержка построения макросов на языках Python. Помимо этого, появилась форма дополнительной функциональности офисных пакетов, называемая расширением (add-in) на языке JavaScript. Функциональность и принципы построения расширений выходят за рамки данного курса.
Особенностью использования VBA в Microsoft Office является то, что макросы не могут использоваться отдельно, вне документов. Для своего использования макрос должен быть сохранён в составе документа, и для повторного использования он должен быть открыт в редакторе.
Если требуется независимая от документов дополнительная функциональность, следует создавать расширение (add-in) и инсталлировать его с помощью средств офиса.
Особенности разработки в Р7-Офис JavaScript
В офисном пакете Р7 есть два типа встраиваемой автоматизации действий пользователя: макросы и плагины.
Макросы — это скрипты автоматизации, интегрированные в документ и действующие только в рамках этого документа. Макросы в Р7, в отличие от MS Office, не могут записывать действия пользователя в скрипт с последующим воспроизведением таких действий. Для макросов используется встроенный в редактор плагин «макрос», который, хотя и ограничен по функциональности по сравнению с полноценными IDE, не требует отдельного внешнего редактора. В него интегрирован простейший отладчик, позволяющий ставить точки останова и просматривать значения некоторых из переменных при остановке, что полезно при разработке макросов.
Плагины — это независимые от документов наборы файлов, упакованные как zip архив (с расширением .plugin) и инсталлированные в приложения. Плагины могут иметь отдельный интерфейс пользователя, построенный по технологии HTML, CSS и JavaScript. Для их создания можно использовать любой редактор программного кода, поддерживающий JavaScript, например, Microsoft Visual Studio Code. Отладка плагинов может производиться только при использовании ключа запуска приложения «—ascdesktop-support-debug-info». Это позволяет после запуска плагина через контекстное меню редактора вызывать DevTools, представляющую собой среду отладки Chromium, на базе которого построен интерфейс редакторов Р7.
Процесс создания и отладки макросов и плагинов будет рассмотрен позже на соответствующих занятиях. Для создания своих средств автоматизации в редакторе Р7-Офис требуется базовое знание скриптового языка JavaScript, языка веб-разметки HTML и языка форматирования CSS. В рамках вводного курса будет рассмотрен JavaScript в минимальном объеме. Языки HTML и CSS придется изучить самостоятельно.
API для работы с приложением и документами предоставлено в ограниченном объёме, не все возможности доступные пользователю при работе с редактором и документами доступны для автоматизации в плагинах и макросах. В связи с особенностью архитектуры самого редактора очень ограничены возможности по взаимодействию между плагином и операционной системой. Например, нельзя штатными способами сохранить данные в произвольный файл на жесткий диск или организовать взаимодействие между плагином и внешними программами без использования квази-прокси серверов. Все подобные ограничения будут рассмотрены на соответствующих занятиях.
Основные различия разработки MS Office от Р7-Офис
Основные различия в разработке средств автоматизации в MS Office от Р7-Офис состоят в следующем:
MS Office |
Р7-Офис |
|
---|---|---|
Язык разработки |
VBA (для макросов) JavaScript (для add-in) |
JavaScript (для макросов и плагинов) |
Среда разработки |
Встроенная IDE |
Встроенный плагин -редактор макросов (но очень ограниченный по функциональности) , и только внешняя для плагинов (любая среда с поддержкой разработки на html +css+ javascript) |
Запись действий пользователя в макрос |
Почти полная поддержка |
Отсутствует |
Возможность работы с функциями ОС |
Полная поддержка |
Возможности ограничены требованиями безопасности для Web приложений (например, нельзя сохранить файлы на жесткий диск) |
Взаимодействие с API приложения |
Полная поддержка |
Есть ограничения и далеко не все функции доступны при разработке |
Взаимодействие с API документов |
Полная поддержка |
Есть ограничения и далеко не все функции доступны при разработке |
Возможность использования внешних библиотек |
Полная поддержка |
Ограничены возможностями JavaScript и различных фреймворков на его базе |
Возможности программирования форм пользователя |
Используется модель WindowsForms |
Все доступные возможности построения интерфейсов на базе HTML+ JavaScript |
Как видно из этой таблицы, в силу ограничений как самой архитектуры приложений Р7, так и реализации его API на текущий момент, перенос макросов для ряда задач, созданных в MS Office, в Р7 не представляется возможным без привлечения внешних серверных расширений. Это может привести к частичному использованию всего накопленного опыта автоматизации в VBA.
Различия между языками программирования (VBA и JavaScript) потребуют наличия специалистов, хорошо разбирающихся в особенностях программирования макросов на VBA в MS Office и JavaScript в Р7-Офис при переходе между офисными пакетами. Тем не менее, для большинства задач такой процесс возможен, хотя и с указанными выше оговорками и ограничениями. Примеры таких переходов будут рассмотрены на последующих занятиях.
ссылка на оригинал статьи https://habr.com/ru/articles/833460/
Добавить комментарий