public static ReportDef Create(DocDef docDef) { if (docDef == null) { throw new ApplicationException("Не могу создать отчет! Класс документа не указан!"); } var sourceDefId = Guid.NewGuid(); var sourceDef = new ReportSourceDef { Id = sourceDefId, DocDef = docDef, Caption = docDef.Caption, Attributes = new List <ReportSourceSystemAttributeDef>() }; sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.Created, Caption = "Дата создания документа" }); sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.Modified, Caption = "Дата изменения документа" }); sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.State, Caption = "Статус документа" }); sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.StateDate, Caption = "Дата установки статуса документа" }); return(new ReportDef { Caption = docDef.Caption ?? docDef.Name ?? "Новый отчет", Columns = new List <ReportColumnDef>(), Conditions = new List <ReportConditionItemDef>(), Joins = new List <ReportSourceJoinDef>(), Sources = new List <ReportSourceDef>(new[] { sourceDef }), SourceId = sourceDefId }); }
public static ReportSourceJoinDef JoinDocDefSource(this ReportDef def, Guid masterSourceId, DocDef docDef, Guid attrDefId) { Check(def); var masterSourceDef = GetSourceDef(def, masterSourceId); var docDefCount = def.Sources.Count(s => s.DocDef.Id == docDef.Id); var jointSourceId = Guid.NewGuid(); var jointSourceDef = new ReportSourceDef { Id = jointSourceId, DocDef = docDef, Caption = docDef.Caption + (docDefCount > 0 ? (docDefCount + 1).ToString() : String.Empty), Attributes = new List <ReportSourceSystemAttributeDef>() }; jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.Created, Caption = "Дата создания документа" }); jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.Modified, Caption = "Дата изменения документа" }); jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.State, Caption = "Статус документа" }); jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef { Id = Guid.NewGuid(), Ident = SystemIdent.StateDate, Caption = "Дата установки статуса документа" }); def.Sources.Add(jointSourceDef); var jointAttrId = Guid.NewGuid(); var attr = masterSourceDef.DocDef.Attributes.FirstOrDefault(a => a.Id == attrDefId); var jointAttrDef = attr != null ? new ReportAttributeDef { Id = jointAttrId, SourceId = masterSourceId, AttributeId = attrDefId } : new ReportAttributeDef { Id = jointAttrId, SourceId = jointSourceId, AttributeId = attrDefId }; var joinDef = new ReportSourceJoinDef { Id = Guid.NewGuid(), JoinAttribute = jointAttrDef, JoinType = SqlSourceJoinType.Inner, MasterId = masterSourceId, SourceId = jointSourceId }; def.Joins.Add(joinDef); return(joinDef); }