Результаты поиска

    Показать / скрыть содержание

    Использование пользовательских атрибутов

    Рассмотрим использование пользовательского атрибута на примере отчетной формы 'Ведомость учета параметров потребления тепла' для точки учета. Задача: создать вычисляемое поле для вывода процента отклонения фактической тепловой энергии от договорного значения. Фактические значения потребления берутся из узла 'Архивы потреблений и интеграторов', а договорное значение хранится в атрибуте точки учета.

    ШАГ 1. Откройте в редакторе отчетов требуемую отчетную форму (главном меню пункт Справочники -> Отчетные формы).

    ШАГ 2. В секцию ReportHeader добавьте ячейку с именем label_СontractHeat для отображения договорной нагрузки по тепловой энергии. Свяжите эту ячейку с соответствующим полем из узла 'Атрибуты точки учета'.

    На закладке 'Обозреватель отчета' в свойствах отчетной формы задайте обработчик события 'Запрос источника данных'.

    ШАГ 3. В свойстве 'Скрипты' для вычисляемого поля calculatedField_Q выберите пункт 'Получить значение -> (Новый)', чтобы создать заготовку скрипта, которая будет возвращать значение вычисляемого поля.

    ШАГ 4. Код скриптов обработчиков:

    using System;
    using System.Data;
    using Lers.Reports;
    
    // Часовая договорная нагрузка. 
    private double? contractHeat = null;
    
    // Обработчик запроса источника данных
    private void BaseReport_DataSourceDemanded(object sender, System.EventArgs e) 
    {
        	double contractValue = 0;
        	object binded_value = null;
    
        	// Получаем значение пользовательского атрибута связанного с ячейкой label_СontractHeat
    	// Значение атрибута хранится как строка. 
        	binded_value = DataSourceUtils.GetBindedValue(label_ContractHeat);
    
        // Получаем догворное значение часовой нагрузки (ГКал/час)	
        	if (double.TryParse(Convert.ToString(binded_value), out contractValue))
        	{
              this.contractHeat = contractValue;
        	}
    }
    
    // Обработчик возвращающий значение, которое является результатом вычисляемого поля calculatedField_Q. 
    private void calculatedField_Q_GetValue(object sender, DevExpress.XtraReports.UI.GetValueEventArgs e) 
    {
        	DataRowView row = (DataRowView)e.Row;
    
        	// Получаем фактическое потребление тепловой энергии (для каждой метки времени свое, ГКал/сутки)
        	double? q = null;
        	if ( row["Q"] != DBNull.Value)
    	{
    		q = Convert.ToDouble(row["Q"]);
    	}
    
        // Получаем значение, которое является результатом вычисляемого поля.
        // Процент отклонения фактического расхода тепла от договорного значения.
    	// this.contractHeat - значение часовой договорной нагрузки (ГКал/час) считанное из пользовательского атрибута.
    	
        	if (q.HasValue && this.contractHeat.HasValue)
    	{
    		e.Value = 100 * (q - 24 * this.contractHeat.Value) / (24 * this.contractHeat.Value);
    	}
    }
    

    ШАГ 5. Свяжите вычисляемое поле calculatedField_Q с требуемой ячейкой секции Detail.

    ШАГ 6. С помощью кнопки на панели инструментов редактора отчетов сохраните сделанные изменения.

    Содержание
    Наверх ©2018 - 2023, ООО "ЛЭРС УЧЁТ"