Имя: Пароль:
1C
1С v8
Необязательный параметр web сервис
,
0 NWsFF
 
15.10.13
14:11
Как передать необязательный параметр методу веб сервиса
getAll(id<int>, status<int, nillable>)
передаю вместо status null, неопрделено, просто оставляю getAll(id,)
пишет ошибку
Ошибочный порядок записи XML
1 Serginio1
 
15.10.13
14:19
Передавай неопределено. Необязательный это минимальное количество 0
2 NWsFF
 
15.10.13
14:22
(1) Передаю неопределено
тоже Ошибочный порядок записи XML
Передаю
ТипInt = Фабрика.Тип("http://www.w3.org/2001/XMLSchema";, "int");
    ПустойInt = Фабрика.Создать(ТипInt, 0);
думает на 0 что это параметр 0
3 Serginio1
 
15.10.13
14:28
Ты показал описание WSDL с описанием.
Ну и не фабрика.Тип а Прокси.Фабрика.Тип, но это большой роли не играет
4 NWsFF
 
15.10.13
14:29
(3)Ты показал описание WSDL с описанием.
не понял
5 NWsFF
 
15.10.13
14:30
как заставить 1с записать в сообщение нечто типа
<tt:type xsi:nil="true"></tt:type>
6 Serginio1
 
15.10.13
14:31
попрбуй
Фабрика=Прокси.Фабрика;
ТипNull=Фабрика.Тип("http://www.w3.org/2001/XMLSchema","anySimpleType";);
        СсылкаNull=Фабрика.Создать(ТипNull);
(4) Покажи описание функции в WSDL
7 Serginio1
 
15.10.13
14:33
Например    
        Фабрика=ФабрикаXDTO;
        
    ТипNull=Фабрика.Тип("http://www.w3.org/2001/XMLSchema","anySimpleType";);
    СсылкаNull=Фабрика.Создать(ТипNull);

    Тип=Фабрика.Тип("http://www.TestShema.ru/sample","getCurrencyList";);
    Объект=Фабрика.Создать(Тип);
    Объект.apiId="demo_api";
    Объект.login="[email protected]";
    Объект.pass="demo";
    Объект.idList=Неопределено;//СсылкаNull;
    Сообщить("Привет "+Объект.idList);

так и так будет в структуре idList показывать
<idList xsi:nil="true"/>
8 kiruha
 
15.10.13
14:38
(0)
Что есть необязательный параметр ???
Необязательный параметр может быть только у параметра сложного типа
Формируешь этот тип и предаешь в качестве параметра
9 kiruha
 
15.10.13
14:39
В 1С допускается максимум "возможно пустое" , т.е "" для string
10 NWsFF
 
15.10.13
14:40
11 NWsFF
 
15.10.13
14:45
(8) делал так начинает ругаться что параметров мало
12 kiruha
 
15.10.13
14:46
вебсервис внешний или 1С ?
13 Serginio1
 
15.10.13
14:46
Ну там другое

-<wsdl:message name="getEvents">
<wsdl:part name="sessionId" element="tns:sessionId"> </wsdl:part>
<wsdl:part name="objectId" element="tns:objectId"> </wsdl:part><wsdl:part name="type" element="tns:type"> </wsdl:part><wsdl:part name="timeBegin" element="tns:timeBegin"> </wsdl:part><wsdl:part name="timeEnd" element="tns:timeEnd"> </wsdl:part></wsdl:message>
14 kiruha
 
15.10.13
14:47
Если 1С ставь пробел, если внешний - формируй входной параметр, заполняй его свойства , необязательный параметр не заполняешь
15 kiruha
 
15.10.13
14:49
пробел это если галочка "возможно пустое" и тип string
16 NWsFF
 
15.10.13
14:52
(14) 1c не хочет брать комплексный тип как параметр
http://yadi.sk/d/5Qj5j9GIAyMjv
вот обработка
17 NWsFF
 
15.10.13
14:53
описание getEvents
String  sessionId  -  идентификатор
сессии,  полученный  во  время

авторизации
Integer  objectId  -  идентификатор
ТС.  Необязательный  параметр,
если  идентификатора  нет,  то
возвращаются  данные  для  всех
ТС
Integer  type  –  тип  события,
необязательный.  Если  тип  события
не  задан,  возвращается  список
событий всех типов
Unixtimestamp  timeBegin  (секунды)
– время начала интервала
Unixtimestamp  timeEnd  (секунды)  -время окончания интервала
18 Serginio1
 
15.10.13
14:56
Вместо всех этих параметров пропиши неопределено и все будет хорошо.

Смотри описание параметров.
19 Serginio1
 
15.10.13
14:57
<xs:element name="sessionId" type="xs:string" nillable="true"/><xs:element name="objectId" type="xs:int" nillable="true"/><xs:element name="timeBegin" type="xs:long" nillable="true"/><xs:element name="timeEnd" type="xs:long" nillable="true"/>


Необязательный параметр это где у типа минимальное количество 0, максимальное количетво 1
20 NWsFF
 
15.10.13
14:59
(18) я так делал, писал неопределено, ругается Ошибочный порядок записи XML
21 kiruha
 
15.10.13
15:00
Забей в Soap Gui свой веб сервис - там сразу видны все параметры.
Параметр это не только простой тип - это может быть сложная иерархическая цепочка
22 kiruha
 
15.10.13
15:00
В 1С цепочка формируется через XDTO
23 Serginio1
 
15.10.13
15:01
(20) То есть для всех параметров?
24 NWsFF
 
15.10.13
15:02
(19) я кажется тебя понял, в оболочке 1с у видел "может быть пустым", это <>  nillable="true", верно, тоесть ошибка в схеме?
25 NWsFF
 
15.10.13
15:03
(23) первый параметр там обязательный, как и последние 2
26 Serginio1
 
15.10.13
15:03
У табя 5 параметров.
то есть вызов должен быть таким
Прокси.getEvents(sessionId ,неопределено,неопределено,неопределено,неопределено)
27 NWsFF
 
15.10.13
15:05
2 последних тоже обязательные, но суть ведь не в том, я полагаю что в схеме у параметров просто не указано свойство nillable
28 Serginio1
 
15.10.13
15:05
(25) Они у тебя по схеме все nillable
29 Serginio1
 
15.10.13
15:06
(27) В схеме указаны смотри 19.
Ты в конфигурацию схему загружал? Там у всех параметров стоит возможно пустое истина
30 NWsFF
 
15.10.13
15:09
да загружал, стоит , а в тексте схемы это не нашел, но тем неменее неопределно он не принимает
я выложил обработку с тестом, запусти потрать минуту ткни меня носом , я походу туплю
31 NWsFF
 
15.10.13
15:09
32 NWsFF
 
15.10.13
15:11
<wsdl:message name="getEvents">
<wsdl:part element="tns:sessionId" name="sessionId"></wsdl:part>
<wsdl:part element="tns:objectId" name="objectId"></wsdl:part>
<wsdl:part element="tns:type" name="type"></wsdl:part>
<wsdl:part element="tns:timeBegin" name="timeBegin"></wsdl:part>
<wsdl:part element="tns:timeEnd" name="timeEnd"></wsdl:part>
</wsdl:message>

Это ведь параметры метода, здесь не должно быть nillable?
33 NWsFF
 
15.10.13
15:13
увидел что в определении типов стоит nillable
34 kiruha
 
15.10.13
15:14
<xs:element name="sessionId" nillable="true" type="xs:string"/>
35 NWsFF
 
15.10.13
15:17
Обработку кто нить скачал, она простая и ничего не требует от конфы, дайте мне в щщи
36 kiruha
 
15.10.13
15:21
В Соап гуи

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:anal="http://omnicomm.ru/analyticalserver">;
   <soapenv:Header/>
   <soapenv:Body>
      <anal:sessionId>?</anal:sessionId>
      <anal:objectId>?</anal:objectId>
      <anal:type>?</anal:type>
      <anal:timeBegin>?</anal:timeBegin>
      <anal:timeEnd>?</anal:timeEnd>
   </soapenv:Body>
</soapenv:Envelope>

т.е. все параметры обязательны

Нормально отработал
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:anal="http://omnicomm.ru/analyticalserver">;
   <soapenv:Header/>
   <soapenv:Body>
      <anal:sessionId>1</anal:sessionId>
      <anal:objectId>1</anal:objectId>
      <anal:type></anal:type>
      <anal:timeBegin>0</anal:timeBegin>
      <anal:timeEnd>0</anal:timeEnd>
   </soapenv:Body>
</soapenv:Envelope>
37 kiruha
 
15.10.13
15:22
anal это 5 )
38 NWsFF
 
15.10.13
15:23
(37) я тоже оценил )
39 NWsFF
 
15.10.13
15:23
в анал гуи не интересно интересны выкаблуки 1С
40 kiruha
 
15.10.13
15:25
Так тоже самое
Прокси.getEvents(sessionId ,objectId,"",0,0)
41 NWsFF
 
15.10.13
15:29
1С:Предприятие 8.2 (8.2.16.368)
не работает

{Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (getEvents)
        события = Service.getEvents(sign.sessionID, id, "", Дата(2013,9,1) - базоваяДата, ТекущаяДата() - базоваяДата);
по причине:
Несоответствие типов (параметр номер '3')
42 NWsFF
 
15.10.13
15:30
(40) у тебя какая платформа?
43 NWsFF
 
15.10.13
15:30
или ты не пробовал?
44 Serginio1
 
15.10.13
15:32
(41) Там проблема может быть в ответе. Посмотри, что реально возвращает. Например через SoapUI или v8: Сторонний Веб сервис, XDTO
45 kiruha
 
15.10.13
15:33
Прокси.getEvents(sessionId ,objectId,0,0,0)
46 kiruha
 
15.10.13
15:34
<xs:element name="type" nillable="true" type="xs:int"/>
47 NWsFF
 
15.10.13
15:38
(45) так он понимает 0 как тип события не то что нужно
48 NWsFF
 
15.10.13
15:39
(41) Не посмотрел сниффером там и до вопроса дело не дошло, 1с не смогло сформировать его
49 NWsFF
 
15.10.13
15:39
(41)->(44)
50 kiruha
 
15.10.13
15:40
Неопределено не работает ?
Пусть сформирует значение XDTO type пустое и его передаст
51 NWsFF
 
15.10.13
15:41
Ладно, ребят голова совсем не соображает уже сегодня, попробую завтра поразбираться, всем спасибо

(50)
Пусть сформирует значение XDTO type пустое и его передаст

на сколько я пооксперементировал пустое XDTO  = неопределно
52 kiruha
 
15.10.13
15:58
Ну если у тебя в конфе есть схема

typeТипЗначенияXDTO=ФабрикаXDTO.Тип(ПространствоИмен,"type");
typeПустоеЗначениеXDTO=ФабрикаXDTO.Создать(typeТипЗначенияXDTO);
53 Serginio1
 
15.10.13
16:02
(49) В 41 не проходит, а
Service.getEvents(sign.sessionID, id, неопределено, Дата(2013,9,1) - базоваяДата, ТекущаяДата() - базоваяДата);
пройдет.
Там ошибки разные.
А вот возвращаемый тип

xs:complexType name="responseEntryWrapper">-<xs:sequence><xs:element name="return" type="xs:anyType" minOccurs="0"/></xs:sequence>


Если определить нулями то возвращает

eventsResponseEntry

А вот оно наследуется от другого.

Кстати эту проблему уже решали
v8: вебСервис
54 kiruha
 
15.10.13
16:04
Через typeПустоеЗначениеXDTO по крайней мере не будет ошибки типов.
55 kiruha
 
15.10.13
16:05
Но если схемы нет в конфе - придется создавать свою фабрику
56 NWsFF
 
15.10.13
17:35
(53) Да не проходит я 10 раз попробовал
По ссылке, это одна и таже проблема, которые мы решили уже, она была на стороне сервиса, а вот продолжение проблем уже у самой 1с, завтра попробую на партнерском поспрашивать
57 Jaap Vduul
 
15.10.13
17:46
(56)
Я твой сервис из c# потрогал, передав null в параметр type: в итоге в objectEvents пусто, а в error "Bad event type"
58 NWsFF
 
15.10.13
18:40
(57) 2 3 параметры должны быть null, c питона у меня тоже работает, а вот с 1с нет
59 Serginio1
 
15.10.13
19:02
(58) Что возвращает? Сейчас какой то пакет {.} появился
60 Serginio1
 
15.10.13
19:06
<xs:import namespace=","/>
61 NWsFF
 
15.10.13
19:10
(59) Сейчас не могу проверить, возможно с сервисом что-то делают, но днем в питоне возвращалась структура со списком событий
(60) что это?
62 kiruha
 
16.10.13
09:59
Ну что там с необязательным параметром ?
Даже интересно, почему Неопределено не работает
63 Serginio1
 
16.10.13
10:15
(61) Посмотри WSDL
Независимо от того, куда вы едете — это в гору и против ветра!