Имя: Пароль:
1C
 
Десериализация объектов 1С в модуле web-сервиса (XDTO)
0 Evgenius
 
23.09.19
15:48
Доброго времени суток.
Есть объект ТаблицаЗначений, сериализованный в XML с помощью СериализатораXDTO и переданный в web-сервис в другой базе 1С.
Выглядит он примерно следующим образом (находится внутри другого элемента):

<c:value i:type="v83:ValueTable" xmlns:v83="http://v8.1c.ru/8.1/data/core">;
    <v83:column>
        <v83:Name>Порядок</v83:Name>
        <v83:ValueType>
            <v83:Type>v83:Null</v83:Type>
            <v83:Type>d:decimal</v83:Type>
            <v83:NumberQualifiers>
                <v83:Digits>0</v83:Digits>
                <v83:FractionDigits>0</v83:FractionDigits>
                <v83:AllowedSign>Any</v83:AllowedSign>
            </v83:NumberQualifiers>
        </v83:ValueType>
        <v83:Title>Порядок</v83:Title>
        <v83:Width>32</v83:Width>
    </v83:column>
    <v83:column>
        <v83:Name>Ссылка</v83:Name>
        <v83:ValueType>
            <v83:Type>d:string</v83:Type>
            <v83:StringQualifiers>
                <v83:Length>500</v83:Length>
                <v83:AllowedLength>Variable</v83:AllowedLength>
            </v83:StringQualifiers>
        </v83:ValueType>
    </v83:column>
    <v83:row>
        <v83:Value i:type="d:decimal">0</v83:Value>
        <v83:Value i:type="d:string">Товар</v83:Value>
    </v83:row>
    <v83:row>
        <v83:Value i:type="d:decimal">1</v83:Value>
        <v83:Value i:type="d:string">Работа</v83:Value>
    </v83:row>
</c:value>

Точно так же (в виде элементов value с разными типами) передается также куча другой информации. Тип конкретного объекта value (на который ссылается атрибут его i:type из пространства имен http://www.w3.org/2001/XMLSchema-instance) обычно определен в добавленных в конфигурацию пакетах XDTO.
Но при получении данных веб-сервисом у всех объектов value ПРАВИЛЬНО определяются типы XDTO, а вот тип данного объекта НЕ определяется, как "{http://v8.1c.ru/8.1/data/core}ValueTable";.
Он определяется, как "{http://www.w3.org/2001/XMLSchema}anyType";.

Почему это может происходить?

Спасибо.
1 Cyberhawk
 
23.09.19
15:50
Почему у тебя поле "Ссылка" 500 символов длиной?
2 Cyberhawk
 
23.09.19
15:51
А по теме забудь о штатной ХДТО-десериализции сериалованных ХДТО-сериализацией таблиц значений
3 Вафель
 
23.09.19
15:53
(2) почему нет?
4 Evgenius
 
23.09.19
15:54
(1) А какое это имеет значение для сериализации? :)
(2) Это, боюсь, не по теме. Вопрос я задаю конкретный.
5 Fragster
 
гуру
23.09.19
16:08
wsdl и пример пакета мы должны угадать?
6 Evgenius
 
23.09.19
17:54
(5) Объект, вроде бы, в приведенном xml описан исчерпывающе. Поскольку он относится к объектам самой 1С (к пространству имен http://v8.1c.ru/8.1/data/core) и сериализуется автоматически без создания какого-либо пакета XDTO, то и на стороне веб-сервиса пакет XDTO с описанием этого объекта не создавался. А нужно? Если что-то знаете - скажите)

Повторю, что с "собственными" объектами, описанными в пакетах XDTO, действительно проблем нет, только с таблицей значений.
7 Fragster
 
гуру
23.09.19
19:09
(6) при чем тут объект? я про запрос и ответ целиком, который ты, естественно, чем-нибудь типа fiddler или wireshark собрал. ну и wsdl - где?
8 Evgenius
 
23.09.19
19:33
(7) я уже говорил "спасибо" заранее, но скажу еще раз: спасибо.
Вопрос про wsdl навёл на мысль. Стандартный пакет "http://v8.1c.ru/8.1/data/core"; (или другой нужный) в список пакетов web-сервиса надо не забывать включать, иначе 1С даже "родные" объекты не распознает.
Теперь всё работает.