Вот тут что-то похожее находил
|
Добрый вечер, уважаемые разработчики. Сюда меня отослали из тех. поддержки. Надеюсь на Вашу помощь и знания. Описываю свою проблему.После обновления битрикса с версии 17.0.4 до 18.1.4 возникла ошибка при попытке оформить заказ. Текст ошибки прилагаю:
[TypeError] Argument 1 passed to Bitrix\Sale\PaySystem\Manager::getListWithRestrictions() must be an instance of Bitrix\Sale\Payment, boolean given, called in /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php on line 2771 (0) /home/u564/newsite.drovosek-profi.ru/WWW/bitrix/modules/sale/lib/paysystem/manager.php:287 #0: Bitrix\Sale\PaySystem\Manager::getListWithRestrictions(boolean) /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:2771 #1: SaleOrderAjax->getInnerPaySystemInfo(object) /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:2863 #2: SaleOrderAjax->initPayment(object) /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:4265 #3: SaleOrderAjax->getOrder(string) /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:4223 #4: SaleOrderAjax->createOrder(string) /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:4356 #5: SaleOrderAjax->processOrderAction() /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:4332 #6: SaleOrderAjax->doAction(string) /home/u564/newsite.drovosek-profi.ru/WWW/local/components/smedia/sale.order.ajax/class.php:4552 #7: SaleOrderAjax->executeComponent() /home/u564/newsite.drovosek-profi.ru/WWW/bitrix/modules/main/classes/general/component.php:638 #8: CBitrixComponent->includeComponent(string, array, boolean) /home/u564/newsite.drovosek-profi.ru/WWW/bitrix/modules/main/classes/general/main.php:1038 #9: CAllMain->IncludeComponent(string, string, array, boolean, array) /home/u564/newsite.drovosek-profi.ru/WWW/personal/order/make/index.php:60 Блуждая по Вашим огромным трудам, а именно исходникам, и сравнивая файлы нашел проблему в одной функции находящейся в \bitrix\modules\sale\lib\paymentcollection.php Публичная функция getInnerPayment. При сравнении выяснилось что функция изменилась. в версии 17.0.4 она выглядела вот так:
в версии 18.1.4 выглядит вот так:
Из кода понятно что исчезло условие:
При добавлении этого куска к функции версии 18.1.4 все начинает работать. НО! Так как я понимаю что модифицировать ядро, это откровенно говоря, BAD!, и что если кода там нет значит его и не должно быть, то я хочу спросить у Вас - В чем причина того что без этого кода не работает оформление заказа. Возможно этот код добавил разработчик сайта. ТОгда другой вопрос: как обойтись без него, чтобы при будущих обновлениях не пришлось снова что-то править. |
|||||||
|
|
|