воскресенье, 11 июля 2010 г.

Возвращаемые значения 1С SOAP в PHP

В SOAP как и в других нормальных программерских технологиях есть значения передаваемые и возвращаемые. Так вот, если Ваш 1С кодер есть Вам мозг и утверждает, что нужно передавать в SOAP переменную (или ссылку на неё) в которой будет возвращаться значение - не верьте ему. На самом деле возвращаемое значение/я идёт/ут дополнительными массивами/объектами в возвращаемом результате вызова SOAP метода.

Недавний пример. 1Сник заявляет, что нужно вызывать метод

CheckBalances(OrderData, TradeBalances)


при этом TradeBalances это пустая переменная в которой будет возвращаться результат (вообще в PHP реализации SOAP не понятно как передать ссылку на переменную в именованном массиве, да и вообще странно это...). На самом деле оказалось надо так:


CheckBalances(OrderData)


а TradeBalances возвращается следующим элементом массива в возвращаемом результирующем объекте SOAP. Типа:

$SOAPresult = $SOAPclient->CheckBalances(OrderData);

и результат

stdClass Object
(
    [return] => stdClass Object
        (
            [success] => 
            [message] => 
        )

    [TradeBalances] => stdClass Object
        (
             ...
        )
)