Готовые шаблоны можно включить в ресурсы проекта. В примере XafariReportsSample ресурсы шаблонов размещены в каталоге Templates проекта XafariReportsSample.Module.

При поставке приложения заказчику вам будет необходимо развернуть (deploy) необходимые шаблоны и параметры. Для этой цели предлагается воспользоваться нижеприведенным фрагментом кода. Его следует разместить в методе UpdateDatabaseAfterUpdateSchema класса Updater проекта XafariReportsSample.Module.

 

// Deploy report

 

var reportId = XafariReport.GetId(typeof (PersonsReport));

 

if (TemplatesDeploymentHelper.FindTemplate<XafXafariReportTemplate>(ObjectSpace, reportId, "Xtra report") == null)

{

    ObjectSpace.DeployXafTemplate<PersonsReport>(

        "Xtra report",

        "XafariReportsSample.Module.Templates.PersonsBirthdayXtra.repx",

        GetType().Assembly, true, true);

}

 

if (TemplatesDeploymentHelper.FindTemplate<ExcelXafariReportTemplate>(ObjectSpace, reportId, "Excel report") == null)

{

    ObjectSpace.DeployExcelTemplate<PersonsReport>(

        "Excel report",

        "XafariReportsSample.Module.Templates.PersonsBirthdayExcel.xlsx",

        "PersonsBirthdayExcel.xlsx",

        GetType().Assembly, true, true);

}

 

if (TemplatesDeploymentHelper.FindTemplate<FileXafariReportTemplate>(ObjectSpace, reportId, "File report") == null)

{

    ObjectSpace.DeployFileTemplate<PersonsReport, PersonsReportFileGenerator>(

        "File report",

        XafariReportsModule.DefaultReportStorePath,

        FileReportResult.CreateSingleFile,

        "{0:ReportName}-{0:Parameters.Name}",

        GetType().Assembly, true, true);

}

 

var parameter = ObjectSpace.FindObject<PersonsReportParameters>(CriteriaOperator.Parse("Name == 'Persons birthday'"));

if (parameter == null)

{

    parameter = ObjectSpace.CreateObject<PersonsReportParameters>();

    parameter.Name = "Persons birthday";

    parameter.IsActive = true;

    parameter.IsShared = true;

    parameter.IsSaveReport = false;

}