Имя: Пароль:
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С даже "родные" объекты не распознает.
Теперь всё работает.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn