Приветствую Вас ГостьСуббота, 18.05.2024, 13:39

Каталог статей


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

Простой пример заполнения диаграммы Ганта.

Диаграмма Ганта - это реквизит формы, который имеет тип ДиаграммаГанта. Заполнение данных выполняется программно.

Процедуры заполнения:


&НаКлиенте
Процедура Сформировать(Команда)
    СформироватьНаСервере(ДиаграммаГанта);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СформироватьНаСервере(Диаграмма)
    
    // Запретить обновление диаграммы.
    Диаграмма.Обновление = Ложь;
    
    Диаграмма.Очистить();
    Диаграмма.ОтображатьЗаголовок = Ложь;
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    НачисленияФактическийПериодДействия.ВидРасчета,
    |    НачисленияФактическийПериодДействия.Сотрудник,
    |    НачисленияФактическийПериодДействия.Результат,
    |    НачисленияФактическийПериодДействия.Регистратор,
    |    НачисленияФактическийПериодДействия.Регистратор.Представление КАК РегистраторПредставление,
    |    НачисленияФактическийПериодДействия.ПериодДействияНачало,
    |    НачисленияФактическийПериодДействия.ПериодДействияКонец
    |ИЗ
    |    РегистрРасчета.Начисления.ФактическийПериодДействия() КАК НачисленияФактическийПериодДействия";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    // Заполнить диаграмму.
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Получить серию, точку и значение для них.
        ТекущаяСерия = Диаграмма.УстановитьСерию(ВыборкаДетальныеЗаписи.ВидРАсчета);
        ТекущаяТочка = Диаграмма.УстановитьТочку(ВыборкаДетальныеЗаписи.Сотрудник);
        ТекущееЗначение = Диаграмма.ПолучитьЗначение(ТекущаяТочка, ТекущаяСерия);
        
        // Создать нужные нам интервалы в значении.                
        ТекущийИнтервал = ТекущееЗначение.Добавить();
        ТекущийИнтервал.Начало = ВыборкаДетальныеЗаписи.ПериодДействияНачало;
        ТекущийИнтервал.Конец = ВыборкаДетальныеЗаписи.ПериодДействияКонец;
        ТекущийИнтервал.Текст = ВыборкаДетальныеЗаписи.РегистраторПредставление;
        ТекущийИнтервал.Расшифровка = ВыборкаДетальныеЗаписи.Регистратор;
        
    КонецЦикла;
    
    // Раскрасить серии своими цветами.
    Для Каждого Серия из Диаграмма.Серии Цикл    
        Если Серия.Значение = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
            Серия.Цвет = WEBЦвета.Желтый;        
        ИначеЕсли Серия.Значение = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
            Серия.Цвет = WEBЦвета.Зеленый;        
        ИначеЕсли Серия.Значение = ПланыВидовРасчета.ОсновныеНачисления.Невыход Тогда
            Серия.Цвет = WEBЦвета.Красный;        
        КонецЕсли;                               
    КонецЦикла;    
    
    // Разрешить обновление диаграммы.
    Диаграмма.Обновление = Истина;
    
КонецПроцедуры

 

Сначала мы запрещаем обновление диаграммы на то время, пока мы будем заполнять ее данными. Это нужно для того, чтобы в процессе заполнения не выполнялись пересчеты при каждом изменении данных диаграммы. После окончания заполнения диаграммы мы разрешим обновление, и все пересчеты будут выполнены один раз.

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

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

После того как точка и серия получены, с помощью метода ПолучитьЗначение() мы получаем соответствующее им значение диаграммы.

Затем мы добавляем в значение диаграммы новый интервал, задаем его начало и конец, задаем текст интервала, который будет показываться во всплывающей подсказке, и задаем расшифровку интервала, которая будет выполняться при двойном щелчке мышью на этом интервале.

После того как все значения диаграммы сформированы, мы раскрашиваем серии своими цветами. Серии диаграммы представляют собой коллекцию значений, которую мы перебираем при помощи конструкции Для Каждого … Цикл.

Категория: Формы | Добавил: leshic (15.02.2022)
Просмотров: 368 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0