Менеджер (из пространства имен Ultima.Dictionaries) предназначен для работы со справочниками.

DevBookmark_Scripts Интерфейс менеджера IDictionaryManager реализует следующие методы:

GetRecord(Type dictionaryType, long id, bool withInnerObjects = false) – возвращает экземпляр записи справочника с указанным идентификатором:

dictionaryType – тип справочника;

id – идентификатор записи справочника;

withInnerObjects – если значение параметра установлено в true, будут загружены внутренние объекты записи справочника. Внутренними объектами записи справочника являются, например, развязочные таблицы и вложенные справочники. В случае указания на необходимость загрузки внутренних объектов данные связанных с записью справочника развязочных таблиц и вложенных справочников будут загружены целиком. В противном случае будут загружены лишь идентификаторы;

GetRecords(Type dictionaryType, LambdaExpression selectExpression, IDList records) – возвращает таблицу записей справочника с указанными идентификаторами:

dictionaryType – тип справочника;

selectExpression – выражение, описывающее значения каких из колонок справочника будут загружены. Если в качестве значения параметра указать null – для указанных записей справочника будут загружены значения всех колонок;

IDList – список идентификаторов записей справочника. Если в качестве значения параметра указать null – будут загружены все записи справочника;

GetRecords(Type dictionaryType, LambdaExpression selectExpression, LambdaExpression filterExpression) – возвращает таблицу записей справочника, удовлетворяющих условию фильтра:

dictionaryType – тип справочника;

selectExpression – выражение, описывающее значения каких из колонок справочника будут загружены;

filterExpression – выражение, описывающее какие из записей справочника будут загружены (подробнее в разделе Фильтры);

GetLookup(Type dictionaryType, IDList records = null) – возвращает таблицу записей справочника с указанными идентификаторами, содержащую только lookup-колонки (свойства справочника с установленным флагом LookUp, а если таковых нет, то перечисленные в DisplayFormat свойства):

dictionaryType – тип справочника;

IDList – список идентификаторов записей справочника. Если в качестве значения параметра указать null – будут загружены все записи справочника;

GetLookup(Type dictionaryType, LambdaExpression filterExpression) – возвращает таблицу записей справочника, удовлетворяющих условию фильтра, и содержащую только lookup-колонки:

dictionaryType – тип справочника;

filterExpression – выражение, описывающее какие из записей справочника будут загружены (подробнее в разделе Фильтры);

NewRecord(Type dictionaryType, IDictionary<string, object> parameters = null, IDictionaryRecord template = null) – создает новую запись справочника и передает ее обработчику BeforeCreate:

dictionaryType – тип справочника;

parameters – список параметров для новой записи (опционально);

template – начальное значение для новой записи (опционально);

SaveRecord(Type dictionaryType, IDictionaryRecord record, params ILinkTable[] linkTables) – сохраняет запись справочника:

dictionaryType – тип справочника;

record – сохраняемая запись справочника;

linkTables – данные развязочных таблиц для сохранения;

SaveRecords(Type dictionaryType, IDictionaryTable records) – сохраняет записи справочника:

dictionaryType – тип справочника;

records – таблица сохраняемых записей справочника;

SaveRecords(params IEntity[] records) – сохраняет записи справочника:

records – сохраняемые записи справочника;

SaveRecords(RecordSet recordSet) – сохраняет записи справочника:

recordSet – набор (контейнер) сохраняемых записей справочника;

SaveAndGetRecord(Type dictionaryType, IDictionaryRecord record) – сохраняет запись справочника и затем получает ее из базы данных, возвращает копию загруженной записи:

dictionaryType – тип справочника;

record – сохраняемая запись справочника;

DeleteRecord(Type dictionaryType, long id) – удаляет указанную запись справочника:

dictionaryType – тип справочника;

record – идентификатор удаляемой записи справочника;

CloneRecord(Type dictionaryType, long id) – клонирует указанную запись справочника:

dictionaryType – тип справочника;

record – идентификатор клонируемой записи справочника.

[Import]

private IDictionaryManager DictionaryManager { get; set; }

 

var user = DictionaryManager.NewRecord<User>();

DictionaryManager.SaveRecord(user);

DevBookmark_Scripts Класс RecordSet (из пространства имен Ultima) контейнер записей для сохранения:

AddTask(long printFormId, long copies = 1, IDictionary<string, object> parameters = null) – добавляет задание печати печатной формы, не связанной с каким либо объектом:

DictionaryRecords – коллекция записей справочника;

LinkRecords – коллекция записей развязочной таблицы;

Documents – коллекция документов;

DictionariesTables – коллекция таблиц справочников;

LinkTables – коллекция развязочных таблиц.

DevBookmark_Scripts Интерфейс IEntityExtensions (из пространства имен Ultima.EditableObjects) реализует расширенные методы интерфейса IEntity – единого интерфейса классов объектов метаданных (справочников, документов и т.д.) – и позволяет получить исходные значения свойств записи справочника:

GetOriginalValue<TEntity, TResult>(this TEntity entity, Expression<Func<TEntity, TResult>> getExpr) – возвращает исходное значение указанного свойства:

TEntity – тип объекта;

TResult – тип результата;

entity – объект;

getExpr – выражение получения свойства вида x => x.Name;

IsPropertyChanged<TEntity, TResult>(this TEntity entity, Expression<Func<TEntity, TResult>> getExpr) – возвращает true, если значение указанного свойства было изменено:

TEntity – тип объекта;

TResult – тип результата;

entity – объект;

getExpr – выражение получения свойства вида x => x.Name;

RejectPropertyChanges<TEntity, TResult>(this TEntity entity, Expression<Func<TEntity, TResult>> getExpr) – возвращает указанному свойству исходное значение:

TEntity – тип объекта;

TResult – тип результата;

entity – объект;

getExpr – выражение получения свойства вида x => x.Name;

SetPropertyValues(this IEntity entity, IDictionary<string, object> propertyValues) – позволяет задать значения скалярных свойства:

entity – объект;

propertyValues – набор значений.

long userId = 1;

var user = DictionaryManager.GetRecord<User>(userId);

user.Name = user.Name + "Junior";

 

var currentValue = user.Name; // текущее (измененное) значение свойства

var originalValue = user.GetOriginalValue(x => x.Name); // исходное значение

user.IsPropertyChanged(x => x.Name); // вернет true

user.RejectPropertyChanges(x => x.Name); // вернет свойству его исходное значение