Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

OnOrderUpdate + CSaleOrderPropsValue::GetOrderProps

00 голосов
5
Еще раз здравствуйте, уважаемые коллеги.

У меня такой вопрос.

В обработчике события OnOrderUpdate вызывается метод CSaleOrderPropsValue::GetOrderProps, который не отрабатывает вообще.

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

Вероятно какие-то необходимые данные не приезжают к моменту его вызова.

Код
  $db_props = CSaleOrderPropsValue::GetOrderProps( $ID ); //в $db_prors получаю пустоту...
  while ($arProps = $db_props->Fetch())
  {
     //....
  }     


В чем проблема.
Подскажите пожалуйста.
Спасибо.
спросил 18 Дек, 13 от LiveToWIn (360 баллов)

5 Ответы

00 голосов
Ivan Monakhov,
у меня на 9.0.1 аналогичный код работает. Событие вызывается при изменениях в публичке или в админке?
ответил 02 Март, 14 от EcbKa (180 баллов)
00 голосов
В публичной части.

P.S. версия 9.5.2
ответил 22 Июнь, 14 от LiveToWIn (360 баллов)
00 голосов
Есть один момент....

Сайтом делала другая компания...
Мы сейчас прикручиваем к нему сервис обмена сообщениями с локальной базой...

И вот, так компания перекастомизовала все, что можно было перекастомизовать и вынесла львиную долю компонентов в свое пространство имен... На тот момент версия продукта было 8.5


Сейчас версия 9.5.2, но при этом те компоненты естественно не обновляются...

Не могло ли это как-то повлиять на такое поведение апишного метода?
ответил 22 Окт, 14 от LiveToWIn (360 баллов)
00 голосов
Конфигурацию проверил на 2х система (рабочих).

Результат немного другой... но от этого не легче :(

Вызов метода в рамках обработчика события OnOrderUpdate упросил до маскимума
Код
 $db_props = CSaleOrderPropsValue::GetOrderProps( $ID );
 while( $arProps = $db_props->Fetch() )
 {
    $test = $arProps["VALUE"];
 }





Но он тоже отрабатывает весьма печально...

На дефолтной конфигурации (Бизнес) с демо данными офомляю заказ на Юр. лицо.
Печатаю массив $db_props

Код
CDBResult Object
(
    [result] => 0
    [arResult] => 
    [bNavStart] => 
    [bShowAll] => 
    [NavNum] => 
    [NavPageCount] => 
    [NavPageNomer] => 
    [NavPageSize] => 
    [NavShowAll] => 
    [NavRecordCount] => 
    [bFirstPrintNav] => 1
    [PAGEN] => 
    [SIZEN] => 
    [add_anchor] => 
    [bPostNavigation] => 
    [bFromArray] => 
    [bFromLimited] => 
    [sSessInitAdd] => 
    [nPageWindow] => 11
    [nSelectedCount] => 
    [arGetNextCache] => 
    [bDescPageNumbering] => 
    [arUserMultyFields] => 
    [SqlTraceIndex] => 
)




Что весьма печально...

Дальше, загоняю в цикле в динамический массив $arProps

Получаю:
Код
Array
{
}




Получается, что данный метод не отрабатывает.
В чем дело... ума не приложу...
ответил 20 Фев, 15 от LiveToWIn (360 баллов)
00 голосов
В общем проблему решил...

Пришлось ловить массив со свойствами заказа на этапе вывода из пользователю для подтверждения заказа...

Апишный метод не работает, т.к. на момент вызова обработчика события OnOrderUpdate свойства текущего заказа еще на попали в свою таблицу (b_sale_order_props_value).

Всем спасибо.
ответил 31 Май, 15 от LiveToWIn (360 баллов)

Связанных вопросов не найдено