Деактивация записей объектов

Сложный

Creatio предоставляет возможность деактивировать записи объектов системы для исключения их из бизнес-логики. Это может понадобиться, например, если данные устарели и больше не используются.

Использование в дизайнере объекта 

Функциональность включается специальным свойством Разрешить деактивацию записей (Allow record deactivation) в дизайнере объектов и становится доступной после публикации объекта.

scr_entity_props.png

Функциональность деактивации записей объектов доступна для всех объектов, но автоматическая фильтрация записей работает только в выпадающих списках, на странице выбора из справочника и в быстрых фильтрах. На страницах с содержимым справочников, в расширенных фильтрах и разделах автоматический фильтр не применяется.

Использование в программном коде 

За включение или отключение фильтрации по неактивным записям отвечает параметр UseRecordDeactivation класса EntitySchemaQuery. По умолчанию этот параметр имеет значение false. Если ему присвоить значение true, то в запрос на выборку данных из объекта, где включена деактивация записей, будет добавлен фильтр, исключающий неактивные записи.

Пример использования в клиентском коде
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
   rootSchemaName: "MyCustomLookup",
   useRecordDeactivation: true
});
Пример использования в серверном коде
var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "ContactType") {
    UseRecordDeactivation = true
};
esq.PrimaryQueryColumn.IsAlwaysSelect = true;

Результирующий SQL-запрос в данном случае будет иметь следующий вид:

SQL-запрос
SELECT
  [ContactType].[Id] [Id]
FROM [dbo].[ContactType] [ContactType] WITH(NOLOCK)
WHERE
  [ContactType].[RecordInactive] = 0