В настоящий момент существует широкий ряд программных продуктов, позволяющих, в дополнение к табличным отчетам, получать графические отчеты (диаграммы). Одними из наиболее известных продуктов, выполняющих эти функции, являются MS Graph97 и MS Excel chart, система деловой графики, входящая в комплект Lotus 1-2-3 фирмы «Lotus», VCI First impression chart от Visual Components и многие другие.
Все перечисленные продукты могут использоваться (через механизм OLE Automation) для построения диаграмм в системе 1С:Предприятие. Однако 1С:Предприятие имеет собственный встроенный объект, который, из всего многообразия возможностей продуктов данного класса, выполняет наиболее актуальные функции, необходимые для задач, решаемых системой программ 1С:Предприятие.
Настоящая глава является руководством по использованию объекта «Диаграмма» системы 1С:Предприятия.
Использование данной возможности имеет следующие преимущества:
· не требуется наличия на компьютере программных продуктов других производителей;
· за счет более тесного взаимодействия с системой 1С:Предприятие, объект «Диаграмма» обеспечивает большую скорость построения диаграмм;
· интеграция с 1С:Предприятием предоставляет дополнительные возможности (расшифровка диаграммы);
· простота использования — система атрибутов и методов достаточно проста, и ее освоение не потребует больших усилий.
Объект «Диаграмма» предназначен для применения только в табличных документах системы 1С:Предприятие и не может использоваться самостоятельно.
Для использования диаграмм нужно в табличный документ 1С:Предприятия внедрить объект «Диаграмма», используя специальную кнопку инструментальной панели или через главное меню <Таблица>-<Вставить рисунок>-<Диаграмма>.
Процесс внедрения объекта «Диаграмма» в табличный документ подробно описан в документации к 1С:Предприятию (см. книгу «Руководство по конфигурированию и администрированию»). После внедрения объект нужно активизировать, например, двойным щелчком указателя мыши, и настроить его внешний вид.
Настройка диаграммы обычно проводится на этапе конфигурирования. Задача настройки состоит в определении формата, специфического для каждой из областей диаграммы, их размера и расположения.
В свойствах объекта есть закладка «Текст». В поле «Текст» этой закладки нужно внести вызов процедуры, управляющей объектом диаграммы. Сам объект «Диаграмма», в момент вызова этой процедуры, является текущим объектом таблицы (см. атрибут объекта «Таблицы» ТекущийОбъект) и передается в процедуру как параметр. Например, этот вызов будет выглядеть так:
ПостроитьДиаграмму(Таб.ТекущийОбъект);
Наполнение диаграммы данными осуществляется в теле вызываемой процедуры с помощью атрибутов и методов данного объекта.
Таким образом, во всех программных модулях доступ к атрибутам и вызов методов деловой графики может выполняться только при помощи переменной со ссылкой на объект типа «Диаграмма». Данный объект внедряется в таблицу 1С:Предприятие при конфигурировании. При инициировании построения диаграммы, значение этого объекта в качестве фактического параметра передается в обрабатывающую процедуру, где ссылка на объект становится доступна через идентификатор фиктивного параметра. Чтобы вызвать метод деловой графики, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.
См. также: ТекущийОбъект
Диаграмма представляет собой определенную фигуру, которая строится на основе матрицы данных размером [M, N], где N — количество серий значений (далее серий), М — количество точек, замерами в которых получены значения серий.
Для количественной ориентации в диаграмме используются координатные оси. Каждому значению, отмеченному на оси, соответствует поясняющее имя (метка). В зависимости от типа координатной оси, метка может быть рассчитанной, или определяться при заполнении данными.
С точки зрения настройки, диаграмма состоит из четырех областей:
· область диаграммы — совокупность всех областей образующих диаграмму;
· область построения диаграммы — содержит координатное пространство и изображенную на нем фигуру;
· заголовок диаграммы;
· легенда — вспомогательная область, содержащая список меток, соответствующих сериям.
Настройка размеров и положения областей диаграммы производится визуально. Подробнее о порядке визуальной настройки формата диаграммы следует читать в книге «Руководство по конфигурированию и администрированию».
Заголовок диаграммы.
Синтаксис:
Заголовок
Англоязычный синоним:
TitleText
Описание:
Атрибут Заголовок содержит текст заголовка диаграммы. По умолчанию имеет значение «Диаграмма».
Пример:
Диаграмма.Заголовок = "Пример использования диаграммы";
Явно устанавливает количество серий диаграммы.
Синтаксис:
КоличествоСерий(<Количество>)
Англоязычный синоним:
SeriesCount
Параметры:
<Количество> |
Числовое выражение, которое задает количество серий диаграммы. |
Возвращаемое значение:
Текущее значение количества серий (до исполнения метода).
Описание:
Метод КоличествоСерий явно устанавливает количество серий диаграммы. Количество серий может быть изменено и в режиме визуальной настройки. Альтернативой использования этого метода является неявное изменение количества серий: в случае если в метод, одним из параметров, использующий номер серии, передается значение превышающее количество серий, количество серий будет неявно увеличено.
Пример:
Диагр.КоличествоСерий(3); // установим количество серий 3
Явно устанавливает количество точек диаграммы.
Синтаксис:
КоличествоТочек(<Количество>)
Англоязычный синоним:
PointsCount
Параметры:
<Количество> |
Числовое выражение, которое задает количество точек диаграммы. |
Возвращаемое значение:
Текущее значение количества точек (до исполнения метода).
Описание:
Метод КоличествоТочек явно устанавливает количество точек диаграммы. Количество точек может быть изменено и в режиме визуальной настройки. Альтернативой использования этого метода является неявное изменение количества точек: в случае если в метод, одним из параметров, использующий номер точек, передается значение превышающее количество точек, количество точек будет неявно увеличено.
Пример:
Диагр.КоличествоТочек(4); // установим количество точек 4
Устанавливает имя серии.
Синтаксис:
УстановитьИмяСерии(<НомерСерии>, <Имя>)
Англоязычный синоним:
SetSeriesLabel
Параметры:
<НомерСерии> |
Числовое выражение, которое задает номер серии, для которой устанавливается имя. |
<Имя> |
Строка, используемая для обозначения серии в легенде и подписях к координатным осям. |
Описание:
Метод УстановитьИмяСерии явно устанавливает имя для заданного номера серии.
Пример:
Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.Товар.Наименование);
Устанавливает имя точки.
Синтаксис:
УстановитьИмяТочки(<НомерТочки>, <Имя>)
Англоязычный синоним:
SetPointLabel
Параметры:
<НомерТочки> |
Числовое выражение, которое задает номер точки, для которой устанавливается имя. |
<Имя> |
Строка, используемая для обозначения точки в подписях к координатным осям. |
Описание:
Метод УстановитьИмяТочки явно устанавливает имя для заданного номера точки.
Пример:
Диаграмма.УстановитьИмяТочки(1, "Продано на сумму");
Устанавливает цвет серии.
Синтаксис:
ЦветСерии(<НомерСерии>, <Красный>, <3еленый>, <Синий>)
Англоязычный синоним:
SetSeriesColor
Параметры:
<НомерСерии> |
Числовое выражение, которое задает номер серии, для которой устанавливается цвет. |
<Красный> |
Число, задающее красную компоненту цвета. |
<3еленый> |
Число, задающее зеленую компоненту цвета. |
<Синий> |
Число, задающее синюю компоненту цвета. |
Описание:
Метод ЦветСерии устанавливает RGB цвет для серии <НомерСерии>. По умолчанию первые 54 серии имеют уникальный цвет. Серии с большими номерами изображаются в диаграмме повторяя уже использованный цвет, но перестают окрашиваться сплошным цветом, используя более сложный способ заливки.
Пример:
Диаграмма.ЦветСерии(1, 35, 67, 89);
Автоматическая установка имен серий.
Синтаксис:
АвтоУстановкаИменСерий(<флаг>)
Англоязычный синоним:
AutoSeriesLabels
Параметры:
<Флаг> |
Числовое значение: 1 — разрешающий. 0 — запрещающий автогенерацию имен серий. |
Описание:
Метод АвтоУстановкаИменСерий устанавливает режим автогенерации имен серий диаграммы. В случае, если автогенерация имен разрешена, сериям диаграммы будут автоматически присваиваться имена Серия1, Серия2, ..., Се-рияN. По умолчанию автогенерация запрещена.
Пример:
Диаграмма.АвтоУстановкаИменСерий(1);
Автоматическая установка имен точек.
Синтаксис:
АвтоУстановкаИменТочек(<флаг>)
Англоязычный синоним:
AutoPointLabels
Параметры:
<Флаг> |
Числовое значение: 1 — разрешить автогенерацию имен точек. 0 — запретить автогенерацию имен точек. |
Описание:
Метод АвтоУстановкаМменТочек устанавливает режим автогенерации имен точек диаграммы. В случае, если автогенерация имен разрешена, точкам диаграммы будут автоматически присваиваться имена 1, 2, ..., N. По умолчанию автогенерация запрещена.
Пример:
Диаграмма.АвтоУстановкаИменТочек(1);
Установка значения в заданной точке и серии.
Синтаксис:
УстановитьЗначение(<НомерТочки>, <НомерСерии>, <Значен>, <Расшифровка>)
Англоязычный синоним:
SetValue
Параметры:
<НомерТочки> |
Числовое выражение, которое задает номер точки, для которой устанавливается значение. |
<НомерСерии> |
Числовое выражение, которое задает номер серии, для которой устанавливается значение. |
<3начен> |
Числовое значение — задаваемое значение диаграммы. |
<Расшифровка> |
Необязательный параметр. Значение любого типа, используемое для расшифровки диаграммы при помощи предопределенной процедуры ОбработкаЯчейкиТаблицы. |
Описание:
Метод УстановитьЗначение устанавливает значение серии <НомерСерии> в точке <НомерТочки> равным <Значен> с возможностью его последующей расшифровки.
Расшифровка может быть реализована при помощи предопределенной процедуры ОбработкаЯчейкиТаблицы. Вызов предопределенной процедуры ОбработкаЯчейкиТаблицы на исполнение производится в системе 1С:Предприятие по двойному щелчку мыши в табличном документе на выбранной точке диаграммы. При этом значение расшифровки <Расшифровка> этой точки диаграммы автоматически передается в качестве первого параметра в вызове предопределенной процедуры.
Пример:
Диаграмма.УстановитьЗначение(1, 5, 14);
См. также: ОбработкаЯчейкиТаблицы
Установка режима обновления диаграммы.
Синтаксис:
Обновление(<флаг>)
Англоязычный синоним:
RedrawFlag
Параметры:
<Флаг> |
Числовое значение: 1 — разрешить перерисовку диаграммы. 0 — запретить перерисовку диаграммы. |
Описание:
Метод Обновление устанавливает режим обновления диаграммы. Запрет перерисовки диаграммы рекомендуется в целях ускорения работы системы на ьремя наполнения данными. По умолчанию перерисовка разрешена.
Пример:
Диаграмма.Обновление(1); // включим перерисовку
Очищает диаграмму.
Синтаксис:
Очистить()
Англоязычный синоним:
Clear
Описание:
Метод Очистить очищает диаграмму, т. е. удаляет все ранее установленные значения; количество серий и точек устанавливает нулевым; стирает все ранее установленные имена.
Пример:
Диагр.Очистить(); // очистить диаграмму
Предположим, что проектируется отчет о продаже товара. Внешний вид отчета визуально настроен. Мы предполагаем, что будет построена объемная гистограмма с одной точкой («Продано на сумму») и количеством серий равным количеству товаров.
Фрагментом модуля отчета, является процедура ПостроитьДиаграмму. Вызов этой процедуры находится в закладке «Текст» свойств внедренного в табличный документ, объекта «Диаграмма», он выглядит так:
ПостроитьДиаграмму(Таб.ТекущийОбъект, Запрос)
Параметрами процедуры являются:
· Объект «Диаграмма», переданный как текущий объект табличного документа (подробнее см. в главе Работа с таблицами);
· запрос к базе данных, сформированный и выполненный ранее.
Пример:
Процедура ПостроитьДиаграмму(Диаграмма, Запрос)
//На время наполнения данными, запретим перерисовку
Диаграмма.Обновление(0);
// задаем текст заголовка
Диаграмма.Заголовок = "Пример использования диаграммы";
// задаем текст метки точки
Диаграмма.УстановитьИмяТочки(1, "Продано на сумму");
СчетчикСерий = 1;
Пока Запрос.Группировка("Товар") = 1 Цикл
ПродСумма = Запрос.СуммаПродано;
// задаем очередное значение
Диаграмма.Значение(1, СчетчикСерий, ПродСумма);
// задаем метку очередной серии
Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.Товар.Наименование)
СчетчикСерий = СчетчикСерий + 1;
КонецЦикла;
// После заполнения данных, включим перерисовку
Диаграмма.Обновление(1);
КонецПроцедуры