Сервис группового редактирования#
Основные положения#
Операция группового редактирования объявлена в EntityAvi в отображение Default,
что означает, что она доступна в каждой выборке.
Что бы включить операцию группового редактирования, необходимо в вашем отображении переопределить операцию, так как изначально она выключена:
@Oper(
active = true,
headOperation = "extraOperation"
)
override def groupEditAttr(): Unit = super.groupEditAttr()
Для включения возможности группового редактирования на атрибуте, необходимо в odm (Объектно-документном представлении) или avm (Прикладную модель представления) добавить флаг isGroupEditAvailable:
<!-- odm -->
<attr name="dDoc" attribute-type="Date" caption="Дата док-та" order="60" type="basic" isVisible="true"
editorType="datePick" isHeadLine="true" isCopyInCopyObject="false" isGroupEditAvailable="true" />
<!-- avm -->
<attr name="dDoc" caption="Дата док-та" editorType="datePick" order="60" isGroupEditAvailable="true" />
Для json-атрибутов, при регистрации так же можно включить групповое редактирование (изначально оно выключено):
Btk_AttributeApi().registerJsonAttr(
idpClass = idClass,
spSystemName = "dCreateDoc".ns,
spCaption = "Дата создания док-та",
spAttrType = AttributeTypes.Long.toString,
spType = AttrTypes.Basic.toString,
bpGroupEditAvailable = 1.nn
)
Если необходимо включить групповое редактирование, не изменяя проектный код, необходимо зайти в приложение "Настройки системы" -> Сущности -> Классы.
В списке атрибутов в столбце «Групповое редактирование атрибутов» поставить галочку.
Редактируемые объекты#
Редактируемый объект представляет из себя ссылку на провайдер строки определённого класса.
Для классов в отображении происходит поиск атрибута с наименованием id, для миксинов - gidRef.
Если ваше отображение не привязано к классу, то в нём происходит поиск по следующим атрибутам: id, gid, gidRef.
Если ни один из вышеперечисленных атрибутов не найден, будет выдано исключение.
Свой список изменяемых объектов#
Если необходимо передать свой список изменяемых атрибутов, необходимо переопределить операцию группового редактирования следующим образом:
@Oper(
active = true,
headOperation = "extraOperation"
)
override def groupEditAttr(): Unit = {
val idList = (0 until selection.selectedRecordsCount()).map { idx =>
// Вместо id -> idTask
NLong.fromAny(selection.selectedValueByName("idTask", idx))
}.toList
Btk_GroupEditPkg().execByRep(
baseRep = this,
listObjects = idList
)
}
Установка групп#
Если на классе установлена возможность группировки объектов Руководство разработчика: Сервисные возможности для классов # Группировка, то в отображении группового редактирования появится закладка «Установка групп», на которой можно задать группы для выделенных записей.
Дополнительные закладки для группового редактирования#
Для отображения группового редактирования есть возможность добавить новые закладки для дополнительной обработки объектов.
Для этого необходимо переопределить операцию группового редактирования, в которой вызывается Btk_GroupEditPkg().execByRep, с параметром addTabs,
который принимает последовательность объектов закладок для данного отображения.
Закладки представлены в виде кейс класса GroupEdit_TabsRow, который принимает в себя данные об отображении и функцию обработки объекта.
Функция обработки объекта#
Данная функция принимает в себя один параметр в виде кейс класса GroupEdit_TabsRowParam,
который содержит в себе сессию выполнения группового редактирования и редактируемый объект, который может быть представлен в виде NGid или NLong.