[{"content":"Не обязательно использовать Eclipse RCP, особенно если больше по душе IntelliJ IDEA. В этом нет ничего сложного.\nПодготовка В первую очередь необходимо установить 1C:EDT (использовалась версия 2025.2.3+30) и IntelliJ IDEA (использовалась версия 2026.1). Для разработки плагина 1C:EDT достаточно использовать IntelliJ IDEA c установленным плагином OSGi (использовалась версия 261.22158.182).\nСоздание проекта Создать новый проект. Указать имя и расположение проекта. Язык 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); } }\nСтруктура файлов проекта \u0026lt;root\u0026gt; └─── src └── com.skycorvette.example └── Activator.java Настройка OSGi Открыть Project Structure и выбрать Modules. Добавить модуль OSGi и заполнить Manifest Generation.\nSymbolic 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. Проверить, что плагин присутствует в списке. Пока плагин ничего не делает.\nТочка расширения Пришло время реализовать в плагине функциональность, расширяющую возможности 1C:EDT. Например, валидацию в модулях встроенного языка. Для этого необходимо создать Java Class Validator, расширяющий реализацию класса com.e1c.g5.v8.dt.check.components.BasicCheck. package com.skycorvette.example; import com.e1c.g5.v8.dt.check.CheckComplexity; import com.e1c.g5.v8.dt.check.ICheckParameters; import com.e1c.g5.v8.dt.check.components.BasicCheck; import com.e1c.g5.v8.dt.check.settings.IssueSeverity; import org.eclipse.core.runtime.IProgressMonitor; import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.MODULE; public class Validator extends BasicCheck\u0026lt;Object\u0026gt; { @Override protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters, Object context, IProgressMonitor progressMonitor) { super.check(object, resultAcceptor, parameters, context, progressMonitor); } @Override protected void configureCheck(CheckConfigurer checkConfigurer) { checkConfigurer.title(\u0026#34;Example of verification\u0026#34;) .description(\u0026#34;Example of verification\u0026#34;) .complexity(CheckComplexity.NORMAL) .severity(IssueSeverity.TRIVIAL) .module() .checkedObjectType(MODULE); } @Override public String getCheckId() { return \u0026#34;example\u0026#34;; } } Добавить файл plugin.xml, который описывает, как плагин расширяет возможности 1C:EDT. \u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;?eclipse version=\u0026#34;3.4\u0026#34;?\u0026gt; \u0026lt;plugin\u0026gt; \u0026lt;extension point=\u0026#34;com.e1c.g5.v8.dt.check.checks\u0026#34;\u0026gt; \u0026lt;category id=\u0026#34;com.skycorvette.example\u0026#34; description=\u0026#34;Examples of checks\u0026#34; title=\u0026#34;Examples of checks\u0026#34;\u0026gt; \u0026lt;/category\u0026gt; \u0026lt;check category=\u0026#34;com.skycorvette.example\u0026#34; class=\u0026#34;com.skycorvette.example.Validator\u0026#34;\u0026gt; \u0026lt;/check\u0026gt; \u0026lt;/extension\u0026gt; \u0026lt;/plugin\u0026gt; Включить файл plugin.xml в состав сборки. Результирующая структура файлов проекта \u0026lt;root\u0026gt; ├─── src │ └── com.skycorvette.example │ ├── Activator.java │ └── Validator.java └─── plugin.xml Запуск и отладка Открыть Run/Debug Configurations и добавить новую конфигурацию Remote JVM Debug. В конец файла 1cedt.ini отдельной строкой добавить аргументы командной строки для отладки -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005. Теперь можно запускать 1C:EDT и подключаться отладчиком IntelliJ IDEA.\nРешение проблем После внесения изменений в файл plugin.xml и пересборки проекта желательно полностью удалять директорию org.eclipse.osgi, расположенную в директории configuration 1C:EDT.\nКомментарии и вопросы в telegram\n","permalink":"https://skycorvette.com/knowledges/dccfd1f4-ef50-4242-8355-d62fb3675e13/","summary":"\u003cp\u003eНе обязательно использовать \u003cstrong\u003eEclipse RCP\u003c/strong\u003e, особенно если больше по душе \u003cstrong\u003eIntelliJ IDEA\u003c/strong\u003e. В этом нет ничего сложного.\u003c/p\u003e","title":"Разработка 1C:EDT Plugin в IntelliJ IDEA"},{"content":"Иногда приходится настраивать ssh. Каждый раз приходится вспоминать, что же надо сделать.\nВ файле /etc/ssh/sshd_config PasswordAuthentication no Этого достаточно для отключения аутентификации по паролю. В том числе, пользователя root. Изменения вступят в силу после перезапуска sshd systemctl restart sshd\n","permalink":"https://skycorvette.com/reminders/87fbfe29-8f50-43fa-9b5a-a4bbd1a5b56e/","summary":"\u003cp\u003eИногда приходится настраивать ssh. Каждый раз приходится вспоминать, что же надо сделать.\u003c/p\u003e","title":"Отключить аутентификацию по паролю в ssh"},{"content":"Ключи бывают разных типов. Как же их генерировать?\nrsa ssh-keygen -t rsa -C \u0026#34;email@example.com\u0026#34; -f filename dsa ssh-keygen -t dsa -C \u0026#34;email@example.com\u0026#34; -f filename ecdsa ssh-keygen -t ecdsa -C \u0026#34;email@example.com\u0026#34; -f filename ed25519 ssh-keygen -t ed25519 -C \u0026#34;email@example.com\u0026#34; -f filename","permalink":"https://skycorvette.com/reminders/157d1173-78bb-4b5f-808a-55d53ff6a99d/","summary":"\u003cp\u003eКлючи бывают разных типов. Как же их генерировать?\u003c/p\u003e","title":"Сгенерировать новый ключ ssh"}]