State (IsChanged, IsEnabled, IsCopied и т.д.) – состояние сущности
<< Click to Display Table of Contents >> Объектная модель > Действия с репозиториями и сущностями State (IsChanged, IsEnabled, IsCopied и т.д.) – состояние сущности |
Под состоянием понимается информация о текущем «статусе» сущности:
•является ли она только что созданной и еще не сохраненной в базе данных;
•является ли измененной, то есть у сущности есть хотя бы одно измененное свойство;
•создана ли сущность копированием.
Информацию о текущем состоянии сущности, а также о состоянии ее свойств можно получить через свойство State. Например, чтобы узнать, является ли сущность только что созданной и еще не сохраненной в базе данных, используется свойство State.IsInserted.
Свойства
Имя |
Тип |
Описание |
---|---|---|
<Интерфейс сущности>AttachmentStates. Например, IApprovalAssignmentAttachmentStates |
Состояние вложений для задач, заданий, заданий на приемку и уведомлений. Содержит свойства, с помощью которых можно управлять видимостью: •отдельно взятых групп вложений «Документ», «Приложения», «Дополнительно»; •всех групп вложений; •выделенных вложений |
|
Controls |
<Интерфейс сущности>ControlStates. Например, IApprovalRuleBaseControlStates |
Состояние контролов сущности. Содержит в себе свойства с именами контролов на форме. Например, через них можно управлять видимостью контрола или добавлять подсветку областей в контроле предпросмотра. Для _obj.State.Controls разработчику доступны только контрол предпросмотра и контрол состояния. Остальными контролами можно управлять через _obj.State.Properties |
IsBinaryDataTransferring |
bool |
Признак того, что бинарные данные находятся в процессе переноса в другое хранилище. Свойство только для чтения. Возвращает true, если идет перенос бинарных данных. После сохранения сущности (после вызова метода Save()) значение сбрасывается обратно в false |
IsChanged |
bool |
Признак того, что сущность изменена. Свойство только для чтения. Возвращает true, если изменено хотя бы одно свойство сущности или права на нее. После сохранения сущности (после вызова метода Save()), значение сбрасывается обратно в false |
IsConverted |
bool |
Признак того, что сущность сконвертирована из другой сущности |
IsCopied |
bool |
Признак того, что сущность создана копированием. Свойство только для чтения. Возвращает true, начиная от вызова метода Сору() репозитория, до вызова метода Save() скопированной сущности |
IsEnabled |
bool |
Признак того, что все свойства в карточке сущности доступны для изменения. Удобство использования этого свойства в том, что нет необходимости изменять состояние всех свойств по очереди |
IsInserted |
bool |
Признак того, что сущность только что создана и еще не сохранена в базе данных. Свойство только для чтения. Возвращает true, начиная от вызова метода Create() репозитория, до вызова метода Save() созданной сущности |
<Интерфейс сущности>PageStates. Например, IEmployeePageStates |
Состояние вкладок на форме сущности. Содержит в себе свойства с именами вкладок. Позволяет управлять видимостью вкладок, активировать вкладки |
|
<Интерфейс состояния панели>PanelStates. Например, IAssigmentBasePanelStates |
Состояние панелей на форме задачи или задания. Содержит в себе свойства с именами панелей. Позволяет программно активировать одну из панелей. Настройка, заданная в коде, является приоритетной и игнорирует выбор панели сотрудником в системе |
|
<Интерфейс сущности>PropertyStates. Например, IEmployeePropertyStates |
Состояние свойств сущности. Свойство только для чтения. Содержит в себе все свойства, какие есть в типе сущности. Через них можно получить состояние свойств сущности (IsVisible, IsRequired, IsEnabled и т.д.), которое включает управление видимостью/доступностью, обязательностью свойств в карточке, а также возможности подсветки контролов для веб-клиента. Также у Properties есть дополнительные свойство ChangedCount, которое возвращает количество измененных свойств сущности |
Пример 1. Проверка состояния сущности в событии типа сущности
// Выполнить вычисления, если запись только что создана и еще не сохранена (IsInserted)
// либо создана копированием (IsCopied).
if (_obj.State.IsInserted || _obj.State.IsCopied)
{
// вычисления
}
Пример 2. Запрет выполнения действий над только что созданной сущностью
Не все действия можно выполнять с сущностью, которая только что создана и еще не сохранена. Например, создан документ и еще не сохранен, так как пользователь заполняет поля в карточке. Пока документ не будет сохранен в базу данных его нельзя удалить, вставить ссылку на документ в папку или сделать копию. В этом случае для недоступных действий можно написать следующий код:
internal static bool CanDelete(IEntity entity, ActionArgs e)
{
if (entity.State.IsInserted)
return false;
...
return true;
}
Пример 3. Получение состояния свойства
// Получить состояние свойства Name записи справочника "Организации".
var company = Companies.Get(15);
var companyNameState = company.State.Properties.Name;
Пример 4. Задание подсветки красного цвета для контрола, связанного со свойством PropertyDate (Дата)
_obj.State.Properties.PropertyDate.HighlightColor = Colors.Common.Red;
© Компания Directum, 2024 |