К статье
Практический материал

Разработка и Конфигурация · 9 мин

Графическая схема в 1С: как создать и использовать

Как создать графическую схему в 1С: добавление реквизита формы, элементы схемы, программное заполнение, маршрутные карты бизнес-процессов и типичные ошибки.

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

Работать с графической схемой можно двумя способами: интерактивно, когда пользователь сам расставляет и редактирует элементы на форме, и программно, когда схема строится кодом на встроенном языке. Второй вариант востребован чаще: схема формируется автоматически на основании данных объектов, например показывает, на какой точке маршрута сейчас находится конкретный бизнес-процесс.

Материал рассчитан на разработчиков и внедренцев, работающих в конфигураторе 1С:Предприятие 8.3. Описанные приёмы применимы как к типовым конфигурациям в режиме расширений, так и к собственным разработкам.

Что такое графическая схема и где она применяется

Графическая схема — это самостоятельный тип данных платформы, а не картинка и не ActiveX-компонент. Она хранится в базе данных как структурированный набор элементов: фигур, линий и надписей. Благодаря этому схему можно сохранять в реквизитах объектов, передавать между клиентом и сервером, выводить в табличный документ при печати.

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

Как добавить графическую схему в объект конфигурации

Откройте конфигуратор и найдите объект, в котором должна храниться схема, — например, документ или задачу. Добавьте новый реквизит, задайте ему имя (например, «СхемаМаршрута») и выберите тип «ГрафическаяСхема». Этот тип доступен для реквизитов справочников, документов, бизнес-процессов, задач и обработок.

Если схема нужна только для отображения и не должна сохраняться в базе, добавьте реквизит формы, а не объекта: откройте форму, в панели реквизитов создайте новый реквизит с типом «ГрафическаяСхема». Такой вариант подходит, когда схема каждый раз строится программно на основании актуальных данных.

После добавления реквизита перетащите его из панели реквизитов в дерево элементов формы. Платформа автоматически создаст поле вида «Поле графической схемы». Настройте его свойства: размеры, растягивание по горизонтали и вертикали, доступность редактирования.

Создание схемы в режиме пользователя

Если свойство «ТолькоПросмотр» у поля схемы отключено, пользователь может рисовать схему вручную. На форме появляется панель элементов, откуда на поле перетаскиваются фигуры: блоки процесса, условия, старт и завершение, декоративные фигуры. Элементы соединяются линиями — для этого курсор подводится к краю фигуры и линия протягивается к следующему элементу.

Двойной щелчок по элементу открывает редактирование текста надписи. В свойствах элемента (через контекстное меню) можно изменить цвет фона, рамку, шрифт. Такой интерактивный режим удобен для сценариев, где маршрут проектирует пользователь, — например, при моделировании произвольных схем согласования.

Программное заполнение схемы

Программное построение — основной рабочий сценарий. Схема заполняется через коллекцию «ЭлементыГрафическойСхемы», в которую добавляются элементы разных типов: фигуры (ЭлементГрафическойСхемыФигура), линии (ЭлементГрафическойСхемыЛиния) и декорации. Каждой фигуре задаются координаты, размеры, текст и картинка.

Типичный фрагмент кода выглядит так: создаётся новый объект «ГрафическаяСхема», в него добавляются фигуры с указанием типа (блок, условие, старт, завершение), затем добавляются соединительные линии, где в свойствах «НачалоЭлемента» и «КонецЭлемента» указываются соединяемые фигуры. Готовый объект присваивается реквизиту формы или объекта.

bsl
Схема = Новый ГрафическаяСхема;
Фигура = Схема.ЭлементыГрафическойСхемы.Добавить(Тип("ЭлементГрафическойСхемыФигура"));
Фигура.ТипФигуры = ТипФигурыГрафическойСхемы.Блок;
Фигура.Наименование = "Согласование";
Фигура.Лево = 100;
Фигура.Верх = 50;
Фигура.Ширина = 120;
Фигура.Высота = 60;

Для бизнес-процессов есть более короткий путь: у объекта «БизнесПроцессОбъект» есть свойство «КартаМаршрута», которое возвращает готовую графическую схему маршрута. Остаётся только присвоить её реквизиту формы и при желании подсветить пройденные точки, изменив цвет соответствующих фигур.

Подсветка текущей точки маршрута

Практическая ценность схемы резко возрастает, когда она показывает состояние. Классический приём — перебрать элементы схемы, найти фигуру, соответствующую текущей точке маршрута бизнес-процесса, и изменить её оформление: цвет фона, толщину рамки или добавить картинку.

Соответствие между точками маршрута и фигурами обычно устанавливается по имени: имя элемента схемы совпадает с именем точки маршрута. Пройденные точки окрашивают в нейтральный цвет, текущую выделяют ярким, непройденные оставляют серыми. Обновлять подсветку следует при открытии формы и после записи объекта, иначе пользователь увидит устаревшее состояние.

Порядок действий: схема с подсветкой точки
  1. 1
    Добавьте в форму реквизит типа «ГрафическаяСхема» и поле для его отображения
  2. 2
    В обработчике ПриСозданииНаСервере получите карту маршрута бизнес-процесса
  3. 3
    Переберите элементы схемы и найдите фигуру текущей точки по имени
  4. 4
    Измените цвет фона найденной фигуры на выделяющийся
  5. 5
    Присвойте схему реквизиту формы и обновите отображение
  6. 6
    Проверьте подсветку на процессе, находящемся на разных точках маршрута

Вывод схемы на печать

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

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

Типичные ошибки
01
Добавление элементов без координат и размеров — фигуры накладываются друг на друга или отображаются нулевого размера
02
Построение схемы на клиенте при большом числе элементов — вызовы идут по сети, форма открывается медленно; стройте схему в серверной процедуре
03
Отсутствие обновления схемы после записи объекта — пользователь видит старое состояние маршрута
04
Хранение схемы в реквизите объекта при программном построении — данные дублируются и расходятся с реальным состоянием
05
Использование только интерактивного редактирования там, где схема должна формироваться автоматически из данных

Ограничения и альтернативы

Графическая схема не предназначена для сложной векторной графики: авторазмещение элементов ограничено, автоматическая трассировка линий работает по простым правилам, а при сотнях элементов отображение замедляется. Если нужна интерактивная диаграмма с произвольной графикой, рассмотрите поле HTML-документа с отрисовкой через JavaScript — но такое решение сложнее в поддержке и не хранится как структурированные данные.

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

Маршрут решения

Как выбрать подход

Нужно показать маршрут бизнес-процесса с текущей точкойИспользуйте КартаМаршрута объекта и подсветку фигур программно
Пользователь сам проектирует произвольную схемуДобавьте реквизит объекта типа ГрафическаяСхема и включите редактирование на форме
Схема нужна только для просмотра и строится из данныхИспользуйте реквизит формы и программное построение на сервере
Требуется сложная интерактивная графика за пределами возможностей платформыРассмотрите поле HTML-документа с внешней отрисовкой

Частые вопросы

Можно ли создать графическую схему без изменения конфигурации?

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

Почему на форме не отображаются добавленные программно фигуры?

Чаще всего не заданы координаты или размеры элементов, либо объект схемы не присвоен реквизиту формы после заполнения. Также проверьте, что построение выполняется в серверном контексте и реквизит формы связан с полем графической схемы в дереве элементов.

Как сохранить схему, нарисованную пользователем?

Если поле связано с реквизитом объекта типа «ГрафическаяСхема», схема сохраняется автоматически при записи объекта. Отдельный код для сохранения не нужен — достаточно стандартной команды «Записать».

Работает ли графическая схема в тонком клиенте и через веб?

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

Как связать фигуру схемы с конкретной точкой маршрута бизнес-процесса?

Используйте совпадение имён: имя элемента графической схемы в карте маршрута соответствует имени точки маршрута. Получив список текущих точек процесса, переберите элементы схемы и найдите фигуру с нужным именем, затем измените её оформление.

Можно ли выгрузить схему в картинку или внешний файл?

Штатного экспорта в графические форматы у объекта нет. Практический обходной путь — вывести схему в табличный документ и сохранить его в доступном формате, либо использовать скриншот. Для обмена структурой схемы между базами применяют сериализацию через хранилище значения.

Итог

Что важно запомнить

Графическая схема создаётся через реквизит типа «ГрафическаяСхема» и поле на форме. Заполняйте её программно на сервере, для бизнес-процессов используйте готовую КартуМаршрута с подсветкой текущей точки, а перед внедрением проверьте работу в целевом клиенте.