BPMN в 1С: Подключаем bpmn-js через WebKit

03.04.26

Разработка - Разработка внешних компонент

В современных корпоративных решениях на платформе 1С:Предприятие 8.3 всё чаще возникает потребность в визуальном моделировании и автоматизации бизнес-процессов с использованием нотации BPMN 2.0. Стандартные средства платформы не предоставляют полноценного редактора BPMN, однако интеграция открытой библиотеки bpmn-js позволяет реализовать интерактивное моделирование бизнес-процессов непосредственно в 1С. В статье рассмотрены архитектура решения, пошаговая инструкция по сборке библиотеки из исходников для WebKit, а также примеры программного взаимодействия между 1С и JavaScript.

В статье не теория, а готовый рабочий пайплайн: от «запустил и увидел» до сборки кастомной ES5-версии библиотеки из исходников. 

Результат – в тонком клиенте 1С появляется возможность использовать bpmn-js, как будто вы используете https://bpmn.io/. Всё интерактивно, а главное можно выгружать диаграммы из 1С в онлайн сервис и наоборот. 

Два режима работы с материалом

  • Практический для быстрого прототипирования. Готовая обработка, которая работает «из коробки».
  • Инженерный для тех, кто собирается сопровождать библиотеку, применять патчи или влиять на сборку.

 

Архитектура решения

Ключевые компоненты

  • bpmn-js  открытая JavaScript-библиотека для визуализации и редактирования BPMN-диаграмм. Исходный код библиотеки доступен для скачивания: https://bpmn.io/toolkit/bpmn-js/download/
  • Платформа 1С:Предприятие 8.3 (8.3.27.1719).
  • ДиаграмммыBPMN обработка 1С, обеспечивающая загрузку, отображение и сохранение диаграмм, а также двустороннее взаимодействие с bpmn-js через JavaScript.

Схема взаимодействия

  • Пользователь работает с BPMN-диаграммой в интерфейсе обработки 1С.
  • Все изменения фиксируются в памяти редактора bpmn-js.
  • По команде пользователя или автоматически состояние диаграммы сериализуется в XML/SVG/HTML.
  • Данные передаются в 1С для дальнейшей обработки или хранения.
  • Возможна обратная загрузка диаграмм из 1С в редактор.

 

Часть 1. Быстрый старт: пощупать BPMN в 1С

Всё, что нужно скачать обработку из репозитория (https://github.com/adlero4ek/1C-Bpmn-js/blob/main/ДиаграмммыBPMN.epf). Она самодостаточна: не требует внешних зависимостей, работает в тонком клиенте.

 

 

Для примера добавлены следующие кнопки, демонстрирующие взаимодействие 1С с JavaScript:

  • Создать задачу – создает новый элемент типа Task с уникальным идентификатором на диаграмме BPMN. 
  • Загрузить из XML – загрузка диаграммы из XML-файла.
  • Сохранить в HTML – сохраняет диаграмму в HTML файл.
  • Сохранить в SVG – сохраняет диаграмму в SVG файл 
  • Сохранить в XML – сохраняет диаграмму в XML файл.

Взаимодействие строится через вызов методов JavaScript-объекта, созданного на основе demo.html. Поддерживается автоматическое сохранение состояния при каждом изменении диаграммы.

 

Часть 2. Сборка bpmn-js под WebKit (ES5) для 1С

Почему это нужно?

Оригинальный bpmn-js рассчитан на современные браузеры (ES6+). WebKit в 1С:Предприятие 8.3 (актуальная версия 8.3.27.1719) требует ES5-совместимого кода.

Последовательность шагов, чтобы подключить библиотеку в решения 1С на платформе 1С:Предприятие 8.3 (8.3.27.1719).

  • Скачать и установить https://nodejs.org/en/download. На момент написания статьи актуальная версия v24.14.1. После установки обязательно перезагрузить компьютера. 
  • Установить интегрированную среду разработки (IDE), например, у меня «IntelliJ IDEA», но для задачи подойдет «Visual Studio Code» или «Cursor».
  • Создать новый каталог «Z:\Bpmn-JS» и откройте каталог в IDE
  • Откройте в  IDE новый терминал. В IntelliJ IDEA это комбинация клавиш Alt + F12

 

 

  • Введите команду: npm install bpmn-js, которая выполняет следующее действия:

    • NPM (Node Package Manager) находит библиотеку bpmn-js в своем онлайн-реестре.

    • Сама библиотека и все необходимые для её работы зависимости загружаются в ваш проект.

    • Все файлы помещаются в папку node_modules, а информация о пакете добавляется в файлы package.json и package-lock.json

 

 

  • Текущая реализация bpmn-js ориентирована на современные браузеры и необходимо пересобрать библиотеку под WebKit платформы 1С:Предприятие 8.3 (8.3.27.1719). Для этого необходимо в каталог «Z:\Bpmn-JS» скопировать из репозитория (https://github.com/adlero4ek/1C-Bpmn-js/tree/main/Скрипты сборки) все файлы, сохранив структуру каталогов

 

 

  • Введите команду: npm install, которая:
    • NPM (Node Package Manager) прочитает файл package.json в текущей папке
    • Установит все зависимости из раздела "dependencies" и "devDependencies"
  • Введите команду: npm run build:bpmn-es5 пересоберет bpmn-js под WebKit (ES5) платформы 1С:Предприятие 8.3 (8.3.27.1719) . В процессе сборки будет создан каталог «Z:\Bpmn-JS\bpmn\*» c файлами, которые обеспечивают функционирование движка bpmn-js

 

 

  • В случае успешного выполнения можно проверить, открыв в браузере файл demo.html. Файл demo.html:
    • Это демонстрационная веб-страница для BPMN-редактора, построенного на библиотеке bpmn-js. Предоставляет интерактивный редактор диаграмм бизнес-процессов (BPMN) прямо в браузере, позволяя отображать и редактировать BPMN-диаграммы.
    • В файл добавлен код на JavaScript, который будет использоваться при организации взаимодействия библиотеки bpmn-js и 1С. Методы файла позволяют, используя JavaScript:
      • Автоматически сохранять текущее состояние (XML и SVG) при каждом изменении.
      • Программно добавлять задачи, используя createTask().
      • Получать актуальные данные диаграммы, getBpmnState().
    • Функции createTask, getBpmnState можно вызывать как из 1С, так и напрямую из консоли браузера.
  • В обработке, есть два макета:
    • bpmn_zip – собранная библиотека. Это zip архив каталога «Z:\Bpmn-JS\bpmn\dist» загруженный как двоичные данные.
    • bpmn_txt – код файла demo.html, загруженный как текстовый документ.
  • Инициализация библиотеки выполняется в методах ПриСозданииНаСервере, ПриОткрытии. Код обработки подробно прокомментирован, что позволит разобраться очень быстро в текущей реализации. 

Готовая сборка с выполненными шагами: https://github.com/adlero4ek/1C-Bpmn-js/tree/main/Готовая сборка

 

Итог

Вы получаете:

  • Нативный BPMN 2.0-редактор внутри 1С
  • Полный цикл экспорта/импорта XML, SVG, HTML
  • Управляемую ES5-сборку под WebKit
  • Возможность кастомизировать поведение через JavaScript

Дальше только архитектура вашего процесса!

В заключении хотелось бы отметить, что текущая статья открывает огромные возможности для реализации полноценного модуля моделирования в нотации BMMN, но вы столкнётесь с большим количеством архитектурных задач, которые, к счастью, в большинстве своем имеют возможности реализации типовыми средствами платформы. 

Для написания кода на JavaScript я использовал GigaCode (AI-ассистент разработчика, продукт компании «СберТех»), но можно использовать Cursor, но GigaCode бесплатный. 

Ссылка репозиторий: https://github.com/adlero4ek/1C-Bpmn-js

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18300 руб.

30.05.2017    56858    10    71    

47

Разработка внешних компонент Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

5084 руб.

17.09.2018    41003    118    128    

120

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    6535    bayselonarrend    17    

54

Разработка внешних компонент Программист 1С:Предприятие 8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    11344    kovalevdmv    29    

83

Разработка внешних компонент Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    11740    starik-2005    40    

49

Инструментарий разработчика Разработка внешних компонент Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример взаимодействия 1С с Apach Kafka посредством внешней компоненты, разработанной на основе официальной библиотеки librdkafka (the Apache Kafka C/C++ client library).

22.11.2023    8248    141    ivan1703    26    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user-z99999 78 03.04.26 13:37 Сейчас в теме
Её можно распечатать, она будет ровной, красивой?
2. SultanovStas 97 03.04.26 13:56 Сейчас в теме
Движок позволяет на основании схемы получить png, который можете использовать как хотите.
3. SultanovStas 97 03.04.26 13:59 Сейчас в теме
Установите Giga Code и "попросите" написать метод получения png.
Для отправки сообщения требуется регистрация/авторизация