Как создать первый плагин для 1C:EDT: инструкция для начинающих

Содержание статьи
  1. Зачем разрабатывать собственный плагин
  2. Подготовка рабочего окружения
  3. С чего начать разработку
  4. Архитектура 1C:EDT
  5. Структура плагина
    1. Проект Target platform
    2. Проект Feature
    3. Проект Plug-in
  6. Исследование типового функционала
  7. Пользовательский интерфейс
  8. Публичные сервисы
  9. Отладка
    1. Настройка конфигурации отладки
    2. Отладка декомпилированных модулей
  10. Сборка
    1. Полезные материалы для бизнеса

Иногда функциональности 1C:EDT не хватает: в новых версиях не закрываются какие-то баги, отсутствуют нужные улучшения или возникают специфические требования инфраструктуры. В таких случаях на помощь приходит собственный плагин — и написать его вполне по силам даже новичку, если двигаться по понятному маршруту. В этой статье — практическое руководство, основанное на реальном опыте создания плагина для работы с хранилищем 1С.

Статья подготовлена по мотивам выступления на конференции INFOSTART TEAM EVENT 2026.

Зачем разрабатывать собственный плагин

Мотивация может быть разной в зависимости от роли:

  • Разработчикам плагин позволит добавить автоматические проверки кода и новые инструменты, упрощающие повседневную работу.
  • DevOps-инженерам и архитекторам — расширить набор проверок для код-ревью, добавить команды для EDT CLI и кастомизировать процессы CI/CD.

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


Подготовка рабочего окружения

Первый этап — установка Eclipse. Рекомендуется версия 2023-12 (4.30). Подойдут конфигурации for RCP and RAP Developers или for Committers — автор предпочитает последнюю, хотя работают все варианты. Версия из EDT Starter также подходит, но в ней может не быть некоторых полезных инструментов, например шпионов.

Eclipse для разработки плагинов 1С:EDT
Eclipse для разработки плагинов 1С:EDT

Обязательно установите сторонние плагины, которые заметно упростят разработку:

  • Enhanced Class Decompiler — для декомпиляции скомпилированных бандлов;
  • PDE Source Lookup — подгружает исходники классов из интернета;
  • Eclipse Zip Editor — позволяет выполнять глобальный поиск по всей целевой платформе;
  • WindowBuilder — понадобится для создания пользовательского интерфейса.

С чего начать разработку

Хорошая отправная точка — цикл статей на Инфостарте. Его стоит пройти от начала до конца: так вы набьёте руку и разберетесь с инструментами Eclipse. Материал немного устарел, но в сочетании с этой статьей такие моменты будет легко обойти.

Обязательно возьмите официальный демоплагин в качестве донора — из него можно заимствовать готовые решения.

Архитектура 1C:EDT

EDT представляет собой набор бандлов — своеобразных «кирпичиков». Часть из них относится к стандартному Eclipse, часть разработана компанией «1С» с учетом специфики платформы. 

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

Архитектура 1С:EDT
Архитектура 1С:EDT

Структура плагина

Плагин в Eclipse состоит из трех проектов.

Проект Target platform

Это описание целевой платформы — набора бандлов EDT, который мы собираемся расширять. 

  1. Откройте файл Target и перейдите на вкладку Source (вкладку Definition лучше сразу пропустить, чтобы избежать типичных ошибок). 
    Target Definition
    Target Definition

    Target Source
    Target Source

  2. Скопируйте содержимое Target из демоплагина-донора. Учтите, что целевые платформы версионируются вместе с EDT: на момент подготовки материала актуальна версия 2025.2. 
    Target в демоплагине-доноре
    Target в демоплагине-доноре

  3. После сохранения и нажатия Reload Eclipse подкачает необходимые бандлы в ваш workspace.

Проект Feature

Это проект поставки — описание состава плагина для распространения. Здесь указывается версия плагина, его название (которое увидит пользователь) и информация о вендоре. Откройте файл feature.xml. 

Проект Feature
Проект Feature

На вкладке Included Plug-ins указывается комплект поставки: чаще всего это один бандл, но их может быть и несколько. 

Вкладка Included Plug-ins
Вкладка Included Plug-ins

Результат настройки отображается в текстовом виде на вкладке feature.xml.

Вкладка feature.xml
Вкладка feature.xml

Проект Plug-in

Это самый важный проект — сам бандл. Он включает три файла метаданных и функциональную часть, состоящую из пакетов с классами.

Проект Plug-in
Проект Plug-in

  • MANIFEST.MF — здесь настраивается идентификатор бандла, класс Activator и версия Java (используется Java 17). Класс Activator создавать не обязательно, но он полезен: в нем размещаются обработчики запуска и остановки бандла, а также логирование ошибок.
    MANIFEST.MF - JavaSE-17
    MANIFEST.MF - JavaSE-17

  • Dependencies — вкладка зависимостей.
    Вкладка Dependencies
    Вкладка Dependencies

    Если вы используете функциональность других бандлов, зависимость от них нужно указать обязательно. Зависимость может быть на уровне бандла или на уровне пакета. Стандартные бандлы Eclipse версионируются на уровне бандлов, а компоненты «1С» — на уровне пакетов, поэтому для них зависимости лучше добавлять попакетно.
    Результат настройки файла MANIFEST.MF – текстовый документ с параметрами
    Результат настройки файла MANIFEST.MF – текстовый документ с параметрами

  • plugin.xml — вкладка Extensions. Здесь описывается, к каким точкам расширения вы подключаетесь. Это напоминает конструктор LEGO: другие бандлы предоставляют точки расширения, а вы указываете, как будете их использовать.
    Файл метаданных – plugin.xml
    Файл метаданных – plugin.xml

    Результат: текстовый файл plugin.xml со всеми настройками
    Результат: текстовый файл plugin.xml со всеми настройками

  • build.properties — файл для сборки. Он достаточно простой, почти все параметры остаются по умолчанию, но есть один нюанс, о котором речь пойдет в разделе о сборке.
    Файл метаданных – build.properties
    Файл метаданных – build.properties

    Общая структура плагина
    Общая структура плагина


Исследование типового функционала

Если вы не хотите изобретать велосипед, а планируете использовать существующие наработки, начните с исследования пользовательского интерфейса. Здесь помогут шпионы Eclipse:

  • Запустите EDT в режиме отладки, наведите указатель на элемент интерфейса и определите, какой бандл добавил эту функциональность.
Plug-in Selection Spy
Plug-in Selection Spy

Рабочее место E4 Spies window может помочь определить, какой бандл отвечает за конкретную настройку EDT.

Рабочее место E4 Spies window
Рабочее место E4 Spies window

При клике в запущенном в отладке сеансе 1С:EDT:

  • Preference Spy (Alt+Shift+F11) — покажет, какие настройки изменились при редактировании формы.
  • Bundle Spy (Alt+Shift+F12) — отобразит состояния и версии плагинов в запущенном сеансе.
  • Event Spy (Alt+Shift+F8) — логирование событий.

Для исследования кода сначала обратитесь к официальной документации — посмотрите, какие классы и сервисы могут быть полезны. 

Официальная документация 1С:EDT
Официальная документация 1С:EDT

Если ничего не нашли, переходите к JavaDoc для EDT (сервисы, моделирование) и Eclipse. Глобальный поиск можно выполнить через Eclipse Zip Editor, но учтите, что при поиске на кириллице придется поэкспериментировать с кодировкой. Искомый код хранится в папке .metadata workspace.

Поиск в EDT
Поиск в EDT

Найденные классы бандлов скомпилированы, поэтому для просмотра исходного кода понадобится Enhanced Class Decompiler.

Плагин Enhanced Class Decompiler
Плагин Enhanced Class Decompiler


Пользовательский интерфейс

При работе с UI есть три важных момента:

  1. Хорошим тоном считается разделение бандлов на UI-бандлы (изменяющие интерфейс) и не-UI-бандлы (содержащие программную функциональность). Это разделение используется и в демоплагине, и в целевой платформе.
    Разделение на UI-бандлы
    Разделение на UI-бандлы

  2. В Eclipse формы приходится «рисовать» программно, то есть текстом. Это неудобно, особенно для новичка. Здесь поможет WindowBuilder: после его установки появляется конструктор форм, который генерирует необходимый код.
    Рисование текстов в Eclipse
    Рисование текстов в Eclipse

    Рисование текстом в Eclipse
    Рисование текстом в Eclipse

  3. Для хранения собственных настроек плагина используйте точку расширения стандартных настроек и мастер настроек. Для паролей применяйте ISecurePreferences (учитывайте, что кириллица в нем не поддерживается).
    Глобальные настройки для всего плагина в Eclipse
    Глобальные настройки для всего плагина в Eclipse

    Глобальные настройки для всего плагина в Eclipse
    Глобальные настройки для всего плагина в Eclipse

Публичные сервисы

Публичный сервис — это класс, который вендор официально разрешил использовать в собственных разработках.

Аналогия с 1С — программный интерфейс с доступными методами. Просто создать переменную с типом сервиса недостаточно: без инициализации она получит значение null.

Разработка кода
Разработка кода

Разработка кода
Разработка кода

Способы подключения:

  • Через Google Guice — подходит, например, для обработчика кнопки. В классе-обработчике нужно указать инжектор и класс обработчика, после чего сервисы инициализируются. Есть ограничения. Инструкция подключения по ссылке.
    Подключение через Google Guice
    Подключение через Google Guice

  • Через ServiceSupplier — более универсальный способ, у него автор не заметил ограничений. Инструкция по ссылке.
    Подключение через ServiceSupplier
    Подключение через ServiceSupplier

Если оба варианта не сработали, можно взять другой публичный сервис и найти у него метод, возвращающий нужный класс. При глобальном поиске часто попадаются пакеты со словом internal в названии — вендор помечает их как служебные. Использовать их напрямую не рекомендуется: в новой версии EDT они могут измениться, и плагин сломается.

Всегда отдавайте предпочтение публичным сервисам.

Публичные сервисы
Публичные сервисы


Публичные сервисы
Публичные сервисы

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

Отладка

Полезные инструменты:

  • Панель Console — выводит логи во время выполнения кода. В режиме отладки EDT передает туда много полезной информации.
    Панель Console
    Панель Console

  • Панель Debug Shell — доска для добавления и вычисления собственных выражений с контекстной подсказкой.
    Панель Debug Shell
    Панель Debug Shell

  • Drop to Frame — команда, которой не хватает в 1С. Позволяет вернуться к началу текущего уровня стека вызовов, чтобы повторно пройти код с исправлениями без перезапуска сеанса отладки.
    Drop to Frame
    Drop to Frame

Настройка конфигурации отладки

В конфигурации указывается путь к workspace разрабатываемой EDT (не workspace плагина). Рекомендуется включить очистку при перезапуске с параметром Ask, чтобы случайно не удалить тестовый пример.

Рабочее пространство разрабатываемой EDT
Рабочее пространство разрабатываемой EDT


Рабочее пространство разрабатываемой EDT
Рабочее пространство разрабатываемой EDT

Частая проблема новичков: в поле Run a product отсутствует вариант Product Application RCP. 

Решение — добавить недостающую строку в целевую платформу демоплагина (строка приведена на изображении в оригинале).

На вкладке Arguments при выходе новой версии EDT аргументы виртуальной машины могут измениться и перестать работать. В таком случае снова обратитесь к демоплагину-донору и скопируйте актуальные аргументы из файла plugin.launch. 

Вкладка – Arguments
Вкладка – Arguments


Аргументы plugin.launch
Аргументы plugin.launch

На вкладке Configuration установите флажок Clear, а на вкладке Common в качестве Shared file укажите ваш бандл — так конфигурация отладки будет храниться внутри плагина и ее можно будет версионировать вместе с проектом.

Configuration - Clear
Configuration - Clear

Common - Shared file - Debug
Common - Shared file - Debug

Здесь снова поможет внешний плагин Enhanced Class Decompiler — назначьте его средством по умолчанию для открытия файлов классов. Однако из-за особенностей компиляции порядок строк в декомпилированном коде может нарушаться: курсор может указывать на строку 71, тогда как фактически это строка 111. Поэтому при пошаговой отладке ориентируйтесь на комментарии.

Плагин Enhanced Class Decompiler
Плагин Enhanced Class Decompiler

При отладке публичных сервисов проверяйте значения через просмотр выражений. Если сервис равен null — он не инициализирован. Если сервис инициализирован, но вызов методов приводит к зависанию — что-то подключено неправильно.

Важный момент: модель EDT содержит функциональность объектной СУБД с транзакциями и блокировками.

Если во время открытой транзакции возникнет ошибка или вы вызовете Drop to Frame и не закроете транзакцию, механизм сломается, и при следующей попытке система будет сообщать, что транзакция уже открыта. Всегда доводите выполнение до закрытия транзакции и не используйте Drop to Frame внутри незавершенной транзакции.


Сборка

Сборка компилирует плагин в один файл. Предлагается два способа:

  1. Через Eclipse — простой вариант для новичков. Отличие в том, что сборка выполняется в ZIP-архив, а не в каталог.
  2. Через Apache Maven — вариант для экспертов. Официальная документация в большей степени рассчитана именно на них.

Важный нюанс связан с файлом build.properties. Если в модулях с классами используется кириллица, без определенной строки (ее можно взять из демоплагина-донора) компилятор преобразует текст в другую кодировку, и вместо обычных символов появится «белеберда». Добавление строки решает проблему — код будет компилироваться в UTF-8.

Перенос строки из демоплагина-донора в файл build.properties
Перенос строки из демоплагина-донора в файл build.properties

Учитывайте, что EDT развивается, и зависимости могут устаревать. Во время сборки система может сообщить об этом — тогда потребуется повысить версию зависимости в настройках.

Полезные материалы для бизнеса

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

Остались вопросы? Задайте специалисту WiseAdvice-IT через форму обратной связи ниже.

Подписывайтесь на ключевые новости 1С в Telegram, видеоканалы в YouTube, RUTUBE и VK.



Рассказать друзьям
Предыдущая статья статья
Бухгалтерия и ПЭО в работе с ГОЗ: как выстроить взаимодействие без конфликтов
Следующая статья статья
К списку статей
Комментарии
Меню