1С 8.3 Диаграмма - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Диаграмма

Данные > Примеры кода 1С > 1С 8.3 Диаграмма
Диаграмма в 1С 8.3 - это объект встроенного языка который служит для графического представления экономической и аналитической информации линейными отрезками или геометрическими фигурами, позволяющее быстро оценить соотношение нескольких величин. В свойстве диаграммы "ТипДиаграммы" определяется графический тип: график, гистограмма, круговая, изометрическая, воронка и т.п.. Для работы с диаграммами определены понятия: Серия (график функции), Точка (координата X), Значение (координата Y), Расшифровка (описание). Диаграммы в 1С 8.3 поддерживают механизм расшифровок и являются интерактивными. Кликая на нужном показателе, пользователь может получить детальную информацию или сформировать новый отчет. На платформе 1С 8.3 имеется демонстрационная конфигурация (онлайн) для визуального представления о диаграммах: https://platform.demo.1c.ru/ChartsDemo/.
Построение диаграммы (график) в 1С 8.3:
&НаСервере
Процедура ПостроениеДиаграммыГрафик()

   
Серия = Диаграмма.Серии.Добавить("ABC"); // На форме
   
КоличествоТочек = 25;

    Для
Значение_Y = 1 По КоличествоТочек Цикл

       
Точка_X = Диаграмма.УстановитьТочку(Значение_Y);
       
Диаграмма.УстановитьЗначение(Точка_X, Серия, Значение_Y);

    КонецЦикла;

КонецПроцедуры
Построение диаграммы на основании запроса в 1С 8.3:
&НаСервере
Процедура ПостроениеДиаграммыНаОснованииЗапроса()

   
Диагр = Элементы.Диаграмма;
   
// Очистка данных диаграммы, если она была заполнена
   
Диагр.КоличествоСерий = 0;
   
Диагр.КоличествоТочек = 0;
   
// Количество серий будет ограничиваться
   
Диагр.МаксимумСерий = МаксимумСерий.Ограничено;// м.б. НеЗадано, Процент
   
Диагр.МаксимумСерийКоличество = 25;
   
// ВидПодписей - может принимать значения: Значение, Нет, Серия, Точка и т.п.
   
Диагр.ВидПодписей = ВидПодписейКДиаграмме.Процент;
   
Диагр.ОбластьЗаголовка.Текст = "Товарооборот";

   
Запрос = Новый Запрос;
   
Запрос.Текст = "ВЫБРАТЬ
    |   РеализацияОбороты.Товар,
    |   СУММА(РеализацияОбороты.КоличествоОборот) КАК КоличествоОборот
    |   СУММА(РеализацияОбороты.СуммаОборот) КАК СуммаОборот
    |ИЗ
    |   РегистрНакопления.Реализация.Обороты(, , , ) КАК РеализацияОбороты
    |СГРУППИРОВАТЬ ПО
    |   РеализацияОбороты.Товар"
;

   
Результат = Запрос.Выполнить();
   
Диагр.Обновление = Ложь; // Только на время вывода диаграммы

    // Установка единственной точки
   
Диагр.КоличествоТочек = 1;
   
Диагр.Точки[0].Текст = "Количество";
   
Выборка = Результат.Выбрать();
    Пока
Выборка.Следующий() Цикл // Заполнение диаграммы данными

        // Количество серий (max=25), если без ограничений - то установился бы весь результат запроса
       
КоличествоСерий = Диагр.Серии.Количество();
       
Диагр.КоличествоСерий = КоличествоСерий + 1;
       
Диагр.Серии[КоличествоСерий].Текст = Выборка.Товар;
       
// Первый параметр=0, из-за того, что КоличествоТочек = 1
       
Диагр.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот);

    КонецЦикла;

   
Диагр.Обновление = Истина; // В конце необходимо обновить для результата

КонецПроцедуры
Построение диаграммы Ганта (иерархическая структура серий и точек) в 1С 8.3:
&НаСервере
Процедура ПостроениеДиаграммыГантаНаОснованииЗапроса()

   
Запрос = Новый Запрос;
   
Запрос.Текст = "ВЫБРАТЬ
    |   Реализац.ТипЦены КАК ТипЦены,
    |   Реализац.ВидПродажи КАК ВидПродажи,
    |   Реализац.Начало,
    |   Реализац.Окончание,
    |   Реализац.ТипЦены.Родитель КАК РодительТипаЦен,
    |   Реализац.ВидПродажи.Родитель КАК РодительВидаПродаж
    |ИЗ
    |   Справочник.ПланПоПродажам КАК Реализац
    |
    |УПОРЯДОЧИТЬ ПО
    |   Реализац.ВидПродажи.Код
    |
    |ИТОГИ ПО
    |   ВидПродажи ТОЛЬКО ИЕРАРХИЯ,
    |   ТипЦены ТОЛЬКО ИЕРАРХИЯ"
;

   
Результат = Запрос.Выполнить();
   
Выборка = Результат.Выбрать();

   
// Заполнение диаграммы
   
Диагр_Ганта = Элементы.ДиаграммаГанта1;
   
Диагр_Ганта.Обновление = Ложь; // Только на время вывода диаграммы
   
Диагр_Ганта.Очистить();

    Пока
Выборка.Следующий() = Истина Цикл

       
// Иерархическая структура серий и точек
       
Если (Выборка.ВидПродажи <> Null) И (Не Выборка.ВидПродажи.Пустая()) Тогда
           
Точка_X = Диагр_Ганта.УстановитьТочку(Выборка.ВидПродажи, ?(Выборка.ВидПродажи.Пустая()
            Или
Выборка.РодительВидаПродаж.Пустая(), Неопределено, Выборка.РодительВидаПродаж));
        КонецЕсли;

        Если (
Выборка.ТипЦены <> Null) И (Не Выборка.ТипЦены.Пустая()) Тогда
           
Серия = Диагр_Ганта.УстановитьСерию(Выборка.ТипЦены, ?(Выборка.ТипЦены.Пустая()
            Или
Выборка.РодительТипаЦен.Пустая(),   Неопределено, Выборка.РодительТипаЦен)); // Возвращается подходящая серия
       
КонецЕсли;

        Если
Выборка.Начало <> Null Тогда
           
Значение = Диагр_Ганта.ПолучитьЗначение(Точка_X, Серия);
           
Промежуток = Значение.Добавить();
           
Промежуток.Начало = Выборка.Начало;
           
Промежуток.Конец = Выборка.Окончание;
        КонецЕсли;

    КонецЦикла;

   
Диагр_Ганта.Обновление = Истина; // В конце необходимо обновить для результата

КонецПроцедуры
Построение диаграммы в табличном документе в 1С 8.3:
&НаСервере
Процедура ПостроениеДиаграммыВТаблДокументе() // с помощью построителя отчетов

    // Создание табличного документа (для вывода результата)
   
Таблица = Новый ТабличныйДокумент; // или область ячеек табличного документа или ТаблицаЗначений

    // Создание построителя отчета
   
ПО_Запрос = Новый ПостроительОтчета;
   
// Выполнение запроса
   
ПО_Запрос.Текст = "ВЫБРАТЬ
    |  СУММА(ЗадолженностьПокупателей.СуммаДолга) КАК СуммаДолга
    |ИЗ
    |  РегистрНакопления.Задолженность.Остатки КАК ЗадолженностьПокупателей
    |{ИТОГИ ПО
    |  ЗадолженностьПокупателей.Контрагент.*,
    |  ЗадолженностьПокупателей.ВидДолга.*}"
;

   
// Запонение настроек построителя на основании запроса
   
ПО_Запрос.ЗаполнитьНастройки();
   
// Создание группировки (строки: Контрагенты, колонки:Вид долга)
   
ПО_Запрос.ИзмеренияКолонки.Добавить("Контрагент");
   
ПО_Запрос.ИзмеренияСтроки.Добавить("ВидДолга");
   
ПО_Запрос.Выполнить(); // Старт построителя отчета
    // Вывод результата в табличный документ
   
ПО_Запрос.Вывести(Таблица);

   
// Добавление в табличный документ рисунка (тип:диаграмма)
   
РисунокД = Таблица.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Диаграмма);
   
ИндексД  = Таблица.Рисунки.Индекс(РисунокД);

   
// Определение ширины и высоты данных в табличном документе
   
ТабВысота = Таблица.ВысотаТаблицы;
   
ТабШирина = Таблица.ШиринаТаблицы;

   
// Расположение диаграммы в табличном документе (под данными)
   
Таблица.Рисунки[ИндексД].Расположить(Таблица.Область(ТабВысота, 2, ТабВысота + 10, 20));
   
// Источник данных для диаграммы - область в табличном документе
    // Построитель отчетов выводит данные с 3-й строки и со 2-колонки (по умолчанию)
   
Таблица.Рисунки[ИндексД].Объект.ИсточникДанных = Таблица.Область(3, 2, ТабВысота - 1 , ТабШирина);
   
// Установка параметров диаграммы
   
Таблица.Рисунки[ИндексД].Объект.ТипДиаграммы    = ТипДиаграммы.Гистограмма;
   
Таблица.Рисунки[ИндексД].Объект.СерииВСтроках      = Истина;
   
Таблица.Рисунки[ИндексД].Объект.ОтображатьЗаголовок  = Истина;
   
Таблица.Рисунки[ИндексД].Объект.ОтображатьЛегенду    = Истина;

   
// Вывод на экран
   
Таблица.Показать();

КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Диаграмма:
📰 Актуальные новости с тегом #Диаграмма:
  • В версии 8.3.24 расширена функциональность круговых диаграмм, отладчика, системы взаимодействия.
  • В версии 8.3.21 реализована возможность отображения диаграммы Ганта совместно с таблицей, которая содержит дополнительные данные для значений диаграммы. Реализовано расширение таблицы формы для диаграммы Ганта.
Для объекта ДиаграммаГанта реализовано свойство КолонкиДанных и метод НайтиЗначениеПоИдентификатору().
Для расширения поля формы для диаграммы Ганта реализовано свойство ПоложениеТаблицы.
Для объекта ЗначениеДиаграммыГанта реализованы свойства Идентификатор и Данные.
Для объекта ОбластьПостроенияДиаграммыГанта реализованы свойства ОтображатьТекстТочек и ОтображатьДанные. Для объекта ПолеФормы реализовано свойство Таблица.
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 18.10.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому