Переопределение ссылки на поиск пользователя при создании заказа через административный интерфейс.

Давно не писал всяких полезностей и вот случилось недавно разрешить проблему в админке Bitrix, надо было переопределелить стандартную функцию зашитую в ядро, лезть куда конечно же моветон.

Функции обладают возможностью для переопределения поведения. Переопределение происходит с помощью присвоения анонимной функции переменной, которая называется так же, как и переопределяемая функция.

Обработчик навесил на события OnAdminSaleOrderEditDraggable, OnAdminSaleOrderCreateDraggable.
return array("BLOCKSET" => "OrderEdit",
"getScripts" => array('\Events\OrderEdit', "orderScripts"),
);

Сам листинг скрипта
var oldfunc = BX.Sale.Admin.OrderBuyer.showChooseBuyerWindow;
BX.Sale.Admin.OrderBuyer.showChooseBuyerWindow = function (languageId) {
var currentWindow = window.open(
'/local/tools/user_search.php?sessid='+BX.bitrix_sessid()+'&lang='+languageId+'&FN='
+BX.Sale.Admin.OrderEditPage.formId+'&FC=USER_ID',
'',
'scrollbars=yes,resizable=yes,width=840,height=500,top='+Math.floor((screen.height - 840)/2-14)+',left='+Math.floor((screen.width - 760)/2-5)
);
currentWindow.onunload = function(){
setTimeout(function() {
BX.Sale.Admin.OrderAjaxer.sendRequest(
BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData(),true);
}, 1000);
}
};
//тут к примеру можно вызвать oldfunc, если нужен старый функционал

showChooseBuyerWindow — содержимое воспроизводит родителя, за исключением ссылки на скрипт поиска пользователя, таким образом можно преобразовать любой интересующий вас js представленный в админке, при этом не испытывая особых затруднений при обновлении и расширить стандартный функционал.