Тема 14 Диаграммы
Цель:
- познакомится с понятием и областью применения объекта Диаграмма; 
- приобрести и закрепить навыки наполнения диаграммы данными с помощью стандартных методов для работы с диаграммами; 
- приобрести и закрепить навыки настройки внешнего вида диаграмм. 
Пояснения к работе
1С:Предприятие имеет специальный встроенный объект для построения диаграмм. Кроме того, MS Graph97 и MS Excel Chart, система деловой графики, входящая в комплект Lotus 1–2–3 фирмы «Lotus», VCI First impression chart от Visual Components могут использоваться (через механизм OLE Automation) для построения диаграмм в системе 1С:Предприятие.
Использование встроенного объекта для построения диаграмм имеет следующие преимущества:
- не требуется наличия на компьютере программных продуктов других производителей; 
- за счет более тесного взаимодействия с системой 1С:Предприятие, объект Диаграмма обеспечивает большую скорость построения диаграмм; 
- интеграция с 1С:Предприятием предоставляет дополнительные возможности (расшифровка диаграммы); 
- простота использования – система атрибутов и методов достаточно проста, и ее освоение не потребует больших усилий. 
Объект Диаграмма предназначен для применения только в табличных документах системы 1С:Предприятие и не может использоваться самостоятельно.
14.1 Методы для работы с диаграммами
Объект Диаграмма имеет единственный атрибут Заголовок, который содержит текст заголовка диаграммы. По умолчанию он имеет значение Диаграмма.
Пример:
Диаграмма.Заголовок = "Пример использования диаграммы";
КоличествоСерий(<Количество>) – явно устанавливает количество серий диаграммы. Количество серий может быть изменено и в режиме визуальной настройки. Альтернативой использования этого метода является неявное изменение количества серий: в случае если в метод, одним из параметров, использующий номер серии, передается значение, превышающее количество серий, количество серий будет неявно увеличено.
Параметры:
<Количество> – количество серий диаграммы.
Возвращаемое значение: текущее значение количества серий (до исполнения метода).
Пример:
Диаграмма.КоличествоСерий(3); // установим количество серий 3
КоличествоТочек(<Количество>) – явно устанавливает количество точек диаграммы. Количество точек может быть изменено и в режиме визуальной настройки. Альтернативой использования этого метода является неявное изменение количества точек: в случае если в метод, одним из параметров, использующий номер точек, передается значение превышающее количество точек, количество точек будет неявно увеличено.
Параметры:
<Количество> – количество точек диаграммы.
Возвращаемое значение: текущее значение количества точек (до исполнения метода).
Пример:
Диаграмма.КоличествоТочек(4); // установим количество точек 4
УстановитьИмяСерии(<НомерСерии>, <Имя>) – явно устанавливает имя для заданного номера серии.
Параметры:
<НомерСерии> – номер серии, для которой устанавливается имя.
<Имя> – строка, используемая для обозначения серии в легенде и подписях к координатным осям.
Пример:
Диаграмма.УстановитьИмяСерии(1, Запрос.Товар.Наименование);
УстановитьИмяТочки(<НомерТочки>, <Имя>) – явно устанавливает имя для заданного номера точки.
Параметры:
<НомерТочки> – задает номер точки, для которой устанавливается имя.
<Имя> – строка, используемая для обозначения точки в подписях к координатным осям.
Пример:
Диаграмма.УстановитьИмяТочки(1, "Продано на сумму");
ЦветСерии(<НомерСерии>, <Красный>, <3еленый>, <Синий>) – устанавливает RGB цвет для серии <НомерСерии>. По умолчанию первые 54 серии имеют уникальный цвет. Серии с большими номерами изображаются в диаграмме, повторяя уже использованный цвет, но перестают окрашиваться сплошным цветом, используя более сложный способ заливки.
Параметры:
<НомерСерии> – номер серии, для которой устанавливается цвет.
<Красный> – число, задающее красную компоненту цвета.
<3еленый> – число, задающее зеленую компоненту цвета.
<Синий> – число, задающее синюю компоненту цвета.
Пример:
Диаграмма.ЦветСерии(1, 35, 67, 89);
АвтоУстановкаИменСерий(<Флаг>) устанавливает режим автогенерации имен серий диаграммы. В случае, если автогенерация имен разрешена, сериям диаграммы будут автоматически присваиваться имена Серия1, Серия2, ..., СерияN. По умолчанию автогенерация запрещена.
Параметры:
<Флаг> – 1 – разрешающий. 0 – запрещающий автогенерацию имен серий.
Пример:
Диаграмма.АвтоУстановкаИменСерий(1);
АвтоУстановкаИменТочек(<Флаг>) – устанавливает режим автогенерации имен точек диаграммы. В случае, если автогенерация имен разрешена, точкам диаграммы будут автоматически присваиваться имена 1, 2, ..., N. По умолчанию автогенерация запрещена.
Параметры:
<Флаг> – 1 – разрешить, 0 – запретить автогенерацию имен точек.
Пример:
Диаграмма.АвтоУстановкаИменТочек(1);
УстановитьЗначение(<НомерТочки>, <НомерСерии>, <Значен>, <Расшифровка>) – устанавливает значение серии <НомерСерии> в точке <НомерТочки> равным <Значен> с возможностью его последующей расшифровки.
Расшифровка может быть реализована при помощи предопределенной процедуры ОбработкаЯчейкиТаблицы(). Вызов предопределенной процедуры ОбработкаЯчейкиТаблицы() на исполнение производится в системе 1С:Предприятие по двойному щелчку мыши в табличном документе на выбранной точке диаграммы. При этом значение расшифровки <Расшифровка> этой точки диаграммы автоматически передается в качестве первого параметра в вызове предопределенной процедуры.
Параметры:
<НомерТочки> – номер точки, для которой устанавливается значение.
<НомерСерии> – номер серии, для которой устанавливается значение.
<3начен> – задаваемое значение диаграммы.
<Расшифровка> – необязательный параметр. Значение любого типа, используемое для расшифровки диаграммы при помощи предопределенной процедуры ОбработкаЯчейкиТаблицы().
Пример:
Диаграмма.УстановитьЗначение(1, 5, 14);
Обновление(<Флаг>) – устанавливает режим обновления диаграммы. Запрет перерисовки диаграммы рекомендуется в целях ускорения работы системы на время наполнения данными. По умолчанию перерисовка разрешена.
Параметры:
<Флаг> – 1 – разрешить перерисовку диаграммы. 0 – запретить перерисовку диаграммы.
Пример:
Диаграмма.Обновление(1); // включим перерисовку
Очистить() – очищает диаграмму, т. е. удаляет все ранее установленные значения; количество серий и точек устанавливает нулевым; стирает все ранее установленные имена.
Пример:
Диаграмма.Очистить(); // очистить диаграмму
14.2 Наполнение данными диаграммы
Для использования диаграмм нужно в табличный документ 1С:Предприятия внедрить объект Диаграмма, используя специальную кнопку инструментальной панели или через главное меню Таблица\Вставить рисунок\Диаграмма. В режиме Конфигуратор откройте отчет ОСотрудниках, в таблицу Сформировать поместите объект Диаграмма и включите ее полностью в секцию Подвал (рисунок 14.2.1).
Рисунок 14.2.1
Диаграмма представляет собой определенную фигуру, которая строится на основе матрицы данных размером [M, N], где N – количество серий значений (далее серий), М – количество точек, замерами в которых получены значения серий.
Для количественной ориентации в диаграмме используются координатные оси. Каждому значению, отмеченному на оси, соответствует поясняющее имя (метка). В зависимости от типа координатной оси, метка может быть рассчитанной, или определяться при заполнении данными.
Настройка диаграммы обычно проводится на этапе конфигурирования. Задача настройки состоит в определении формата, специфического для каждой из областей диаграммы, их размера и расположения.
В свойствах объекта есть закладка Текст. В поле Текст этой закладки нужно внести вызов процедуры, управляющей объектом диаграммы. Сам объект Диаграмма, в момент вызова этой процедуры, является текущим объектом таблицы и передается в процедуру как параметр. Например, этот вызов будет выглядеть так:
ПостроитьДиаграмму(Таб.ТекущийОбъект);
Заполните поле Текст и сделайте переменную Таб – переменной модуля..
Наполнение диаграммы данными осуществляется в теле вызываемой процедуры с помощью атрибутов и методов данного объекта.
Процедура ПостроитьДиаграмму(Диаграмма)
- //На время наполнения данными, запретим перерисовку 
- Диаграмма.Обновление(0); 
- Диаграмма.Очистить(); 
- // задаем текст заголовка 
- Если Признак=0 Тогда - Диаграмма.Заголовок = "В разрезе должностей"; 
 
- Иначе - Диаграмма.Заголовок = "В разрезе подразделений"; 
 
- КонецЕсли; 
- // по умолчанию 1 серия 
- СчетчикСерий = 1; 
- Пока Запрос.Группировка(1) = 1 Цикл 
- // если выбрана группировка по должностям - Если Признак=0 Тогда - // увеличиваем количество серий диаграммы 
- Диаграмма.КоличествоСерий(СчетчикСерий); 
- // в качестве имени серии указываем должность 
- Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.Долж); 
- // задаем очередное значение 
- Диаграмма.УстановитьЗначение(1, СчетчикСерий, Запрос.Кол_во); 
- // увеличиваем счетчик серий 
- СчетчикСерий = СчетчикСерий + 1; 
 
- Иначе 
- // если выбрана группировка по подразделениям - Если Запрос.ФИО.ЭтоГруппа()=1 Тогда - // увеличиваем количество серий диаграммы 
- Диаграмма.КоличествоСерий(СчетчикСерий); 
 
- // в качестве имени серии указываем подразделение - Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.ФИО); 
- // задаем очередное значение 
- Диаграмма.УстановитьЗначение(1, СчетчикСерий, Запрос.Кол_во); 
- // увеличиваем счетчик серий 
- СчетчикСерий = СчетчикСерий + 1; 
 
- КонецЕсли; 
 
- КонецЕсли; 
 
- КонецЦикла; 
- // После заполнения данных, включим перерисовку 
- Диаграмма.Обновление(1); 
КонецПроцедуры
Сохраните конфигурацию. Запустите 1С в режиме Предприятие. Вызовите отчет О Сотрудниках и выберите группировку по должностям. Примерный результат показан на рисунке 14.2.2.
Рисунок 14.2.2
Таким образом, во всех программных модулях доступ к атрибутам и вызов методов деловой графики может выполняться только при помощи переменной со ссылкой на объект типа Диаграмма. Данный объект внедряется в таблицу 1С:Предприятие при конфигурировании. При инициировании построения диаграммы, значение этого объекта в качестве фактического параметра передается в обрабатывающую процедуру, где ссылка на объект становится доступна через идентификатор фиктивного параметра. Чтобы вызвать метод деловой графики, имя метода пишется через точку после идентификатора переменной.
14.3 Настройка внешнего вида диаграммы
С точки зрения настройки, диаграмма состоит из четырех областей:
- область диаграммы – совокупность всех областей образующих диаграмму; 
- область построения диаграммы – содержит координатное пространство и изображенную на нем фигуру; 
- заголовок диаграммы; 
- легенда – вспомогательная область, содержащая список меток, соответствующих сериям. 
Настройка размеров и положения областей диаграммы производится визуально.
Если посмотреть на диаграмму на рисунке 14.2.2, то можно заметить, что на диаграмме отсутствует заголовок, несмотря на то, что мы его указывали, и сама диаграмма представляет данные не в очень удобном виде. Следовательно, необходимо настроить внешний вид диаграммы.
В режиме Конфигуратор выделите на диаграмме область построения и правой кнопкой мыши вызовите Формат области построения (рисунок 14.2.3).
Рисунок 14.2.3
В появившемся окне можно выбрать тип диаграммы, параметры шрифта и сетки, вид рамки, заливки и тени. Для представления наших данных удобно использовать круговую диаграмму, так как численность работников по должностям или подразделениям в сумму дает 100% численности работников. Выберите тип диаграммы Круговая Объемная, Тип подписей – Имена серий+Значение+Процент, Рамка – Тонкая 2D. Поскольку имена серий будут указаны на самой диаграмме, то легенда нам не нужна. Для того, чтобы ее убрать щелкните правой кнопкой мыши на области диаграммы (незанятом месте) и выбрать Формат области диаграммы (рисунок 14.2.4).
Рисунок 14.2.4
В появившемся окне укажите, что легенда не нужна, а заголовок нужен. Сохраните конфигурацию. Запустите 1С в режиме Предприятие. Вызовите отчет О Сотрудниках и выберите группировку по должностям. Примерный результат показан на рисунках 14.2.5, 14.2.6.
Рисунок 14.2.5
Рисунок 14.2.6
Задания:
В конфигурациях, созданных на прошлых занятиях, создайте диаграммы в отчетах по состоянию основного справочника, по приходу и уходу объектов вашего варианта (картин, товаров, квартир и т.д.) в разрезах созданных ранее группировок.
Контрольные вопросы:
- Для чего используется объект Диаграмма? 
- Каковы преимущества использования встроенного объекта для построения диаграмм? 
- Где может располагаться диаграмма? 
- Как разместить диаграмму? 
- Из каких областей состоит диаграмма? 
- Как задать параметры области диаграммы? 
- Как задать параметры области построения диаграммы? 
- Как задать параметры заголовка диаграммы? 
- Как задать параметры легенды? 
