Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

XDTO пакет (типы значений)

XDTO пакет (типы значений)
Я
   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 = ???

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


или явно создать тип значения:
Тип = ФабрикаXDTO.Тип("http://iiko.ru/xml/iiko_outgoinginvoice", "documentStatus");
Значение = ФабрикаXDTO.Создать(Тип, "NEW");
НакладнаяXDTO.status = Значение;
   zoran
 
4 - 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')
   azernot
 
5 - 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>

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

Список тем форума
 
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.