Деактивация записей объектов
Glossary Item Box
Общие сведения
В bpm'online версии 7.11.3 появилась возможность деактивировать записи объектов системы для исключения их из бизнес-логики. Это может понадобиться, например, если данные устарели и больше не используются. Функциональность включается специальным свойством [Разрешить деактивацию записей] ([Allow record deactivation]) в дизайнере объектов (рис. 1) и становится доступной после публикации объекта.
ВАЖНО
В версии 7.11.3 эта функциональность по умолчанию выключена. Для ее включения необходимо установить значение true для настройки UseRecordDeactivation в файле ..\Terrasoft.WebApp\Web.config.
Рис. 1. — Свойство [Разрешить деактивацию записей] ([Allow record deactivation])
ВАЖНО
Функциональность деактивации записей объектов доступна для всех объектов, но автоматическая фильтрация записей работает только в выпадающих списках, на странице выбора из справочника и в быстрых фильтрах. На страницах с содержимым справочников, в расширенных фильтрах и разделах автоматический фильтр не применяется.
Использование в программном коде
В EntitySchemaQuery появился параметр UseRecordDeactivation, определяющий включение или отключение фильтрации по неактивным записям. По умолчанию этот параметр имеет значение 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; var sqlQuery = esq.GetSelectQuery(userConnection).GetSqlText(); Console.WriteLine(sqlQuery);
Здесь переменной sqlQuery присваивается текст результирующего SQL-запроса, который после инициализации экземпляра EntitySchemaQuery будет иметь следующий вид:
SELECT [ContactType].[Id] [Id] FROM [dbo].[ContactType] [ContactType] WITH(NOLOCK) WHERE [ContactType].[RecordInactive] = 0