Андрей Быкадоров со службами доставки все получилось, спасибо, а теперь таким же способом пытаюсь настроить ограничение по платежным системам Я сделал сделал по аналогии с доставками следующее в init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'onSalePaySystemRestrictionsClassNamesBuildList', ['EventsClass', 'onSalePaySystemRestrictionsClassNamesBuildListHandler'] ); class EventsClass { function onSalePaySystemRestrictionsClassNamesBuildListHandler() { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array( '\CustomPaySystemRestriction' => '/bitrix/php_interface/include/CustomPaySystemRestriction.php', ) ); }
а в файле CustomPaySystemRestriction.php class CustomPaySystemRestriction extends Bitrix\Sale\Services\Base\Restriction { public static function getClassTitle() { return 'Кастомное ограничение'; }
public static function getClassDescription() { return 'Выбираем нужную службу доставки в зависимости от содержимого корзины'; } //в общем все те же методы как я делал в delivery } Но в админке для доставок появляется кастомное ограничение, а для оплат (сделанных таким же способом) не появляется. Может я не от того класса наследуюсь? Bitrix\Sale\Services\Base\Restriction Пример брал на форуме https://dev.1c-bitrix.ru/support/forum/forum6/topic105299/index.php?ncc=1&auth_service_id=Tw...
Андрей, а еще последний вопрос, все так же по оформлению заказа. Я пытаюсь разделить заказ на 2 с помощью события \Bitrix\Main\EventManager::getInstance()->AddEventHandler('sale', 'OnSaleOrderBeforeSaved', Array("EventsClass", "OnSaleOrderBeforeSavedHandler")); Для этого сперва удаляю некоторые товары из основного заказа class EventsClass { function OnSaleOrderBeforeSavedHandler(\Bitrix\Main\Event $event) { $order = $event->getParameter("ENTITY"); foreach ($basket as &$basketItem) { if(условие что товар должен быть перенесен в другой заказ) { $basketItem->delete(); } } } $basket->save(); } } в этом случае позиции $basketItem->delete(); не попадают в заказ но они почему то после оформления заказа остаются в корзине, а хотелось бы что бы они исчези из корзины. Если сделать вот так то работает корректно (товар в корзине не остается) class EventsClass { function OnSaleOrderBeforeSavedHandler(\Bitrix\Main\Event $event) { $order = $event->getParameter("ENTITY"); foreach ($basket as &$basketItem) { if(условие что товар должен быть перенесен в другой заказ) { \CSaleBasket::Delete($basketItem->GetField("ID"));//Удаляем товар из корзины дедовским способом } } } } } Но хотелось бы сделать красиво, что бы весь код был на D7