Создаю новый отчет по документу договор. Добавил текст, данные, скрипт делаю по аналогии со стикером контакта:
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Text.RegularExpressions;
using Terrasoft.Common;
using Terrasoft.Core;
using Terrasoft.Core.DB;
using Terrasoft.Reports;
using Terrasoft.Core.Entities;
using Terrasoft.UI.WebControls.Utilities;
private void ContractReport_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
var report = ((Report)sender);
var userConnection = report.UserConnection;
System.Data.DataSet ds = report.CreateDataSet();
System.Data.DataTable filterTable = new System.Data.DataTable();
filterTable.Columns.Add("Id");
var filterObj = report.Parameters["Filters"].Value;
if (filterObj != null && !string.IsNullOrEmpty(filterObj.ToString())) {
var filters = EntitySchemaUtilities.DataSourceFiltersToESQFilters(userConnection, "Document", filterObj.ToString());
var contact = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Document");
contact.AddColumn("Id");
contact.Filters.Add(filters);
filterTable.Load(userConnection, contact);
}
EntitySchemaQuery query = new EntitySchemaQuery(
userConnection.EntitySchemaManager, "Document");
query.AddColumn("Id");
query.AddColumn("Date");
query.AddColumn("Number");
if (filterTable.Rows.Count > 0) {
var idFilters = new EntitySchemaQueryFilterCollection(query) {
LogicalOperation = LogicalOperationStrict.Or,
};
foreach (System.Data.DataRow row in filterTable.Rows) {
if (row["Id"] != null) {
idFilters.Add(query.CreateFilterWithParameters(FilterComparisonType.Equal,
"Id", row["Id"]));
}
}
query.Filters.Add(idFilters);
}
ds.Tables["Document"].Load(userConnection, query);
report.DataSource = ds;
}
В итоге при открытии получаю :
Следующая ошибка когда скрипт в процедуре OnBeforePrint:Object reference not set to an instance of an object
Ничего уже не понимаю....почему она лезет ?