Имя: Пароль:
1C
1С v8
Список в параметр операции веб-сервиса
,
0 john_ddd
 
18.06.12
12:11
Нужно передать в качестве параметра веб-сервиса список значений. Подскажите такое возможно? и как можно организовать?
1 Cube
 
18.06.12
12:18
(0) Делай XDTO-пакет с двумя типами объектов: "Номенклатура" и "СписокНоменклатуры".
У "Номенклутра" набирай свойства какие хочешь.
У "СписокНоменклатуры" свойство только одно - "Номенклатура" (та самая, про которую написал строкой выше) с "Минимальное количество" = 0 и "Максимальное количество" = -1.
2 art_zvuk
 
18.06.12
12:18
(0) возможно, но как не подскажу (сорри), сам сейчас разбираюсь...
3 john_ddd
 
18.06.12
12:24
(1)это понятно..
это вернуть список значений так можно...
а я хочу в качестве параметра передать список значений.
тут получается с двух сторон этот пакет описывать...описал, но не заработало(
4 Cube
 
18.06.12
12:31
(3) А, не заметил... Ну тогда всё тоже самое плюс у веб-сервиса добавляешь операцию, а к ней свойство с типом "СписокНоменклатуры".
5 john_ddd
 
18.06.12
12:38
(4)а ты пробовал так?
у меня так не получилось...как пакеты описать правильно? пространства имен? нужно же с двух сторон пакеты одинаковые создавать.
Вот что мне выдает когда передаю параметр список
{Форма.Форма.Форма(218)}: Ошибка при вызове метода контекста (Add_StatusZakaza)
    ОбъектXDTO = Сервис.Add_StatusZakaza(СписокСерий,"Произведен",Истина);
по причине:
Ошибка вызова операции сервиса:  {http://www.StatusZakaza.org}:StatusZakaza:Add_StatusZakaza()
по причине:
Неизвестная ошибка. Несоответствие типов XDTO:
Тип '{(http://www.StatusZakaza.org}SpisokTip' не найден
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
по причине:
Несоответствие типов XDTO:
Тип '{(http://www.StatusZakaza.org}SpisokTip' не найден
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
6 Cube
 
18.06.12
12:45
(5) Пробовал? Да у меня так работает!))
Пруфлинк: http://storage4.static.itmages.ru/i/12/0618/h_1340009101_7804304_6936d6e252.jpeg
7 john_ddd
 
18.06.12
12:52
(6)когда с клиента передаешь этот параметр ты его как описываешь?
я описывал так:
СерияТип = ФабрикаXDTO.Тип("(http://www.StatusZakaza.org", "SerialTip");
СписокСерийТип = ФабрикаXDTO.Тип("(http://www.StatusZakaza.org", "SpisokTip");
   
СписокСерий = ФабрикаXDTO.Создать(СписокСерийТип);
   
Серия = ФабрикаXDTO.Создать(СерияТип);
Серия.Serial = "123";
СписокСерий.Spisok.Добавить(Серия);
Серия = ФабрикаXDTO.Создать(СерияТип);
Серия.Serial = "321";
СписокСерий.Spisok.Добавить(Серия);
   
ОбъектXDTO = Сервис.Add_StatusZakaza(СписокСерий,"Произведен",Истина);
8 Cube
 
18.06.12
12:58
(7) Всё как у тебя, за исключением последней строки - что это?

Ты же описываешь функцию, привязанную к операции веб-сервиса? У меня бы вместо последней строки было:

Возврат СписокСерий;


Конечно, у тебя, видимо, связка 1С-1С, а у меня Android-1С...
9 john_ddd
 
18.06.12
13:14
(8)какой тип ты передаешь с андройда в 1с в параметне ListOfDocuments?
ОбъектXDTO = Сервис.Add_StatusZakaza(СписокСерий,"Произведен",Истина); в этой строке я как раз на клиенте вызываю операцию веб сервиса и в параметре передаю СписокСерий. А вернуть он мне должен строку.
10 Cube
 
18.06.12
13:29
(9) Фиг знает... Я XML-запрос к веб-сервису формирую вручную...
11 john_ddd
 
18.06.12
14:04
думаю ошибка у меня именно на клиенте...надо как-то список значений оформить по другому
12 john_ddd
 
18.06.12
14:08
может типы пакетов неправильно описал
13 Cube
 
18.06.12
14:10
(11) Добавь логирование, чего паришься?)
14 john_ddd
 
18.06.12
15:08
(13)а зачем оно мне? спасибо за беседу)
в принципе свою проблему решил с помощью Сериализацией...
1с - 1с проблем нет....могут пойти если клиент будет не 1с...пока не буду париться