Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Ошбика веб-сервисе: Обязательное возвращаемое значение не задано

Ошбика веб-сервисе: Обязательное возвращаемое значение не задано
Я
   YVGroshkov
 
24.12.12 - 16:44
Функция test()
    ПеременнаяМассив = Новый Массив(4);
    ПеременнаяМассив.Вставить(0, "Нулевой");
    ПеременнаяМассив.Вставить(1, "Первый");
    ПеременнаяМассив.Вставить(2, "Второй");
    ПеременнаяМассив.Вставить(3, "Третий");
    Возврат ПеременнаяМассив;
КонецФункции

XDTO http://v8.1c.ru/8.1/data/core
тип Array

Где я ошибся?
 
 
   На стороне добра
 
1 - 24.12.12 - 17:06
Как воспроизвести ситуацию?
   YVGroshkov
 
2 - 24.12.12 - 17:10
Создать веб сервис с операцией test
код модуля веб-сервиса приведён выше
в xdto веб-сервиса нужно указать http://v8.1c.ru/8.1/data/core
Потом из скрипта обратиться вот так:

$client = new SoapClient('http://192.168.0.98/bb/ws/bb?wsdl',
                                        array(
                                                'login' => "user", 
                                                'password' => "pass",
                                                'trace' => 1,
                                                'exeption' => 1
                                            )
                                    );
            
            try { 
                echo "<pre>\n";
                    VarDumper::dump($client->test());
                echo "\n</pre>\n";
            } catch (SoapFault $exception) {
                echo $exception;
            }

            echo "<hr />";
            echo "<pre>";
            echo "Запрос :\n".htmlspecialchars($client->__getLastRequest()) ."\n"; 
            echo "Ответ:\n".htmlspecialchars($client->__getLastResponse())."\n";
            echo "</pre>";
   YVGroshkov
 
3 - 24.12.12 - 17:13
блин, что-то форма ссылки уродует :(
   Serginio1
 
4 - 24.12.12 - 17:14
Ну есть два подхода
XmlСтрока(ПеременнаяМассив);

Тип=ФабрикаXDTO.Тип(ИмяПространстваИмен,"Array");

Тип=ФабрикаXDTO.Создать(Тип,ПеременнаяМассив);
   Serginio1
 
5 - 24.12.12 - 17:17
СериализаторXDTO.ЗаписатьXDTO(ПеременнаяМассив)
   Serginio1
 
6 - 24.12.12 - 17:26
Кстати если ты посмотришь ПеременнаяМассив.Количество() то увидишь 8 элеменов.
Либо используй 
ПеременнаяМассив.[0]="Нулевой";

Либо просто 
ПеременнаяМассив = Новый Массив();
    ПеременнаяМассив.Добавить("Нулевой");
   Serginio1
 
7 - 24.12.12 - 17:30
Есть еще вариант
 
СписокОбъектов = Фабрика.Создать(Фабрика.Тип(\"http://v8.1c.ru/8.1/data/core\", \"Array\"));
 ТипЗначения=Фабрика.Тип(\"http://v8.1c.ru/8.1/data/core\",\"ValueListItemType\");
 ТипСтрока=Фабрика.Тип(\"http://www.w3.org/2001/XMLSchema\",\"string\");
 Стр=Фабрика.Создать(ТипСтрока,\"Мама мыла раму\");
СписокОбъектов.value.Добавить(стр);
   YVGroshkov
 
8 - 24.12.12 - 18:03
Блин, зачитался и забыл, что нужно обязательно возвращать XML для веб-сервисов.
   YVGroshkov
 
9 - 24.12.12 - 18:26
Serginio1, спасибо.
   Serginio1
 
10 - 24.12.12 - 18:27
(8) Не XML, а ОбъектXDTO, который потом сериализуется
 
 Рекламное место пустует
   Serginio1
 
11 - 24.12.12 - 18:27
10+ Поэтому XmlСтрока это ошибка. Каюсь.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует