Объект "Диаграмма"
Автор главы
Вадим Русаков

Диаграммы в 1С

Диаграмма предоставляет удобное графическое представление некоторого набора данных, чаще всего результатов каких-либо изменений. 1С предоставляет собственный (надо сказать, приятный) инструмент такого графического представления - объект "Диаграмма". Область диаграммы состоит из нескольких частей: область построения (там создается рисунок), заголовка (надписи над рисунком), легенды (расшифровки меток серий). В диаграмме имеются серии (т.е. наборы значений) и точки, из которых состоят серии (см. рис.1).

Создание диаграммы

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

Задание типа диаграммы

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

Настройка внешнего вида диаграммы

Для того чтобы включить режим форматирования областей диаграммы, необходимо выбрать пункт Изменить подменю Объект: 1С. V7. Диаграмма меню Действия (тое же пункт есть в контекстном меню диаграммы). Каждая из составных частей диаграммы в режиме редактирования имеет пункт контекстного меню Формат области … Настройка внешнего вида состоит из выбора заливки, рамки, цвета и шрифта текста и т.п. Там же можно определить, например, сетку для области построения. После завершения форматирования достаточно щелкнуть по любой ячейке таблицы, чтобы выключить режим форматирования.


Наполнение данными диаграммы

Диаграмма как объект системы 1С принадлежит таблице, в которую она вставлена. Обращение к объекту происходит в момент вывода на печать таблицы (метод Вывести()) или секции таблицы (метод ВывестиСекцию()), в которую вставлена диаграмма. Для того, чтобы при обращении были выполнены некоторые действия по подготовке данных для диаграммы, в свойствах объекта на закладке "Текст" необходимо указать строку вызова соответствующей процедуры, передав ей в качестве параметра контекст диаграммы как текущего объекта таблицы. Строка может выглядеть, например, так:

ОбработкаДиаграммы(Таб.ТекущийОбъект)
где: ОбработкаДиаграммы - имя процедуры, Таб - имя выходной таблицы (должна быть предварительно создана методом СоздатьОбъект()).

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

Процедура СформироватьДиаграмму(Диаграмма1)
где Диаграмма1 - идентификатор, в который передается контекст объекта Диаграмма. Все методы объекта записываются через точку после идентификатора.


Основы программирования

Изменение заголовка таблицы

Диаграмма1.Заголовок = "Поступления от покупателей";

Работа с сериями диаграммы

//установим количество серий. Каждая при этом получит свой номер.
Диаграмма1.КоличествоСерий(3); // так у нас будет три серии
//однако если в другом методе будет передана серия с большим номером,
//количество серий будет автоматически увеличено.

КолСерий = Диаграмма1.КоличествоСерий();
// а так переменной КолСерий будет передано текущее количество серий

// так мы зададим имя "Рубли" серии № 1
Диаграмма1.УстановитьИмяСерии(1, "Рубли");

// установим цвет серии № 2
// этот метод не обязательный, как впрочем и некоторые другие
Диаграмма1.ЦветСерии(2, 35, 67, 90);
// установили: 35 единиц красной компоненты, 67 - зеленой, 90 - синей

//можно установить имена серий автоматически: Серия1, Серия2, и т.д.
Диаграмма1.АвтоУстановкаИменСерий(1);
//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.

Работа с точками диаграммы

//установим количество точек, скажем, 8 штук
Диаграмма1.КоличествоТочек(8);
//однако если в другом методе будет передана тока с большим номером,
//количество точек будет автоматически увеличено.

// метод может возвратить текущее количество точек
КолТочек = Диаграмма1.КоличествоТочек();

// можно установить имя любой точки
Диаграмма1.УстановитьИмяТочки(7, "7 точка");

//можно установить имена точек автоматически: 1, 2, 3, и т.д.
Диаграмма1. АвтоУстановкаИменТочек(1);
//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.

Передача значений точкам серий

Это самый важный метод диаграммы. Он устанавливает значение серии <НомерСерии> в точке <НомерТочки> равным <Значение> с возможностью последующей расшифровки. Все параметры, кроме параметра <Расшифровка> должны быть числовыми выражениями.
Синтаксис:

УстановитьЗначение(<НомерТочки>,<НомерСерии>,<Значение>,<Расшифровка>)

<Расшифровка> - параметр не обязательный, может иметь любой тип. Это значение, которое будет передано предопределенной процедуре ОбработкаЯчейкиТаблицы при двойном щелчке мышью на точке диаграммы. Так можно получать расшифровки точек диаграммы. Удобная штука!

Два вспомогательных метода диаграммы

Запрет перерисовки может ускорить работу системы во время наполнения таблицы данными.

Диаграмма1.Обновление(0);
//то же выражение, но с флагом 1 разрешит перерисовку

Очистка всех установленных значений имен и количеств точек, серий, диаграммы делается так:

Диаграмма1.Очистить();


Пример использования диаграммы в 1С: Бухгалтерия

Процедура СформироватьДиаграмму(Диаграмма1)

// Блокируем обновление, пока обрабатываются данные
Диаграмма1.Обновление(0);
Диаграмма1.Заголовок = "Поступления от покупателей";
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
Диаграмма1.АвтоУстановкаИменТочек(1);

// Заполним диаграмму значениями
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");

Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()),
КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С");

БухИт.ВыбратьПериоды();
А = 1;
// дебетовые обороты по счету 60.1 покажут поступления
// денег от покупателей
Пока БухИт.ПолучитьПериод() = 1 Цикл

Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО());
А = А +1;

КонецЦикла;

// после наполнения данными перерисовываем
Диаграмма1.Обновление(1);

КонецПроцедуры

Результат работы процедуры на рис.2:

к оглавлению

Знаете ли Вы, что любой разумный человек скажет, что не может быть улыбки без кота и дыма без огня, что-то там, в космосе, должно быть, теплое, излучающее ЭМ-волны, соответствующее температуре 2.7ºК. Действительно, наблюдаемое космическое микроволновое излучение (CMB) есть тепловое излучение частиц эфира, имеющих температуру 2.7ºK. Еще в начале ХХ века великие химики и физики Д. И. Менделеев и Вальтер Нернст предсказали, что такое излучение (температура) должно обнаруживаться в космосе. В 1933 году проф. Эрих Регенер из Штуттгарта с помощью стратосферных зондов измерил эту температуру. Его измерения дали 2.8ºK - практически точное современное значение. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution