Каждый генерируемый класс метаданных имеет статическое свойство StaticClassDescriptor типа IClassDescriptor. Обратившись к этому свойству, можно получить все свойства класса, на какие колонки они отображены и так далее.
Для упрощения работы реализована следующая иерархия дескрипторов:
BaseDescriptor
ClassDescriptor
DictionaryDescriptor
DocumentDescriptor
LinkTableDescriptor
TablePartDescriptor
TotalDescriptor
ScalarPropertyDescriptor
DictionaryPropertyDescriptor
DocumentPropertyDescriptor
LinkTablePropertyDescriptor
TablePartPropertyDescriptor
TotalDimensionDescriptor
TotalVariableDescriptor
ReferencePropertyDescriptor
DictionaryReferenceDescriptor
DocumentReferenceDescriptor
LinkTableReferenceDescriptor
TablePartReferenceDescriptor
ListPropertyDescriptor
DictionaryListDescriptor
DictionaryLinkTableDescriptor
DocumentTablePartDescriptor
BaseDescriptor – базовый дескриптов, описывающий класс, обладает следующими свойствами:
•ID, типа long – идентификатор класса;
•Name, типа string – имя класса;
•Caption, типа string – описание класса;
•Comments, типа string – комментарий к классу.
ClassDescriptor – описывает класс, наследуется от базового класса BaseDescriptor, обладает следующими свойствами:
•TableName, типа string – имя таблицы объекта в базе данных;
•MapObjectName, типа string – имя представления таблицы в базе данных;
•IsKernel, типа bool – указывает, является ли класс ядерным (системным);
•Icon, типа Image – иконка команды класса;
•LargeIcon, типа Image – большая иконка команды класса;
•IconName, типа string – название иконки команды класса;
•LargeIconName, типа string – название большой иконки команды класса;
•ImplementedInterfaces, типа IList<string> – список реализованных классом интерфейсов;
•FilterProperties, типа IList<string> – список свойств, отображаемых в панели фильтра списковой формы справочника;
•Guid, типа Guid – GUID класса;
•DisplayFormat, типа string – возвращает формат отображения записи объекта в строковом виде.
DictionaryDescriptor – описывает класс записи справочник, наследуется от класса ClassDescriptor, обладает следующими свойствами:
•SequenceName, типа string – имя Sequence-таблицы класса в базе данных;
•IsSmall, типа bool – указывает, что справочник должен иметь малое количество строк;
•NotificationEnabled, типа bool – указывает, должен ли DictionaryManager рассылать уведомления при изменении данных справочника;
•IsCached, типа bool – указывает, должны ли данные класса кэшироваться на стороне клиента;
•TransparentTranslation, типа bool – указывает, должен ли справочник быть переведен прозрачно (на лету);
•DefaultSearchProperty, типа string – свойство, по которому осуществляется поиск в списковой форме справочника и элементах управления;
•ParentProperty, типа string – название свойства, по которому строится дерево в древовидном справочнике;
•IsTree, типа bool – указывает, что справочник является древовидным;
•DefaultLookupProperties, типа List<string> – формат отображения записи справочника в строковом виде;
•DisplayFormat, типа string – возвращает формат отображения записи справочника в строковом виде.
DocumentDescriptor – описывает класс документа, наследуется от класса ClassDescriptor, обладает следующими свойствами:
•SequenceName, типа string – имя Sequence-таблицы класса в базе данных;
•DisplayFormat, типа string – возвращает формат отображения документа в строковом виде.
LinkTableDescriptor – описывает класс записи развязочной таблицы, наследуется от класса ClassDescriptor.
TablePartDescriptor – описывает класс записи табличной части, наследуется от класса ClassDescriptor:
•SequenceName, типа string – имя Sequence-таблицы класса в базе данных;
•DisplayFormat, типа string – возвращает формат отображения записи табличной части в строковом виде.
TotalDescriptor – описывает класс движения итога, наследуется от класса ClassDescriptor:
•TransactionTableName, типа string – имя таблицы класса транзакции итога в базе данных;
•BalanceTableName, типа string – имя таблицы класса баланса итога в базе данных;
•DetailedTransactionTableName, типа string – имя таблицы класса детализированной транзакции итога в базе данных;
•TotalTableName, типа string – имя таблицы класса итога в базе данных;
•TemporaryTransactionTableName, типа string – имя таблицы класса временной транзакции итога в базе данных;
•TransactionViewName, типа string – имя представления таблицы класса транзакции итога в базе данных;
•DetailedTransactionViewName, типа string – имя представления таблицы класса детализированной транзакции итога в базе данных;
•TemporaryTransactionViewName, типа string – имя представления таблицы класса временной транзакции итога в базе данных;
•TransactionType, типа Type – тип класса транзакции итога;
•BalanceType, типа Type – тип класса баланса итога;
•DetailedTransactionType, типа Type – тип класса детализированной транзакции итога;
•IsDoubleEntry, типа bool – указывает, используется ли правило двойной записи;
•IsOperational, типа bool – указывает, является ли движение итога операционным;
•UseBalanceTable, типа bool – указывает, имеется ли у итога таблица оперативного баланса.
ScalarPropertyDescriptor – описывает скалярные свойства класса, наследуется от базового класса BaseDescriptor, обладает следующими свойствами:
•Type, типа PropertyTypes – возвращает типа скалярного свойства сгенерированного класса (подробнее см. раздел Типы данных);
•ColumnName, типа string – возвращает имя поля таблицы в базе данных;
•DefaultValue, типа string – возвращает значение свойства по умолчанию;
•StringSize, типа int – возвращает максимальный размер свойства строкового типа;
•IsPrimaryKey, типа bool – указывает, является ли свойство частью первичного ключа;
•IsRequired, типа bool – указывает, является ли свойство обязательным для заполнения;
•IsSystemProperty, типа bool – указывает, является ли свойство системным.
DictionaryPropertyDescriptor – описывает скалярные свойства класса записи справочника, наследуется от класса ScalarPropertyDescriptor, обладает следующими свойствами:
•IsRequired, типа bool – указывает, является ли свойство обязательным для заполнения, всегда принимает значение true, если свойство является частью первичного ключа (IsPrimaryKey имеет значение true);
•IsPrimaryKey, типа bool – указывает, является ли свойство частью первичного ключа, всегда принимает значение true, если свойство является идентификатором (имеет имя ID типа long);
•IsTranslatable, типа bool – указывает, является ли свойство переводимым (мультиязычным).
DocumentPropertyDescriptor – описывает скалярные свойства класса документа, наследуется от класса ScalarPropertyDescriptor, обладает следующими свойствами:
•IsRequired, типа bool – указывает, является ли свойство обязательным для заполнения, всегда принимает значение true, если свойство является частью первичного ключа (IsPrimaryKey имеет значение true);
•IsPrimaryKey, типа bool – указывает, является ли свойство частью первичного ключа, всегда принимает значение true, если свойство является идентификатором (имеет имя ID типа long);
•IsMultilanguage, типа bool – указывает, является ли свойство переводимым (мультиязычным);
•IsSystemProperty, типа bool – указывает, является ли свойство системным.
LinkTablePropertyDescriptor – описывает скалярные свойства класса записи развязочной таблицы, наследуется от класса ScalarPropertyDescriptor.
TablePartPropertyDescriptor – описывает скалярные свойства класса записи табличной части, наследуется от класса ScalarPropertyDescriptor, обладает следующими свойствами::
•IsRequired, типа bool – указывает, является ли свойство обязательным для заполнения, всегда принимает значение true, если свойство является частью первичного ключа (IsPrimaryKey имеет значение true);
•IsPrimaryKey, типа bool – указывает, является ли свойство частью первичного ключа, всегда принимает значение true, если свойство является идентификатором (имеет имя ID типа long);
•IsVisible, типа bool – указывает, является ли свойство видимым (в документе);
•IsSystemProperty, типа bool – указывает, является ли свойство системным.
TablePartPropertyDescriptor – описывает скалярные свойства класса записи табличной части, наследуется от класса ScalarPropertyDescriptor, обладает следующими свойствами::
•IsRequired, типа bool – указывает, является ли свойство обязательным для заполнения, всегда принимает значение true, если свойство является частью первичного ключа (IsPrimaryKey имеет значение true);
•IsPrimaryKey, типа bool – указывает, является ли свойство частью первичного ключа, всегда принимает значение true, если свойство является идентификатором (имеет имя ID типа long);
•IsVisible, типа bool – указывает, является ли свойство видимым (в документе);
•IsSystemProperty, типа bool – указывает, является ли свойство системным.
TotalDimensionDescriptor – описывает свойства-измерения класса движения итога, наследуется от класса ScalarPropertyDescriptor, обладает следующими свойствами:
•IsOperational, типа bool – указывает, является ли измерение операционным.
TotalVariableDescriptor – описывает свойства-переменные класса движения итога, наследуется от базового класса BaseDescriptor, обладает следующими свойствами:
•IsOperational, типа bool – указывает, является ли переменная операционной.
ReferencePropertyDescriptor – описывает свойства класса нескалярных типов (являющиеся ссылками на другие классы), наследуется от базового класса BaseDescriptor, обладает следующими свойствами:
•Type, типа string – возвращает типа свойства сгенерированного класса;
•ThisKey, типа string – название скалярного свойства к которому привязано это ссылочное свойство;
•IsAssociation, типа bool – возвращает true, если ThisKey заполнен.
DictionaryReferenceDescriptor – описывает свойства класса записи справочника нескалярных типов (являющиеся ссылками на другие классы), наследуется от класса ReferencePropertyDescriptor, обладает следующими свойствами:
•ReferencedDictionaryID, типа long – идентификатор справочника, на который ссылается свойство.
DocumentReferenceDescriptor – описывает свойства класса документа нескалярных типов (являющиеся ссылками на другие классы), наследуется от класса ReferencePropertyDescriptor, обладает следующими свойствами:
•ReferencedDictionaryID, типа long – идентификатор справочника, на который ссылается свойство.
LinkTableReferenceDescriptor – описывает свойства класса записи развязочной таблицы нескалярных типов (являющиеся ссылками на другие классы), наследуется от класса ReferencePropertyDescriptor, обладает следующими свойствами:
•ReferencedDictionaryID, типа long – идентификатор справочника, на который ссылается свойство.
TablePartReferenceDescriptor – описывает свойства класса записи табличной части нескалярных типов (являющиеся ссылками на другие классы), наследуется от класса ReferencePropertyDescriptor, обладает следующими свойствами:
•ReferencedDictionaryID, типа long – идентификатор справочника, на который ссылается свойство.
ListPropertyDescriptor – описывает вложенную коллекцию класса, наследуется от базового класса BaseDescriptor, обладает следующими свойствами:
•Type, типа string – возвращает типа свойства сгенерированного класса;
•ThisKey, типа string – название скалярного свойства к которому привязано это ссылочное свойство;
•IsAssociation, типа bool – возвращает true, если ThisKey заполнен.
DictionaryListDescriptor – описывает вложенную коллекцию класса записи справочника, наследуется от класса ListPropertyDescriptor.
DictionaryLinkTableDescriptor – описывает развязочную таблицу класса справочника, наследуется от класса ListPropertyDescriptor.
DocumentTablePartDescriptor – описывает табличную часть класса документа, наследуется от класса ListPropertyDescriptor.