В битрикс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) });