Можете ли вы сделать чтобы при выводе отчетов по отопительной воде учитывались условия п.92 МЕТОДИКИ ОСУЩЕСТВЛЕНИЯ КОММЕРЧЕСКОГО УЧЕТА ТЕПЛОВОЙ ЭНЕРГИИ, ТЕПЛОНОСИТЕЛЯ (ПРИКАЗ
от 17 марта 2014 г. N 99)
Т.е. согласно этой методики, можно разницу масс между подающим и обратным трубопроводом приравнивать к “НУЛЮ”.
Это актуально для вычислителей, в которых отсутствует функция не баланса масс.
Из п.92:
Если M1 > М2 или М2 > M1 но |М1 — М2| меньше суммы модулей абсолютных погрешно-
стей измерения массы теплоносителя величина утечки (подмеса) считается равной нулю.
Речь идет о виличине утечки, а не о том о чем вы говорите.
Величина утечки = М1-М2 - это и есть разница масс.
Именно об этом и говорится в п.92, т.е. разницу масс можно приравнивать к нулю с учетом условий указанных в п.92.
Эта функция реализована во многих вычислителях.
Я хотел бы чтобы она была реализована в программе при формировании отчетов.
Если сделать так, как вы предлагаете, то нет контроля по поводу допустимого небаланса масс.
Хотелось бы чтобы в этом расчете было сравнение с допустимым небалансом масс, значение которого вводится в настройках точки учета.
И при изменении значения в настройках, журнал событий ЛЭРС бы фиксировал данное изменение.
Я Вас понимаю как разработчиков: зачем программировать, когда можно это реализовать на уровне формирования отчетов, но думаю эта функция пригодилась бы многим.
В целом вам решать.
Во первых это не проблема, а предложения по улучшению функциональности ЛЭРС.
Моя исходная тема касалась не только вывода данных отчета и я думаю не обязательно делать новую тему.
Я думаю вы не поняли мою исходную тему, а я пояснил ее уже в дискуссии.
Все же если эта функциональность вас заинтересовала, то прошу обсуждать ее здесь
При формировании суточного отчета при сравнении архивных данных за каждые сутки такое вычисляемое поле сделать не проблема, а как внести изменения в суммарные переменные (сумма за период) в графе ИТОГО или в графе “Всего к оплате за потери воды Мп =”???
В ячейке строки Итого для колонки Мп надо суммировать вычисляемое поле.
Если отчетную форму создавать на базе ‘Теплоснабжение (системная)’, то ячейку SumMdelta в строке Итого надо связать с вычисляемым полем. При обработки события ‘Вычисление сводки завершено’, значение из ячейки SumMdelta автоматически подставляется в ячейку графы “Всего к оплате за потери воды Мп =” в обработчике скрипта OnSummaryCalculated:
// Все ячейки в строке итого подписаны на событие Summary Calculated (Вычисление итога завершено);
// Скрипт OnSummaryCalculated вызывается для каждой колонки, когда для нее подсчитана сумма.
// Когда будут получены суммы для всех колонок отчета, вызовется метод SetBarCodeValue для формирования barcode
private void OnSummaryCalculated(object sender, DevExpress.XtraReports.UI.TextFormatEventArgs e)
{
// e.Text - содержит отформатированное значение накопленной суммы (оно отображается в строке Итого)
// e.Value - содержит истинное значение накопленной суммы.
double value = 0;
double.TryParse(e.Text, out value);
switch (((XRControl)sender).Name);
{
case "SumM1":
// Суммарный массовый расход в подающей магистрале
Mass_in = value;
break;
case "SumM2":
// Суммарный массовый расход в отводящей магистрале
Mass_out = value;
break;
case "SumMdelta":
// Суммарный водоразбор
Mass_delta = value;
labelSummMass.Text = String.Format("{0:F3}", Mass_delta);
break;
case "SumH1":
// Суммарная тепловая энергия в подающей магистрале
Heat_in = value;
break;
case "SumH2":
// Суммарная тепловая энергия в отводяще магистрале
Heat_out = value;
break;
case "SumHdelta":
// Суммарное теплопотребление с учетом теплопотерь
Heat_delta = value;
labelSummHeat.Text = String.Format("{0:F3}", Heat_delta+Heatloss);
break;
case "SumWorkTime":
// Суммарное время наработки
Worktime = value;
break;
}
// Увеличиваем значение счетчика колонок, по которым вычислены суммы
counter++;
// Когда все суммы вычислены, формируем barcode и сбрасываем счетчик
if (counter == 7);
{
SetBarCodeValue();
counter = 0;
}
}
Спасибо за ответ, но мы как начинающие пользователи немного не поняли Ваш ответ.
В отчете “Теплоснабжение (системная)” в графе “Итого” в колонке Мп, ячейка называется SumM, а не SumMdelta. Откуда взялась ячейка SumMdelta?
Я не понял где редактируется скрипт OnSummaryCalculated. Вы прислали переделанный код скрипта или код который используется в отчете “Теплоснабжение (системная)” .
Я правильно понял, что в этом скрипте нужно поставить условие расчета суточных масс Мп и суммарную за период?
// Получение суммарного теплопотребления c учетом тепловых потерь.
// Не используется rowFooterValues, чтобы не менять код при удалении BarCode и скриптов его заполняющих.
private void labelSummHeat_SummaryCalculated(object sender, DevExpress.XtraReports.UI.TextFormatEventArgs e)
{
// e.Text - содержит отформатированное (округленное) значение накопленной суммы,
// e.Value - содержит истинное значение накопленной суммы.
double dblHeat = 0;
if ( System.Double.TryParse(e.Text, out dblHeat) )
{
this.sumHeat = dblHeat + this.heatLoss;
}
}
// Все ячейки (кроме первой) в строке итого подписаны на событие Summary Calculated (Вычисление итога завершено).
// Скрипт OnSummaryCalculated вызывается для каждой колонки, когда для нее подсчитана сумма или среднее значение.
private void OnSummaryCalculated(object sender, DevExpress.XtraReports.UI.TextFormatEventArgs e)
{
// e.Text - содержит отформатированное (округленное) значение накопленной суммы,
// e.Value - содержит истинное значение накопленной суммы.
double value = 0;
double.TryParse(e.Text, out value);
// наименование ячейки, для которой поднято событие об окончании расчета суммы
string cellName = ((XRControl)sender).Name;
2.Свяжите его с ячейками tableCell_M_delta, sumM и labelSummMas (названия ячеек взяты для системной отчетной формы ‘Теплоснабжение (системная))’.
3. Сохраните изменения.
Огромное спасибо, я так и хотел реализовать, без скриптов, только я не понял как будет считаться ИТОГО.
Я сделал все как вы написали, только в колонке ИТОГО ничего не считается