Штатная битриксовая функция CMain::GetCurPageParam не умеет удалять элементы многомерных массивов. Пришлось написать ей замену.
UPD: появилась новая версия дополненная и улучшенная:
[spoiler]
Сама GetCurPageParam осталась прежней, изменения коснулись функции DeleteParam.
Синтаксис полностью совместим с оригиналом + добавлена новая фича: в качестве удаляемого параметра можно передать массив ключей, тогда из $_GET будет удалён параметр, соответствующий последнему ключу. 
 
Пример:
Адрес страницы
Чтобы удалить $_GET['param2']['subparam2'] и весь $_GET['param3']надо написать
На выходе: 
					UPD: появилась новая версия дополненная и улучшенная:
[spoiler]
Сама GetCurPageParam осталась прежней, изменения коснулись функции DeleteParam.
| function nfGetCurPageParam( $strParam = '', $arParamKill = array(), $get_index_page = NULL ){
   if( NULL === $get_index_page ){
      if( defined( 'BX_DISABLE_INDEX_PAGE' ) )
         $get_index_page = !BX_DISABLE_INDEX_PAGE;
      else
         $get_index_page = TRUE;
   }
   $sUrlPath = GetPagePath( FALSE, $get_index_page );
   $strNavQueryString = nfDeleteParam( $arParamKill );
   if( $strNavQueryString <> '' && $strParam <> '' )
      $strNavQueryString = '&'.$strNavQueryString;
   if( $strNavQueryString == '' && $strParam == '' )
      return $sUrlPath;
   else
      return $sUrlPath.'?'.$strParam.$strNavQueryString;
      
}
function nfDeleteParam( $arParam ){
   if( sizeof( $_GET ) < 1 )
      return '';
   if( sizeof( $arParam ) < 1 )
      return '';
   $get = $_GET;
   foreach( $arParam as $param ){
      $search    = &$get;
      $param     = (array)$param;
      $lastIndex = sizeof( $param ) - 1;
      foreach( $param as $c => $key ){
         if( array_key_exists( $key, $search ) ){
            if( $c == $lastIndex )
               unset( $search[$key] );
            else
               $search = &$search[$key];
         }
      }
   }
   return str_replace(
      array( '%5B', '%5D' ),
      array( '[', ']' ),
      http_build_query( $get )
   );
}  | 
Пример:
Адрес страницы
| /page.php?param1=a¶m2[subparam1]=a1¶m2[subparam2]=a2¶m2[subparam3]=a3¶m3[]=b1¶m3[]=b2 | 
Чтобы удалить $_GET['param2']['subparam2'] и весь $_GET['param3']надо написать
| nfGetCurPageParam( '', array( array( 'param2', 'subparam2' ), 'param3' ) ) | 
| /page.php?param1=a¶m2[subparam1]=a1¶m2[subparam3]=a3 | 
 
															 Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».
 Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».
 
			