Рейтинг: 6.4718  
Новая
Предложил Пользователь 109495 09.01.2017 11:33:08

Использовать static:: вместо self:: в CSaleExport

Многим известен алгоритм кастомизации обмена с 1С.
  1. Создать свою страницу в админке
  2. Разместить на ней кастомный компонент обмена sale.export.1c
  3. Переписать \CSaleExport::ExportOrders2Xml
К сожалению, все вызовы в этом классе -- статические и делаются через self:: Например, ExportOrders2Xml вызывает getXmlContragents как self::getXmlContragents. То есть, если даже мы унаследуем класс CSaleExport и переопределим getXmlContragents (не трогая огромный ExportOrders2Xml) то вызываеться будет именно старая версия getXmlContragents.
Собственно идея: чтобы облегчить изменение этого класса все self:: вызовы достаточно заменить на static:: (LSB -- http://php.net/manual/ru/language.oop5.late-static-bindings.php)
Рейтинг: 15.1607  
На голосовании
Предложил Пользователь 191258 12.08.2014 12:41:59

Полное наследование компонентов

Сейчас реализована возможность наследоваться от других компонентов следующим образом:
CBitrixComponent::includeComponentClass("bitrix:catalog.viewed.products");
class CSaleBestsellersComponent extends CCatalogViewedProductsComponent{ 
... 
}
Но так происходит наследование только class.php. т.е. если я хочу только чуть-чуть изменить логику обхода элементов полученных в getlist, я все равно должен скопировать и шаблон, и описание, и параметры, и языковые файлы.

Как не странно, но указание напрямую адреса наследуемого файла параметров приводит к ошибке в публичке (повторные ajax запросы и зависание в визуальном редакторе при попытке отредактировать параметры компонента).

include($_SERVER['DOCUMENT_ROOT'].'/bitrix/components..../.parameters.php') ;
Хотелось бы увидеть что-то вроде:
CBitrixComponen::includeParametrsByParentName("bitrix:catalog.viewed.products");  
CBitrixComponen::includeTenplateByParentName("bitrix:catalog.viewed.products",'.default');

поскольку файл параметров да и шаблон, могут быть переопределены в шаблонах сайта, то стоит в таких функциях добавить второй параметр шаблон сайта.