Сервис группового редактирования#

Основные положения#

Операция группового редактирования объявлена в 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.