В битрикс24 создали единый интерфейс вывода таблиц - списков для разных разделов. Например те же списки и бизнес-процессы, или списки сделок, контактов ,компаний. Все выводится компонентом main.ui.grid, Просто надо подготовить ему данные. Например, чтобы добавить кнопку для работы с несколькими элементами, достаточно найти в компоненте, вызывающем main.ui.grid, какой массив отправляется в параметр ACTION_PANEL, и добавить туда свою кнопку, в виде массива:
$arResult["ACTION_PANEL"]["GROUPS"][0]["ITEMS"][]= array(
"TYPE"=> "BUTTON",
"ID"=> "grid_имя кнопки _button",
"NAME"=> "",
"CLASS"=> "icon имя кнопки ",
"TEXT"=> "имя кнопки ",
"TITLE"=> "описание действия кнопки",
"ONCHANGE"=>
array(
array(
"ACTION"=> "CALLBACK",
"DATA"=>
array(
array(
"JS"=> "Grid. имя кнопки Selected()"
)
)
)
)
);
Шаблон компонента main.ui.grid потребуется скопировать в ваш шаблон сайта ,чтобы в Script.js добавить вашу функцию "Grid.имя кнопки Selected()".
Эта функция будет вызывать аяксовый обработчик, который вы разместите в классе в файле Ajax.php компонента вашего списка.
BX.Lists.ajax({
method: 'POST',
dataType: 'json',
url: BX.Lists.addToLinkParam(this.ajaxUrl, 'action', 'имя вашего обработчика'),
data: {
iblockTypeId: this.iblockTypeId,
elementId: this.elementId,
iblockId: this.iblockId,
socnetGroupId: this.socnetGroupId,
sectionId: this.sectionId,
action: "имя кнопки"
},
onsuccess: BX.delegate(function (result)
{
if(result.status == 'success')
{
BX.Lists.showModalWithStatusAction({
status: 'success',
message: result.message
});
setTimeout(BX.delegate(function() {
document.location.href = this.urlTabBp
}, this), 1000);
}
else
{
result.errors = result.errors || [{}];
BX.Lists.showModalWithStatusAction({
status: 'error',
message: result.errors.pop().message
})
}
}, this)
});