При разработке своего компонента или использовании API для вывода элементов из инфоблоков, может потребоваться, чтобы при наведении курсора на элемент у вас были доступны опции "Изменить элемент" и "Удалить элемент".

Реализация достаточно не хитрая в цикле, который выводит или собирает в массив элементы, для последующего вывода в шаблоне, необходимо добавить следующий код:
//получение ссылок - редактирования и удаления элемента
$arButtons = CIBlock::GetPanelButtons(
    $arItem["IBLOCK_ID"],
    $arItem["ID"],
    0,
    array("SECTION_BUTTONS"=>false, "SESSID"=>false)
);
$arItem["EDIT_LINK"] = $arButtons["edit"]["edit_element"]["ACTION_URL"];
$arItem["DELETE_LINK"] = $arButtons["edit"]["delete_element"]["ACTION_URL"];

В цикле вывода элементов в шаблоне компонента, добавляем вызовы методов AddEditAction и AddDeleteAction. Для которых и указываем в качестве атрибутов полученные ранее, ссылки и ИД элементов.

 
//добавление действия (эрмитаж) для управления элементом как правило в шаблоне компонента
$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => "Удалить?"));

Так же для родительского DOM - элемента необходимо в качестве "id" задействовать вызов метода GetEditAreaId, а в качестве атрибута передать ИД элемента.

В примерах подразумевается, что элементы внутри циклов - это массив $arItem. Если использовать, в некоторых случаях название переменной может быть другим, в этом случае используйте свое имя переменной. Пример: $arElement и т.д.