Иногда функциональности 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 также подходит, но в ней может не быть некоторых полезных инструментов, например шпионов.
Обязательно установите сторонние плагины, которые заметно упростят разработку:
- Enhanced Class Decompiler — для декомпиляции скомпилированных бандлов;
- PDE Source Lookup — подгружает исходники классов из интернета;
- Eclipse Zip Editor — позволяет выполнять глобальный поиск по всей целевой платформе;
- WindowBuilder — понадобится для создания пользовательского интерфейса.
С чего начать разработку
Хорошая отправная точка — цикл статей на Инфостарте. Его стоит пройти от начала до конца: так вы набьёте руку и разберетесь с инструментами Eclipse. Материал немного устарел, но в сочетании с этой статьей такие моменты будет легко обойти.
Обязательно возьмите официальный демоплагин в качестве донора — из него можно заимствовать готовые решения.
Архитектура 1C:EDT
EDT представляет собой набор бандлов — своеобразных «кирпичиков». Часть из них относится к стандартному Eclipse, часть разработана компанией «1С» с учетом специфики платформы.
Важно, что во время работы бандлы могут запускаться и останавливаться на лету. Каждый бандл либо добавляет новую функциональность, либо переопределяет поведение другого бандла, если тот это позволяет.
Структура плагина
Плагин в Eclipse состоит из трех проектов.
Проект Target platform
Это описание целевой платформы — набора бандлов EDT, который мы собираемся расширять.
- Откройте файл Target и перейдите на вкладку Source (вкладку Definition лучше сразу пропустить, чтобы избежать типичных ошибок).
- Скопируйте содержимое Target из демоплагина-донора. Учтите, что целевые платформы версионируются вместе с EDT: на момент подготовки материала актуальна версия 2025.2.
- После сохранения и нажатия Reload Eclipse подкачает необходимые бандлы в ваш workspace.
Проект Feature
Это проект поставки — описание состава плагина для распространения. Здесь указывается версия плагина, его название (которое увидит пользователь) и информация о вендоре. Откройте файл feature.xml.
На вкладке Included Plug-ins указывается комплект поставки: чаще всего это один бандл, но их может быть и несколько.
Результат настройки отображается в текстовом виде на вкладке feature.xml.
Проект Plug-in
Это самый важный проект — сам бандл. Он включает три файла метаданных и функциональную часть, состоящую из пакетов с классами.
- MANIFEST.MF — здесь настраивается идентификатор бандла, класс Activator и версия Java (используется Java 17). Класс Activator создавать не обязательно, но он полезен: в нем размещаются обработчики запуска и остановки бандла, а также логирование ошибок.
- Dependencies — вкладка зависимостей.
Если вы используете функциональность других бандлов, зависимость от них нужно указать обязательно. Зависимость может быть на уровне бандла или на уровне пакета. Стандартные бандлы Eclipse версионируются на уровне бандлов, а компоненты «1С» — на уровне пакетов, поэтому для них зависимости лучше добавлять попакетно.
- plugin.xml — вкладка Extensions. Здесь описывается, к каким точкам расширения вы подключаетесь. Это напоминает конструктор LEGO: другие бандлы предоставляют точки расширения, а вы указываете, как будете их использовать.
- build.properties — файл для сборки. Он достаточно простой, почти все параметры остаются по умолчанию, но есть один нюанс, о котором речь пойдет в разделе о сборке.
Доработаем вашу 1С без изменения кода
Исследование типового функционала
Если вы не хотите изобретать велосипед, а планируете использовать существующие наработки, начните с исследования пользовательского интерфейса. Здесь помогут шпионы Eclipse:
- Запустите EDT в режиме отладки, наведите указатель на элемент интерфейса и определите, какой бандл добавил эту функциональность.
Рабочее место E4 Spies window может помочь определить, какой бандл отвечает за конкретную настройку EDT.
При клике в запущенном в отладке сеансе 1С:EDT:
- Preference Spy (Alt+Shift+F11) — покажет, какие настройки изменились при редактировании формы.
- Bundle Spy (Alt+Shift+F12) — отобразит состояния и версии плагинов в запущенном сеансе.
- Event Spy (Alt+Shift+F8) — логирование событий.
Для исследования кода сначала обратитесь к официальной документации — посмотрите, какие классы и сервисы могут быть полезны.
Если ничего не нашли, переходите к JavaDoc для EDT (сервисы, моделирование) и Eclipse. Глобальный поиск можно выполнить через Eclipse Zip Editor, но учтите, что при поиске на кириллице придется поэкспериментировать с кодировкой. Искомый код хранится в папке .metadata workspace.
Найденные классы бандлов скомпилированы, поэтому для просмотра исходного кода понадобится Enhanced Class Decompiler.
Пользовательский интерфейс
При работе с UI есть три важных момента:
- Хорошим тоном считается разделение бандлов на UI-бандлы (изменяющие интерфейс) и не-UI-бандлы (содержащие программную функциональность). Это разделение используется и в демоплагине, и в целевой платформе.
- В Eclipse формы приходится «рисовать» программно, то есть текстом. Это неудобно, особенно для новичка. Здесь поможет WindowBuilder: после его установки появляется конструктор форм, который генерирует необходимый код.
- Для хранения собственных настроек плагина используйте точку расширения стандартных настроек и мастер настроек. Для паролей применяйте
ISecurePreferences(учитывайте, что кириллица в нем не поддерживается).
Публичные сервисы
Публичный сервис — это класс, который вендор официально разрешил использовать в собственных разработках.
Аналогия с 1С — программный интерфейс с доступными методами. Просто создать переменную с типом сервиса недостаточно: без инициализации она получит значение null.
Способы подключения:
- Через Google Guice — подходит, например, для обработчика кнопки. В классе-обработчике нужно указать инжектор и класс обработчика, после чего сервисы инициализируются. Есть ограничения. Инструкция подключения по ссылке.
- Через ServiceSupplier — более универсальный способ, у него автор не заметил ограничений. Инструкция по ссылке.
Если оба варианта не сработали, можно взять другой публичный сервис и найти у него метод, возвращающий нужный класс. При глобальном поиске часто попадаются пакеты со словом internal в названии — вендор помечает их как служебные. Использовать их напрямую не рекомендуется: в новой версии EDT они могут измениться, и плагин сломается.
Всегда отдавайте предпочтение публичным сервисам.
Чтобы узнать, какие публичные сервисы существуют, откройте другие бандлы, перейдите в их класс Activator и посмотрите доступные сервисы. Для поиска точек расширения перейдите в Extensions, нажмите «Добавить» и снимите галочку в нижней части окна — вы увидите все доступные точки подключения.
Отладка
Полезные инструменты:
- Панель Console — выводит логи во время выполнения кода. В режиме отладки EDT передает туда много полезной информации.
- Панель Debug Shell — доска для добавления и вычисления собственных выражений с контекстной подсказкой.
- Drop to Frame — команда, которой не хватает в 1С. Позволяет вернуться к началу текущего уровня стека вызовов, чтобы повторно пройти код с исправлениями без перезапуска сеанса отладки.
Настройка конфигурации отладки
В конфигурации указывается путь к workspace разрабатываемой EDT (не workspace плагина). Рекомендуется включить очистку при перезапуске с параметром Ask, чтобы случайно не удалить тестовый пример.
Частая проблема новичков: в поле Run a product отсутствует вариант Product Application RCP.
Решение — добавить недостающую строку в целевую платформу демоплагина (строка приведена на изображении в оригинале).
На вкладке Arguments при выходе новой версии EDT аргументы виртуальной машины могут измениться и перестать работать. В таком случае снова обратитесь к демоплагину-донору и скопируйте актуальные аргументы из файла plugin.launch.
На вкладке Configuration установите флажок Clear, а на вкладке Common в качестве Shared file укажите ваш бандл — так конфигурация отладки будет храниться внутри плагина и ее можно будет версионировать вместе с проектом.
Отладка декомпилированных модулей
Здесь снова поможет внешний плагин Enhanced Class Decompiler — назначьте его средством по умолчанию для открытия файлов классов. Однако из-за особенностей компиляции порядок строк в декомпилированном коде может нарушаться: курсор может указывать на строку 71, тогда как фактически это строка 111. Поэтому при пошаговой отладке ориентируйтесь на комментарии.
При отладке публичных сервисов проверяйте значения через просмотр выражений. Если сервис равен null — он не инициализирован. Если сервис инициализирован, но вызов методов приводит к зависанию — что-то подключено неправильно.
Важный момент: модель EDT содержит функциональность объектной СУБД с транзакциями и блокировками.
Если во время открытой транзакции возникнет ошибка или вы вызовете Drop to Frame и не закроете транзакцию, механизм сломается, и при следующей попытке система будет сообщать, что транзакция уже открыта. Всегда доводите выполнение до закрытия транзакции и не используйте Drop to Frame внутри незавершенной транзакции.
Присоединяйтесь к команде профессионалов WiseAdvice-IT!
Сборка
Сборка компилирует плагин в один файл. Предлагается два способа:
- Через Eclipse — простой вариант для новичков. Отличие в том, что сборка выполняется в ZIP-архив, а не в каталог.
- Через Apache Maven — вариант для экспертов. Официальная документация в большей степени рассчитана именно на них.
Важный нюанс связан с файлом build.properties. Если в модулях с классами используется кириллица, без определенной строки (ее можно взять из демоплагина-донора) компилятор преобразует текст в другую кодировку, и вместо обычных символов появится «белеберда». Добавление строки решает проблему — код будет компилироваться в UTF-8.
Учитывайте, что EDT развивается, и зависимости могут устаревать. Во время сборки система может сообщить об этом — тогда потребуется повысить версию зависимости в настройках.
Остались вопросы? Задайте специалисту WiseAdvice-IT через форму обратной связи ниже.
Подписывайтесь на ключевые новости 1С в Telegram, видеоканалы в YouTube, RUTUBE и VK.
консультация эксперта
самые свежие новости 1 раз в месяц










































