Класс документа

При создании каждого типа документа генерируется класс этого документа. Исходным названием служит название типа документа (Name) +"Document", а списком его свойств – соответствующие свойства типа документа.

Например, рассмотрим создание простого типа документа DocType со свойствами AgentID и Amount.

Класс модели предметной области, сгенерированный по этому описанию, выглядит следующим образом:

public partial class DocTypeDocument : IDocument

{

 public long AgentID { get; set; }

 public decimal Amount { get; set; }

 

 // Системные свойства, создаваемые автоматически для всех типов документов.

 public bool Deleted { get; set; }

 public long ID { get; set; }

 public long CreatorID { get; set; }

 public string Comments { get; set; }

 public string TotalsList { get; set; }

 public long TypeID { get; set; }

 public long SubtypeID { get; set; }

 public long Version { get; set; }

 public string Description { get; set; }

 public DateTime CreationDate { get; set; }

 public DateTime TransactionDate { get; set; }

}

Все классы документов реализуют интерфейс IDocument. Соответственно можно получить перечень всех классов документов, запросив кто реализует этот интерфейс:

public interface IDocument : IEntity, IBusinessObject

{

 long TypeID { get; set; }

 long SubtypeID { get; set; }

 long CreatorID { get; set; }

 DateTime CreationDate { get; set; }

 DateTime TransactionDate { get; set; }

 string Description { get; set; }

 string Comments { get; set; }

 string TotalsList { get; set; }

 bool Deleted { get; set; }

 long Version { get; set; }

 

 // Возвращает табличные части документа.

 IKeyValueStore<string, ITablePart> TableParts { get; }

}

Каждому свойству документа соответствует поле типа EditableValue<T>, где Т – один из указанных в метаданных типов. Также свойству может соответствовать коллекция типа DictionaryTable<T> (где Т тип элемента коллекции).

Пример использования:

[Import]

private IDocumentManager DocumentManager { get; set; }

 

// Получаем документ.

var document = DocumentManager<DocTypeDocument>.GetDocument(1488);

 

// Получаем значение свойства AgentID документа.

var agentId = document.AgentID;

 

// Получаем табличную часть документа.

var tablePart = document.TablePartName;