Разработка 1C:EDT Plugin в IntelliJ IDEA
Не обязательно использовать Eclipse RCP, особенно если больше по душе IntelliJ IDEA. В этом нет ничего сложного.
Подготовка
В первую очередь необходимо установить 1C:EDT (использовалась версия 2022.2.5+10) и IntelliJ IDEA (использовалась версия 2023.1.2 (Community Edition)). Для разработки плагина 1C:EDT достаточно использовать IntelliJ IDEA CE c установленным плагином OSGi (использовалась версия 231.8109.90).
Создание проекта
Создать новый проект. Указать имя и расположение проекта. Язык Java, система сборки IntelliJ. Пример кода в проект не добавлять.
Добавление библиотеки 1C:EDT
Открыть Project Structure и выбрать Libraries.
Добавить новую Java библиотеку, выбрав путь к директории plugins
из директории установки 1C:EDT.
Класс активатор
Активатор не является обязательным классом, но в дальнейшем он все таки понадобится. Лучше создать его заранее, так как он управляет жизненным циклом плагина и потребуется для получения экземпляра плагина.
В директории src
необходимо создать Package com.skycorvette.example
и в него добавить Java Class Activator
, расширяющий реализацию класса org.eclipse.core.runtime.Plugin
.
package com.skycorvette.example;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
public class Activator extends Plugin {
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
}
@Override
public void stop(BundleContext context) throws Exception {
super.stop(context);
}
}
Структура файлов проекта
<root>
└─── src
└── com.skycorvette.example
└── Activator.java
Настройка OSGi
Открыть Project Structure и выбрать Modules. Добавить модуль OSGi и заполнить Manifest Generation.
Symbolic name: com.skycorvette.example;singleton:=true
Bundle activator: com.skycorvette.example.Activator
Bundle version: 1.0.0.1
Additional properties:
Bundle-Vendor: Sky Corvette Team
Bundle-Name: Example
В директории установки 1C:EDT рядом с директорией plugins
создать директорию dropins
. Если доступ на запись в данную директорию ограничен, необходимо предоставить. Указать расположение результирующего файла плагина, выбрав путь к созданной директории dropins
.
Проверка плагина в 1C:EDT
Собрать проект, запустить 1C:EDT и открыть окно About 1C:Enterprise Development Tools
, нажать кнопку Installation Details
и перейти к разделу Plug-ins
. Проверить, что плагин присутствует в списке. Пока плагин ничего не делает.
Точка расширения
Пришло время реализовать в плагине функциональность, расширяющую возможности 1C:EDT. Например, валидацию в модулях встроенного языка.
Для этого необходимо создать Java Class Validator
, реализующий интерфейс com._1c.g5.v8.dt.bsl.validation.IExternalBslValidator
. Интерфейс IExternalBslValidator
объявлен устаревшим, так как существует новый механизм проверок. Используется только для демонстрации возможностей.
package com.skycorvette.example;
import com._1c.g5.v8.dt.bsl.validation.CustomValidationMessageAcceptor;
import com._1c.g5.v8.dt.bsl.validation.IExternalBslValidator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.util.CancelIndicator;
public class Validator implements IExternalBslValidator {
@Override
public boolean needValidation(EObject eObject) {
return false;
}
@Override
public void validate(EObject object, CustomValidationMessageAcceptor messageAcceptor, CancelIndicator monitor) {
IExternalBslValidator.super.validate(object, messageAcceptor, monitor);
}
}
plugin.xml
, который описывает, как плагин расширяет возможности 1C:EDT.
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension point="com._1c.g5.v8.dt.bsl.externalBslValidator">
<externalValidator
class="com.skycorvette.example.Validator">
</externalValidator>
</extension>
</plugin>
plugin.xml
в состав сборки.
Результирующая структура файлов проекта
<root>
├─── src
│ └── com.skycorvette.example
│ ├── Activator.java
│ └── Validator.java
└─── plugin.xml
Запуск и отладка
Открыть Run/Debug Configurations и добавить новую конфигурацию JAR Application. В качестве Path to JAR указать файл org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
, расположенный в директории plugins
установки 1C:EDT. Для MacOS указать VM options -XstartOnFirstThread
.
Теперь можно запускать 1C:EDT из IntelliJ IDEA и использовать отладку.
Комментарии и вопросы в telegram