вычисляемое поле из двух таблиц

Доброго времени суток!
Возникла необходимость использовать вычисляемое поле с данными из двух таблиц для отчетной формы точки учета.
Поискал на форуме, нашел следующий раздел в руководстве http://soft.lers.ru/manual/index.html?calculatedfieldwithmultipletables.html, сделал все как по инструкции, но с скриптом возникли проблемы.
Шаг 4. При проверке скрипта:
double? heat1 = Lers.Reports.ScriptUtils.GetCurrentRowCellValue(dataDate, tcHeat1);
выдает ошибку:
The type or namespace name ‘ScriptUtils’ does not exist in the namespace ‘Lers.Reports’ (are you missing an assembly reference?)

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

Метод Lers.Reports.ScriptUtils.GetCurrentRowCellValue() описанный в документации больше не используется. Документацию мы обновили.

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

Например, для объекта с 2 точками учета по теплоснабжению и 1 точкой учета по ГВС, суммирование теплопотреблений задается следующим выражением для вычисляемого поля:

Iif(IsNull([Архив потреблений.Теплоснабжение 1.Q - (?Q) теплопотребление (Гкал)]),  0, [Архив потреблений.Теплоснабжение 1.Q - (?Q) теплопотребление (Гкал)]) +
Iif(IsNull([Архив потреблений.Теплоснабжение 2.Q - (?Q) теплопотребление (Гкал)]),  0, [Архив потреблений.Теплоснабжение 2.Q - (?Q) теплопотребление (Гкал)]) +
Iif(IsNull([Архив потреблений.ГВС 1.Q - (?Q) теплопотребление (Гкал)]),  0, [Архив потреблений.ГВС 1.Q - (?Q) теплопотребление (Гкал)])

Спасибо. Попробуем.

Как реализовать выражение для такого расчета?(теплоснабжение)

(([M1 - массовый расход в подающей магистрали]
-([ContractFlow - часовая договорная нагрузка по расходу воды тонн/час, для ХВС м3/час]*24))/[M1 - массовый расход в подающей магистрали])*100

Поясню. Наша РСО сравнивает расчетный расход и реальный.Хотелось бы видеть это сразу же в отчете.

В этом случае нужен скрипт, в котором реализованы обработчики событий: Запрос источника данных (DataSourceDemanded) и Получение значения (GetValue).

В узле Архив потреблений и интеграторов создайте вычисляемое поле (в данном примере - это calculatedField1).
В свойстве Скрипты этого поля, выберите Получить значение.
В автоматически созданную заготовку обработчика скопируйте текст из calculatedField1_GetValue()

В свойстве Скрипты для BaseReport выберите Запрос источника данных.
В автоматически созданную заготовку обработчика скопируйте текст из BaseReport_DataSourceDemanded().

При наличии обработчика события GetValue() вычисляемое поле calculatedField1 будет возвращать значение заданное в этом обработчике.

using System.Text;
using System.Data;

// Часовая договорная нагрузка по расходу воды (м3/час);
double contractFlow = 0;

// Обработчик события Запрос источника данных
private void BaseReport_DataSourceDemanded(object sender, System.EventArgs e) 
{
	// Ссылка на экземпляр формируемого отчета
	XtraReport report = (XtraReport)sender;

	// Источник данных отчета
	DataSet dataSet = (DataSet)report.DataSource;

	// Таблица с параметрами точки учета
	DataTable table = dataSet.Tables["Параметры точки учета"];

	// Часовая договорная нагрузка  (м3/час);
	if(table.Columns.Contains("ContractFlow") && table.Rows.Count > 0);
		double.TryParse(Convert.ToString(table.Rows[0]["ContractFlow"]), out this.contractFlow );
}

// Обработчик события возвращающего значение, которое является результатом вычисляемого поля calculatedField1 
private void calculatedField1_GetValue(object sender, DevExpress.XtraReports.UI.GetValueEventArgs e) 
{
	// Получаем массовый расход для текущей метки времени
	double m1 = 0;
	double.TryParse(Convert.ToString(((DataRowView)e.Row).Row["M1"]), out m1);

	e.Value = (m1 - contractFlow * 24) * 100 / m1;
}