Имя: Пароль:
1C
 
XDTO-пакеты как прочитать XML чтобы списки были списками?
0 RomaH
 
naïve
18.02.15
11:59
Данные = ПолучитьФабрикуXDTOОтветаСМО();
    
    Для каждого Пациент Из Данные.body.bill.patients.patient Цикл
        
        КодПациента = Пациент.patientcod;
        
        КолСтрокТЗНачало = ТЗ.Количество();
        
        Если ТипЗнч(Пациент.register_accounts.personal_account) = Тип("ОбъектXDTO") Тогда //хотя на самом деле есть схема загруженная в 1С (в пакеты XDTO) где написано, что этот узел - список
            
            ПерсСчет = Пациент.register_accounts.personal_account;


как загрузить XML, что бы для узла указывался правильный тип?
1 RomaH
 
naïve
18.02.15
12:00
Функция ПолучитьФабрикуXDTOОтветаСМО()
    
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.УстановитьСтроку(ТекстОтветаСМО);
    
    Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);

    Возврат Данные;
    
КонецФункции
2 Armando
 
18.02.15
12:02
А тип какой?
3 RomaH
 
naïve
18.02.15
12:28
тип чего?
4 vi0
 
18.02.15
12:40
ПолучитьФабрикуXDTOОтветаСМО - не верно назвал, метод ПрочитатьXML возвращает ОбъектXDTO
5 vi0
 
18.02.15
12:42
какая ошибка?
как ты указываешь признак списка?
6 RomaH
 
naïve
18.02.15
13:56
(5) признак списка указан в описании типа в пакете XDTO
7 RomaH
 
naïve
18.02.15
14:15
Функция ПолучитьУзелСписка(СписокXDTO,Индекс,ЭлементСписка)
    
    Если ТипЗнч(СписокXDTO) = Тип("ОбъектXDTO") И Индекс = 0 Тогда
        ЭлементСписка = СписокXDTO;
        Индекс = Индекс + 1;
        Возврат Истина;    
    КонецЕсли;
    
    Если ТипЗнч(СписокXDTO) = Тип("СписокXDTO") И Индекс < СписокXDTO.Количество() Тогда
        ЭлементСписка = СписокXDTO.Получить(Индекс);
        Индекс = Индекс + 1;
        Возврат Истина;
    КонецЕсли;
    Индекс = Индекс + 1;
    
    Возврат Ложь;
    
КонецФункции

        ПерсСчет = Неопределено;
        ИндексПС = 0;
        
        Пока ПолучитьУзелСписка(Пациент.register_accounts.personal_account,ИндексПС,ПерсСчет) Цикл


вот так сейчас
а надо, что бы список сразу списком был
8 Armando
 
18.02.15
14:20
(3) Тип вот этого Пациент.register_accounts.personal_account
9 vi0
 
18.02.15
15:31
(6) как именно ты указываешь что это список?
как у тебя проявляется ошибка? с каким сообщением?
10 RomaH
 
naïve
19.02.15
07:19
(8) блин - вообще это текст
но у меня есть схема в которой указано, что
.register_accounts.personal_account - это список

вот как эту схему применить к тексту?
11 RomaH
 
naïve
19.02.15
07:21
12 Записьдампа
 
19.02.15
08:09
Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Вторым параметром надо указать тип, который ты ожидаешь прочитать. Если он списочный, то будет тебе список.
13 Armando
 
19.02.15
15:49
Покажи XSD. Подозреваю, что там тип any
14 Serginio1
 
19.02.15
15:57
ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя));

Или ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ПолучитьXMLТип(ЧтениеXML))
15 RomaH
 
naïve
24.02.15
11:58
{Документ.Мед_ОтказыПоРеестрам.Форма.ФормаДокумента(465)}: Ошибка при вызове метода контекста (ПрочитатьXML)
    Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,Тип);
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://tfoms.yar.ru/BILL/6051}package - [5,11]
Проверка дополнительного свойства:
    форма: Элемент
    имя: body
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://tfoms.yar.ru/BILL/6051}package


вот такое вот выдает на таком XDTO:


<xs:schema xmlns:tns="http://tfoms.yar.ru/BILL/6051"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://tfoms.yar.ru/BILL/6051"; attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xs:complexType name="package">
        <xs:sequence>
            <xs:element name="body">
                <xs:complexType>
                    <xs:attribute name="version" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:enumeration value="6.05"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="protocol" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:enumeration value="Reestr"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="creator" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:minLength value="1"/>
                                <xs:maxLength value="120"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="telcreator" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:minLength value="5"/>
                                <xs:maxLength value="20"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="ogrn_mo" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:length value="13"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="kpp_mo" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:integer">
                                <xs:totalDigits value="9"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="year" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:gYear">
                                <xs:minInclusive value="2009"/>
                                <xs:maxInclusive value="2050"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="month" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:integer">
                                <xs:enumeration value="1"/>
                                <xs:enumeration value="2"/>
                                <xs:enumeration value="3"/>
                                <xs:enumeration value="4"/>
                                <xs:enumeration value="5"/>
                                <xs:enumeration value="6"/>
                                <xs:enumeration value="7"/>
                                <xs:enumeration value="8"/>
                                <xs:enumeration value="9"/>
                                <xs:enumeration value="10"/>
                                <xs:enumeration value="11"/>
                                <xs:enumeration value="12"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="date_1" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:date">
                                <xs:minInclusive value="2010-01-01"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>


и на таком вот XML:

<?xml version='1.0' encoding='Windows-1251'?>
<package>
  <body version="6.05" protocol="Reestr" creator="МИС v 0.1" telcreator="4852427050(110)" ogrn_mo="1047600412914" kpp_mo="760401001" year="2015" month="1" date_1="2015-02-04">
  </body>
</package>
16 RomaH
 
naïve
24.02.15
11:59
XDTO графически:
http://www.dropmocks.com/mIKkl2