Разработка и Конфигурация · 10 мин
Как сделать графическую схему в 1С
Как создать графическую схему в 1С: добавление объекта в конфигураторе, работа с элементами схемы, программное заполнение, вывод на форму и типичные ошибки.
Графическая схема в 1С — это объект конфигурации, который позволяет отображать блок-схемы, маршруты бизнес-процессов, планы помещений, карты проезда и другие визуальные структуры прямо в интерфейсе программы. Чаще всего графические схемы используются для показа маршрута согласования документа, визуализации этапов производства или отображения занятости ресурсов на плане помещения.
В отличие от диаграмм и сводных таблиц, графическая схема не строится автоматически по данным запроса — её элементы размещаются вручную в редакторе или программно через встроенный язык. Это даёт полный контроль над расположением фигур, линий связи и оформлением, но требует понимания структуры объекта и его программного интерфейса.
Материал рассчитан на разработчиков и продвинутых пользователей, которые работают в конфигураторе. Описаны оба подхода: создание схемы как объекта метаданных и программное формирование схемы на форме без добавления объекта в конфигурацию.
Что такое графическая схема и когда она нужна
Графическая схема — это объект, состоящий из элементов двух типов: фигур (прямоугольники, эллипсы, ромбы, декоративные элементы) и соединительных линий между ними. Каждый элемент может иметь наименование, картинку, цвет, всплывающую подсказку и привязку к данным — например, к ссылке на документ или элемент справочника.
Типовые сценарии применения: отображение маршрута бизнес-процесса с подсветкой текущей точки, схема рассадки сотрудников в офисе, план склада с указанием ячеек хранения, визуализация иерархии подразделений. В типовых конфигурациях графические схемы используются, например, для показа маршрута согласования и карт маршрутов бизнес-процессов.
Важно понимать ограничение: графическая схема — это средство визуализации, а не аналитики. Если нужно показать динамику показателей или сравнить значения, используйте диаграмму или сводную таблицу. Схема оправдана там, где важна топология — взаимное расположение и связи между объектами.
Создание графической схемы в конфигураторе
Откройте конфигуратор и в дереве конфигурации найдите ветку «Общие → Графические схемы». Через контекстное меню выберите «Добавить» и задайте имя объекта, например «МаршрутСогласования». После добавления откроется редактор схемы — рабочая область с сеткой, на которую перетаскиваются элементы из панели инструментов.
На панели элементов доступны фигуры: прямоугольник (процесс), ромб (условие), эллипс (старт/завершение), а также декоративные элементы и линии. Разместите фигуры в нужном порядке, затем соедините их линиями: выберите инструмент «Линия», щёлкните по точке соединения первой фигуры и протяните линию ко второй. Точки соединения подсвечиваются при наведении.
Для каждого элемента в палитре свойств задаются наименование, текст, цвет фона и рамки, картинка, шрифт. Свойство «Имя» элемента важно, если планируется программная работа со схемой — по имени вы сможете находить нужную фигуру в коде и менять её оформление, например подсвечивать текущий этап.
Программное создание схемы на форме
Если схема должна строиться динамически — по данным документа или справочника — удобнее не создавать объект метаданных, а формировать схему программно. Для этого в форме добавьте реквизит с типом «ГрафическаяСхема» и перетащите его в дерево элементов формы, чтобы на форме появилось поле для отображения.
Заполнение схемы выполняется кодом встроенного языка. Типовой фрагмент выглядит так: получаем коллекцию элементов схемы, добавляем фигуру нужного типа, задаём её положение и размер, затем добавляем соединительную линию между двумя фигурами.
// Реквизит формы "Схема" с типом ГрафическаяСхема
Схема.Элементы.Очистить();
ЭлементНачало = Схема.Элементы.Добавить(Тип("ЭлементГрафическойСхемыСтарт"));
ЭлементНачало.Наименование = "Начало";
ЭлементНачало.Лево = 100;
ЭлементНачало.Верх = 20;
ЭлементДействие = Схема.Элементы.Добавить(Тип("ЭлементГрафическойСхемыДействие"));
ЭлементДействие.Наименование = "Согласование";
ЭлементДействие.Лево = 100;
ЭлементДействие.Верх = 80;
Линия = Схема.Элементы.Добавить(Тип("ЭлементГрафическойСхемыЛиния"));
Линия.НачалоЭлемент = ЭлементНачало;
Линия.КонецЭлемент = ЭлементДействие;
Координаты «Лево» и «Верх» задаются в пикселях от левого верхнего угла области схемы. При динамическом построении удобно вычислять координаты в цикле с фиксированным шагом по вертикали или горизонтали — так схема получится ровной даже при переменном числе элементов.
- 1Добавьте в форму реквизит типа «ГрафическаяСхема» и выведите его элементом формы
- 2В серверной процедуре очистите коллекцию элементов схемы
- 3Добавьте фигуры нужных типов, задайте им наименования и координаты
- 4Соедините фигуры линиями через свойства НачалоЭлемент и КонецЭлемент
- 5При необходимости задайте цвета и картинки для подсветки состояний
- 6Откройте форму и проверьте отображение схемы
Подсветка элементов и связь с данными
Практическая ценность схемы раскрывается, когда её внешний вид зависит от данных. Например, в маршруте согласования пройденные этапы можно закрашивать зелёным, текущий — жёлтым, а отклонённый — красным. Для этого в коде перебираются элементы схемы и по данным объекта меняются их свойства «ЦветФона» и «ЦветРамки».
Если схема хранится как объект метаданных, а подсветить нужно конкретный этап, найдите элемент по имени через метод «Найти» коллекции элементов либо перебором с проверкой свойства «Имя». Затем измените оформление. Изменения применяются сразу и видны на форме без дополнительного обновления.
Для интерактивности у поля графической схемы на форме есть события, позволяющие реагировать на выбор элемента пользователем. В обработчике можно определить, по какой фигуре щёлкнули, и открыть связанный документ или показать расшифровку этапа. Это превращает схему из картинки в навигационный инструмент.
Храните соответствие между элементами схемы и данными (например, этапами маршрута) в соответствии или таблице значений на форме. Тогда при клике по фигуре вы сразу получите ссылку на связанный объект без поиска по наименованиям.
Вывод схемы в отчёт и на печать
Графическая схема может быть выведена не только на форму, но и в табличный документ — для печати или включения в отчёт. В макете табличного документа добавьте рисунок с типом «Графическая схема» и свяжите его с именованной схемой, либо заполните рисунок программно при формировании отчёта.
При программном выводе объект схемы присваивается свойству рисунка табличного документа. Учтите, что размеры области рисунка нужно задавать с запасом: если схема выходит за границы области, часть элементов будет обрезана при печати. Перед выводом проверьте крайние координаты элементов и подберите высоту области.
Типичные ошибки и ограничения
Наиболее частая проблема — накладывающиеся или «уехавшие» элементы при программном построении. Причина почти всегда в жёстко заданных координатах без учёта количества элементов. Используйте вычисляемый шаг и контролируйте максимальные координаты, особенно если число этапов заранее неизвестно.
Вторая группа ошибок связана с линиями: линия не отображается, если не заданы оба свойства — начальный и конечный элементы, либо если фигуры удалены после создания линии. При очистке схемы методом «Очистить» удаляются все элементы сразу, поэтому пересоздавать линии нужно заново вместе с фигурами.
Также помните об ограничениях: графическая схема не поддерживает автоматическую компоновку элементов (автолейаут) — всё позиционирование выполняется вручную или кодом. В тонком и веб-клиенте отображение может незначительно отличаться, поэтому схему стоит проверять во всех используемых клиентах.
Как проверить результат
Все элементы видны целиком, без наложений и обрезки
Часть фигур выходит за границы или перекрывает другие
Каждая линия соединяет две фигуры и двигается вместе с ними
Линия висит в воздухе или исчезла после перестроения
Цвета элементов соответствуют состоянию объекта
Подсветка не меняется при изменении данных
FAQ
Можно ли создать графическую схему без конфигуратора, в режиме «Предприятие»?
Нет, добавление объекта метаданных и настройка формы выполняются только в конфигураторе. Пользователь в режиме «Предприятие» может лишь просматривать и использовать уже готовую схему. Для разовой визуализации без доработки конфигурации подойдёт внешняя обработка с программно построенной схемой.
Чем графическая схема отличается от диаграммы Ганта?
Диаграмма Ганта отображает интервалы во времени и строится по данным автоматически. Графическая схема показывает произвольные фигуры и связи, а её элементы размещаются вручную или кодом. Для планирования по времени выбирайте диаграмму Ганта, для топологии и маршрутов — схему.
Как сохранить схему в файл или картинку?
Прямого метода экспорта схемы в графический файл нет. Практический обходной путь — вывести схему в табличный документ и сохранить его в нужном формате, либо использовать макет с рисунком типа «Графическая схема» и формировать печатную форму.
Почему схема выглядит иначе в веб-клиенте?
Отрисовка элементов зависит от клиентского приложения, и мелкие расхождения в отступах, шрифтах и линиях возможны. Задавайте размеры и координаты с небольшим запасом и обязательно проверяйте итоговый вид во всех клиентах, которые используются в вашей организации.
Можно ли сделать автоматическое выравнивание элементов?
Встроенного механизма автокомпоновки у графической схемы нет. Выравнивание реализуется программно: в цикле каждому элементу присваиваются координаты, вычисленные по формуле от его порядкового номера, шага и отступов.
Как подсветить текущий этап бизнес-процесса на схеме?
Найдите нужный элемент схемы по имени через коллекцию элементов и измените его свойства «ЦветФона» и «ЦветРамки» в соответствии со статусом точки маршрута. Повторите для остальных этапов, задавая разные цвета пройденным, текущим и будущим шагам.
Что важно запомнить
Графическая схема в 1С создаётся в конфигураторе как объект метаданных или программно через реквизит формы. Элементы позиционируются вручную или кодом, подсветка выполняется изменением цветов по данным, а для печати схема выводится в табличный документ. Проверяйте координаты, связи линий и отображение во всех клиентах.