$DB->StartTransaction();
                        if (!CIBlockElement::Delete(intval($ID))) {
                            if ($ex = $APPLICATION->GetException()) {
                                $lAdmin->AddGroupError(GetMessage("IBLOCK_ADM_HISTORY_DELETE_ERROR") . " [" . $ex->GetString() . "]", $ID);
                            } else {
                                $lAdmin->AddGroupError(GetMessage("IBLOCK_ADM_HISTORY_DELETE_ERROR"), $ID);
                            }
                            $DB->Rollback();
                        } else {
                            $DB->Commit();
                        }
                    }
                }
                break;
            case "restore":
                if (!CIBlockElement::WF_Restore($ID)) {
                    $lAdmin->AddGroupError(GetMessage("IBLOCK_ADM_HISTORY_RESTORE_ERROR"), $ID);
                }
                break;
        }
    }
}
// dataset
$rsData = CIBlockElement::WF_GetHistoryList($ELEMENT_ID, $by, $order, $arFilter, $is_filtered);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// navigation
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("IBLOCK_ADM_HISTORY_PAGER")));
// list headers
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("IBLOCK_FIELD_ID"), "sort" => "s_id", "default" => true), array("id" => "NAME", "content" => GetMessage("IBLOCK_FIELD_NAME"), "sort" => "s_name", "default" => true), array("id" => "WF_STATUS_ID", "content" => GetMessage("IBLOCK_FIELD_STATUS"), "sort" => "s_status", "default" => true), array("id" => "MODIFIED_BY", "content" => GetMessage("IBLOCK_FIELD_USER_NAME"), "sort" => "s_modified_by", "default" => true), array("id" => "TIMESTAMP_X", "content" => GetMessage("IBLOCK_FIELD_TIMESTAMP_X"), "sort" => "s_timestamp_x", "default" => true)));
// list