Имя: Пароль:
1C
1С v8
Параметр функции веб сервиса не получает нужный тип XDTO
0 alp2003
 
23.11.22
12:57
Добрый день!
Есть функция веб сервиса описанная так:
[code]
Функция SetTaskData(TaskData)
[/code]
тип TaskData - Объект XDTO из пакета "artasks_XDTO"

Подскажите, почему в внутри функции Тип параметра TaskData.Тип()= {http://www.w3.org/2001/XMLSchema}anyType, а если создать такой объект через ФабрикуXDTO


ТипЗадача = ФабрикаXDTO.Тип("artasks_XDTO","TaskData");
xdtoЗадача = ФабрикаXDTO.Создать(ТипЗадача);


тогда его тип будет xdtoЗадача.Тип() = {artasks_XDTO}TaskData.
Может в XML не все параметры указаны?

В запросе к веб сервису передается вот такой XML:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="ws.ar-mobile-tasks" xmlns:art="artasks_XDTO">
    <soap:Header/>
    <soap:Body>
        <ws:SetTaskData>
            <ws:TaskData>
                <art:orgCode>33333</art:orgCode>
                <art:dbID>1668058686</art:dbID>
                <art:author>07bb51fc-a773-489a-91e6-8b03712a9120</art:author>
                <art:UID>1668058686_1669012840</art:UID>
                <art:parentTaskUID/>
                <art:name>Тест с набл и тэгами</art:name>
                <art:taskStatus>080e35c6-5adf-11e5-9bad-0025909346cf</art:taskStatus>
                <art:tags>
                    <art:tag>b4a60dd7-2a54-11eb-b009-005056b6af6b</art:tag>
                    <art:tag>8883dd1b-588a-11e5-9bad-0025909346cf</art:tag>
                </art:tags>
                <art:executor>30740b48-5aa3-11ed-930f-00155d0b7f07</art:executor>
                <art:director>30740b48-5aa3-11ed-930f-00155d0b7f07</art:director>
                <art:observers>
                    <art:observer>3a121311-da60-11eb-92f1-00155d0b1a00</art:observer>
                    <art:observer>30740b48-5aa3-11ed-930f-00155d0b7f07</art:observer>
                </art:observers>
                <art:coexecutors/>
                <art:endDate>1668988800</art:endDate>
                <art:controlDate>1669042800</art:controlDate>
                <art:code/>
                <art:description/>
                <art:settingsJournal>false</art:settingsJournal>
                <art:settingsCard>false</art:settingsCard>
                <art:settingsPrevent>false</art:settingsPrevent>
                <art:history/>
                <art:checkList/>
            </ws:TaskData>
        </ws:SetTaskData>
    </soap:Body>
</soap:Envelope>
1 Fragster
 
гуру
23.11.22
13:19
потому что криво указан тип параметра в описании метода
2 Fragster
 
гуру
23.11.22
13:20
или тип TaskData сделан наследником anytype
3 alp2003
 
23.11.22
13:25
Так ведь TaskData корневой тип в пакете artasks_XDTO. А от кого он должен наследоваться?
В пакете XDTO сейчас у него не указан базовый тип.
4 alp2003
 
23.11.22
13:39
А в описании функции тип: TaskData (artasks_XDTO)
5 Fragster
 
гуру
23.11.22
14:24
Если было динамическое обновление, нужно перезапустить веб сервер
6 alp2003
 
24.11.22
09:13
Перезапуск веб сервера не помог.
Всё равно тип TaskData anytype и пространство имен "artasks_XDTO" не подтягивается.
7 alp2003
 
24.11.22
09:15
Может нужно "копать" в cторону схемы XML?
8 Fragster
 
гуру
24.11.22
15:49
А в свойствах веб сервиса на вкладке "прочее" указаны нужные пакеты XDTO?
9 Fragster
 
гуру
24.11.22
15:50
кстати, видел артефакты, если пространство имен не было похоже на обычный url, типа "http://ar.tasks"
10 alp2003
 
30.11.22
22:55
Разобрался. Всё оказалось просто... (Надо внимательное изучать доки)

При передаче в веб сервис важно:
1. Соблюдать порядок тегов
2. XML чувствителен к регистру

Вот еще не понял, если указано что поле может быть пустым "Истина" можно ли его пропускать (вообще не указывать) в xml ?
11 Fragster
 
гуру
01.12.22
15:26
>Соблюдать порядок тегов

нужно если тип "последовательный", но если нет то там другие приколы, лучше пусть таким будет
если использовать сериализаторы от 1с или, например php soap client, то они сериализуют в нужном порядке все свойства

>XML чувствителен к регистру
замечание то же, что и выше. но вообще ЕМНИП- не чувствителен

>если указано что поле может быть пустым "Истина" можно ли его пропускать (вообще не указывать) в xml ?
нет, это значит что там может быть "неопределено", а именно пустой (самозакрытый) тег со специальным атрибутом, типа <author xsi:nil="true"/>
12 Fragster
 
гуру
01.12.22
15:27
чтобы можно было пропуска теги у него должно быть минимальное количество в 0 установлено
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс