1С диаграмма серии и точки

1С диаграмма серии и точки

В данном разделе рассматриваются особенности заполнения данными объектов Диаграмма и ДиаграммаГанта с использованием ключевых значений.

Диаграмма

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

Существуют три пути решения этой проблемы.

Первый вариант — мы должны свести обход источника данных к примерно такой конструкции:

Цикл обхода по всем значениям серий
Цикл обхода по всем значениям точек
КонецЦикла
КонецЦикла

Но это не всегда удобно. Например, если источником данных является результат запроса, то для достижения подобного порядка обхода нам может потребоваться сильно усложнить его текст и/или замедлить его выполнение.

Второй вариант — при обходе источника вести некоторый индекс, по которому определять, была ли для конкретного значения создана серия (точка), и если да, то как к ней обратиться. Это тоже не самый удобный вариант (хотя бы ввиду необходимости написания дополнительного кода).

Рассмотрим третий вариант — использование свойств Значение объектов ТочкаДиаграммы и СерияДиаграммы и методов объекта Диаграмма УстановитьСерию( ) и УстановитьТочку( ) , где в качестве параметра может выступать значение произвольного типа. Эти методы работают следующим образом. Среди существующих серий (точек) ищется серия со свойством Значение, равным значению параметра. Если такая серия находится, то она возвращается, иначе создается и возвращается новая. Для созданной серии свойство Значение устанавливается равным переданному параметру.

Таким образом, заполнение данными диаграммы сводится к тривиальному коду. Приведем простой пример. Есть справочники Товары и Склады и регистр накопления Товары. Построим диаграмму наличия товаров на складах.

Рассмотрим вопрос с уникальностью значений. При "стандартном" способе использования свойства Значение , подобном описанному выше, у каждой серии будет уникальное (в пределах всех серий) значение (оно может быть и пустым). Однако можно заполнять диаграмму, используя разные способы — метод УстановитьСерию() для одних серий и другие возможности (свойство КоличествоСерий у диаграммы, метод Добавить() у коллекции серий) для других. В этом случае возможна ситуация, когда у нескольких серий будет одинаковое значение. Как в этом случае будет работать метод УстановитьСерию() ? Он вернет первую (с наименьшим индексом) из подходящих. Но хотя подобное поведение документировано, рекомендуется заполнять диаграмму, используя какой-то один способ.

Свойство Значение у серий и точек диаграммы может использоваться не только для получения по некоторому ключу. Если у соответствующей серии не установлено свойство Текст, то для вывода подписи будет использоваться строковое представление значения. Стоит обратить внимание на одну тонкость. У диаграммы есть свойство АвтоУстановкаТекстаСерий , причем по умолчанию это свойство включено. В этом случае для каждой вновь созданной серии будет генерироваться текст вида "Серия1". Но если серия добавляется через метод УстановитьСерию() , то независимо от значения свойства АвтоУстановкаТекстаСерий текст генерироваться не будет.

Читайте также:  Что такое резервный пин код

Диаграмма Ганта

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

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

Иерархическая структура серий и точек ведет к еще одной особенности диаграммы Ганта по сравнению с обычной диаграммой. Выше было описано поведение метода УстановитьСерию() в случае наличия серий с одинаковыми значениями. У диаграммы он возвращает подходящую серию с наименьшим индексом. У диаграммы Ганта также возвращается подходящая серия, но какая именно — не определено, что является еще одним аргументом в пользу одновременного использования только одного способа заполнения диаграммы.

Программирование системы 21.04.2017 12:59 10130

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

При работе с диаграммами в 1С существуют специальные понятия: "Серия", "Точка", "Значение". Если провести аналогию с математическими понятиями, то Серия это график функции, Точка это координата X, Значение это координата Y.

Типы диаграмм

График
График по шагам
График с накоплением
График с областями
График с областями и накоплением
График с областями нормированный
Гистограмма
Гистограмма с накоплением
Гистограмма нормированная
Гистограмма объемная
Гистограмма с накоплением объемная
Гистограмма нормированная объемная
Гистограмма горизонтальная
Гистограмма с накоплением горизонтальная
Гистограмма нормированная горизонтальная
Гистограмма горизонтальная объемная
Гистограмма с накоплением горизонтальная объемная
Гистограмма нормированная горизонтальная объемная
Круговая
Круговая объемная
Биржевая
Биржевая "свеча"
Изометрическая обычная
Изометрическая непрерывная
Изометрическая лента
Изометрическая пирамида
Водопад
Каркасная поверхность
Поверхность
Выпуклая поверхность
Вогнутая поверхность
Затененная поверхность
Сотовая
Радарный график
Радарный график с областями
Радарный график с накоплением
Радарный график с областями и накоплением
Радарный график с областями нормированный
Измерительная
Воронка
Воронка объемная
Воронка нормированная
Воронка нормированная объемная

Читайте также:  Sata кабель для блока питания

Пример программного построения графика

В данном примере функция заполняет диаграмму с типом "График".

Результат построения функции

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Рассылка
Курс лекций
Статьи
Программы
Ссылки

Форум

mista.ru / 1С:Предприятие / Учебник / Диаграммы

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

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

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

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

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

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

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

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

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

Читайте также:  Lenovo b590 не включается

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

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

Процедура СформироватьДиаграмму(Диаграмма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.Обновление(0);
Диаграмма1.Заголовок = "Поступления от покупателей";
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
Диаграмма1.АвтоУстановкаИменТочек(1);

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

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

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

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

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

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

Ссылка на основную публикацию
Adblock
detector