Имя: Пароль:
1C
1С v8
XDTO пакет (типы значений)
0 zoran
 
06.12.21
13:48
Доброго дня, уважаемые форумчане!
Обращаюсь за советом к специалистам по XDTO пакетам, т.к. не работал с XDTO пакетами, а поиск в интернете ничего не дал.
Есть схема документа, в котором одно из свойств объекта document описано следующим образом: <xs:element name="status" type="documentStatus" minOccurs="0"/>. Далее описание других полей. В конце:
<xs:simpleType name="documentStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NEW"/>
            <xs:enumeration value="PROCESSED"/>
            <xs:enumeration value="DELETED"/>
        </xs:restriction>
    </xs:simpleType>
Импортировал данную схему в XDTO пакет. В разделе "Типы значений" появился documentStatus -> Перечисление со значениями (NEW, PROCESSED, DELETED).
В свойстве status объекта document выбрал этот самый тип documentStatus.

Далее прописываю в коде:
ТипНакладнаяXDTO = ФабрикаXDTO.Тип("http://iiko.ru/xml/iiko_outgoinginvoice", "document");
НакладнаяXDTO    = ФабрикаXDTO.Создать(ТипНакладнаяXDTO);

НакладнаяXDTO.documentNumber = СтруктураНакладной.Номер;
НакладнаяXDTO.dateIncoming   = СтруктураНакладной.Дата;

Вопрос заключается в том, как присваивать значение status?
НакладнаяXDTO.status = ???

Буду признателен за помощь.
1 azernot
 
06.12.21
13:58
НакладнаяXDTO.status = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://iiko.ru/xml/iiko_outgoinginvoice", "documentStatus"), XMLСтрока(СтруктураНакладной.СтатусНакладной));
2 azernot
 
06.12.21
14:00
+(1) Где XMLСтрока(СтруктураНакладной.СтатусНакладной) = NEW, PROCESSED, DELETED
3 PROGRAM1S
 
06.12.21
14:31
(0) Так как базовый тип string, то можно просто указать строку:
НакладнаяXDTO.status = "NEW";

или явно создать тип значения:
Тип = ФабрикаXDTO.Тип("http://iiko.ru/xml/iiko_outgoinginvoice", "documentStatus");
Значение = ФабрикаXDTO.Создать(Тип, "NEW");
НакладнаяXDTO.status = Значение;
4 zoran
 
06.12.21
14:41
Да, у documentStatus базовый тип string, только не http://iiko.ru/xml/iiko_outgoinginvoice , а http://www.w3.org/2001/XMLSchema.

Пишу:

НакладнаяXDTO.status = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "documentStatus"), "PROCESSED");

Выдает: Ошибка при вызове метода контекста (Создать): Несоответствие типов (параметр номер '1')
5 azernot
 
06.12.21
15:10
(4) А синтаксис-помощник у вас украли?
http://iiko.ru/xml/iiko_outgoinginvoice - это пространство имен.
У вас вот этот тип
<xs:simpleType name="documentStatus">
    <xs:restriction base="xs:string">
        <xs:enumeration value="NEW"/>
        <xs:enumeration value="PROCESSED"/>
        <xs:enumeration value="DELETED"/>
    </xs:restriction>
</xs:simpleType>

В каком пространстве имён определён?
6 zoran
 
06.12.21
15:26
(5) Виноват, я еще не разобрался с этими пакетами, поэтому думал, что тут "ФабикаXDTO.Тип" указывается тип из свойства. Поменял на http://iiko.ru/xml/iiko_outgoinginvoice - создалось без ошибок.
7 zoran
 
07.12.21
09:09
Всем откликнувшимся большое спасибо.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn