Имя: Пароль:
1C
1С v8
Ограничение составного типа в пакете XDTO
0 Fragster
 
гуру
20.07.20
11:20
Можно ли как-нибудь ограничить список типов для полей составного типа? Сейчас использую anytype/anysimpletype, но хотелось бы ограничить списком нескольких типов из пакета.
1 Йохохо
 
20.07.20
11:22
ЭДО, формирование XML по формату 820@, вопросы
там вспоминали про xs:choice, не оно?
2 Fragster
 
гуру
20.07.20
11:42
Это не совсем то, это про наличие свойств у объекта, а не про их тип. Ну и как это сделать не внешним редактором - не совсем очевидно.
При этом даже в "экспорт схемы конфигурации" не нашел ограничений для полей составного типа. Тупо anyType.
3 Serginio1
 
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;
            }
        }
4 Fragster
 
гуру
20.07.20
13:18
короче, для примера:
вот схема https://gist.github.com/FragsterAt/d8c107e937dbfa9e40985d748dfbd8ec
нужно, чтобы Список.Значение мог быть только типа СсылкаЗначение1 или СсылкаЗначение2 и не могло быть СсылкаЗначение3
5 Serginio1
 
20.07.20
13:54