Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

Данные

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

Хранение данных в шейпах

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

Секция Shape Data

Секция Shape Data – используется чаще всего. Ее содержимое даже отображается в специальном окне Shape Data, что позволяет пользователю просматривать и изменять данные, даже не открывая шейп-листа.

Состав секции переменный - в ней может быть как одна, так и множество строк. Секция может вообще отсутствовать. Каждая строка отвечает за хранение одной единицы данных.

ShapeData

В строке имеется несколько ячеек, хранящих такие параметры, как имя строки, метку, тип переменной, значение и т.д. Собственно данные лежат в ячейке Value.

Секция User (данные, определенные пользователем)

user-defined

Эта секция похожа на Shape Data, но отличается тем, что она доступна только через шейп-лист и ее строки имеют меньшее количество ячеек. Поэтому секция чаще используется для хранения промежуточных или скрытых данных, не предназначенных для непосредственного изменения пользователем.

Секция Scratch

scratch

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

Пример использования Shape Data и User-defined cells

shapedata

cup

Рассмотрим пример использования данных в шейпе на примере стакана кофе. Это шейп-группа, содержащая вложенные шейпы для собственно кофе, молока и пены. Строка данных шейпа определяет тип кофе. Значения выбираются из фиксированного списка. Элементы списка содержатся в ячейке Format. Каждый раз, когда пользователь выбирает значение в окне Shape Data, срабатывает функция INDEX и в ячейке Value появляется одно из значений.

Секция User-defined Cells содержит 5 вычисляемых переменных. Если в данный момент отвлечься от деталей формул, то можно думать о трех отдельных частях этой секции.

user_5

Во-первых, это ячейка CoffeeTypeIdx, в которой с помощью функции LOOKUP вычисляется порядковый номер выбранного в Shape Data значения.

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

Наконец, две Pnt ячейки для вычисления на их основе фактических координат кофе и молока в стакане.

image 7

При изменении значения типа кофе в данных формы уровни соответственно перемещаются вверх и вниз.

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

Прочие данные

Три перечисленных секции – это не полный перечень. Иногда используются более экзотические хранилища. Например, ячейки Data1…Data3, которые не доступны пользователю даже через шейп-лист. Или SolutionXML элементы, ориентированные на хранение данных в XML формате. Но они используются гораздо реже. Поэтому помнить о них полезно, но изучать лучше не в кратком обзоре, а при более глубоком знакомстве с Visio.

Связывание данных с шейпами

Знать способы обмена данными не менее важно, чем места хранения данных. Перейдем к двум новым возможностям, которые появились в Visio 2007: связывание данных с шейпами (Link data to Shapes) и Data Graphics.

Обе доступны только в выпусках Professional и выше, и об этом следует помнить, выбирая решение, предназначенное для работы во всех выпусках.

Начнем с первого. Исторически синхронизации данных в Visio в основном работает в одном направлении. Это подчеркивается названием встроенной функции Link data to Shapes.

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

Основной процесс выглядит следующим образом.

src

Вы выбираете источник данных. Это создает подключение к данным и объекты Datarecordset. Оба они сохраняются в документе Visio. Последний шаг - создать отношения между строками Datarecordset и строками данных шейпа в одном или нескольких шейпах.

Допустимо создавать несколько Datarecordset из нескольких источников. Так, например, если у нас есть первый источник SQL-сервер, вы можете добавить второй Datarecordset, подключенный к источнику Excel, и третий Datarecordset из XML-документа.

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

Пока мы рассматриваем одну строку данных для одного шейпа. Но возможны и другие отношения, например одну строку для многих шейпов и множество строк для одного шейпа. Последний тип отношения подпадает под ограничение - один шейп может быть связан только с одной строкой из каждого набора записей. Это, безусловно, имеет смысл, потому что Visio пытается сопоставить столбцы в Datarecordset с именованными строками данных в шейпе, и попытка сделать это более одного раза переопределит предыдущее сопоставление.

Визуализация данных

Теперь кратко рассмотрим Data Graphics, очень тесно связанную с Link data to Shapes. Data Graphics - это еще одна функция, которая была представлена в 2007 году и также недоступна в стандартной версии Visio.

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

dg_1

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

excel

Рассмотрим конкретный пример связывания данных с шейпами. Пусть в той же кофейне, к которой мы уже обращались имеются данные для планирования меню. Их ведут в Excel.

Итак, я начну с визарда. Выберем книгу и именованный диапазон в ней.

excel

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

DS_forms

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

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

img_13

Мы добавили шейпы и связали каждый из них с соответствующей строкой в Datarecordset. Теперь откроем шейп-лист одного из шейпов и посмотрим, что произошло в разделе данных.

img_14

Я изменил исходный мастер, включив в него три новых строки. В дополнение к Prop.Type добавлены Prop.CupSize, PropDescription и Prop.Price. Я специально не добавлял строку с кодом продукта, так как хотел показать, что Visio добавит в шейп строки данных, если они еще не существуют. Любые строки, добавленные таким образом, можно идентифицировать по префиксу visDM, за которым следует имя столбца из Datarecordset.

Еще один момент, на который следует обратить внимание, - это то, как Visio сопоставляет столбцы со строками данных шейпа через ячейку данных Label.

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

Итак, шейпы находятся на странице, а данные связаны. Теперь добавим Data Graphics для визуального отображения данных шейпа.

img_15

Видно, что этот Data Graphics состоят из трех элементов. Первые два относятся к текстовому типу, а третий - к гистограмме. Вы можете видеть строки данных шейпа, с которыми сопоставлены элементы, и, конечно же, при желании можете их изменить.

img_16

Если открыть один из элементов, то можно увидеть ряд свойств, влияющих на его внешний вид.

img_17

Если создать новый элемент, то видно, что существует четыре основных типа графических элементов данных. Text и Data Bar, которую вы видели, Icon Set и Color by Value.

img_18

Тип Color by Value отличается от других тем, что Text и Data Bar и Icon Set добавляют дополнительные шейпы рядом с основным, тогда как Color by Value фактически меняет цвет заливки.

img_19

Итак, это было очень краткое введение в связывание данных с фигурами и Data Graphics. Это завершает раздел Данные Visio, в котором было показано, где могут храниться данные в шейпах, как данные могут быть прочитаны и сопоставлены с шейпами, а также как можно использовать дополнительную графику на основе этих данных.

Перечень литературы

12.04.2019  Data Tools Use to Developed Intricate Drawings in Microsoft Visio 2016   Universal Class    

15.09.2014  Связь с данными для профессиональных версий Visio   Геннадий Туманов    

04.08.2014  Связь рисунков Visio с данными   Геннадий Туманов    

17.11.2011  Shapes with global values   John Goldsmith    

Ответы на вопросы