При создании каждого типа документа генерируется класс этого документа. Исходным названием служит название типа документа (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; |