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

Ограничение составного типа в пакете XDTO

Ограничение составного типа в пакете XDTO
Я
   Fragster
 
20.07.20 - 11:20
Можно ли как-нибудь ограничить список типов для полей составного типа? Сейчас использую anytype/anysimpletype, но хотелось бы ограничить списком нескольких типов из пакета.
   Йохохо
 
1 - 20.07.20 - 11:22
ЭДО, формирование XML по формату 820@, вопросы

там вспоминали про xs:choice, не оно?
   Fragster
 
2 - 20.07.20 - 11:42
Это не совсем то, это про наличие свойств у объекта, а не про их тип. Ну и как это сделать не внешним редактором - не совсем очевидно.
При этом даже в "экспорт схемы конфигурации" не нашел ограничений для полей составного типа. Тупо anyType.
   Serginio1
 
3 - 20.07.20 - 13:07
Вообщето в C# такой код транслируется как свойство 


<xs:element name="Documents">
    <xs:annotation>
      <xs:documentation>Документы от организации</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Owner" type="ns:SenderInfo">
          <xs:annotation>
            <xs:documentation>Организация, которая предоставляет документы</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="Document" minOccurs="1" maxOccurs="1"  nillable="0" type="ns:DocBody">
          <xs:annotation>
            <xs:documentation>Документ</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="Version" type="c:NoEmptyString" default="1.0"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DocBody">
    <xs:choice minOccurs="1" maxOccurs="1" id="name">
      <xs:element name="WayBill" type="wb:WayBillType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="Ticket" type="tc:TicketType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="WayBillAct" type="wa:WayBillActType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="ConfirmTicket" type="ctc:ConfirmTicketType" minOccurs="1" maxOccurs="1"/>



 public partial class DocBody
    {
        
        private object itemField;
        
        private ItemChoiceType itemElementNameField;
        
        /// <remarks/>

        [System.Xml.Serialization.XmlElementAttribute("ActChargeOn", typeof(ActChargeOnType))]
        [System.Xml.Serialization.XmlElementAttribute("ActChargeOnShop_v2", typeof(ActChargeOnShopType_v2))]
        [System.Xml.Serialization.XmlElementAttribute("ActChargeOn_v2", typeof(ActChargeOnType_v2))]
        ........
  [System.Xml.Serialization.XmlElementAttribute("WayBillAct_v3", typeof(WayBillActType_v3))]
        [System.Xml.Serialization.XmlElementAttribute("WayBill_v2", typeof(WayBillType_v2))]
        [System.Xml.Serialization.XmlElementAttribute("WayBill_v3", typeof(WayBillType_v3))]
        [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemElementName")]
        public object Item
        {
            get
            {
                return this.itemField;
            }
            set
            {
                this.itemField = value;
            }
        }
   Fragster
 
4 - 20.07.20 - 13:18
короче, для примера:
вот схема https://gist.github.com/FragsterAt/d8c107e937dbfa9e40985d748dfbd8ec
нужно, чтобы Список.Значение мог быть только типа СсылкаЗначение1 или СсылкаЗначение2 и не могло быть СсылкаЗначение3
   Serginio1
 
5 - 20.07.20 - 13:54

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