XDTO. Установить значение определенного типа

  1. 8 г. назад

    в дереве пакета XDTO есть тип объекта:
    ActiveOrHistoricCurrencyAndAmount

    у него есть свойство
    Ccy, тип = ActiveOrHistoricCurrencyCode

    ActiveOrHistoricCurrencyCode есть в типах значений, базовый тип = string

    как мне сформировать значение этого типа?

    структурныйТип = МояФабрикаXDTO.Тип(СвойствоXDTO.Тип.URIПространстваИмен, СвойствоXDTO.Тип.Имя);//ActiveOrHistoricCurrencyAndAmount
    ОбъектXDTO = МояФабрикаXDTO.Создать(структурныйТип);
    
    ОбъектXDTO.Ccy = ??
  2. А просто стринги не ест?

    Ответы: (2)
  3. sda553 А просто стринги не ест?

    неа.

  4. Экспортни эту фабрику в xsd и выложи глянуть

    Ответы: (5)
  5. сделал даже так:
    СвойствоXDTO.Тип.URIПространстваИмен = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.06"
    СвойствоXDTO.Тип.Имя = "ActiveOrHistoricCurrencyCode"
    Значение = 111

    структурныйТип = МояФабрикаXDTO.Тип(СвойствоXDTO.Тип.URIПространстваИмен, СвойствоXDTO.Тип.Имя);
    ЗначениеВозврат = МояФабрикаXDTO.Создать(структурныйТип,Строка(Значение));
    

    пишет ошибку
    Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.Amt.InstdAmt.Ccy...{Форма.Форма.Форма(1925)}: Ошибка при вызове метода контекста (Создать): Несоответствие типов XDTO: Ошибка проверки данных XDTO:
    Значение: '111' не соответствует простому типу: {urn:iso:std:iso:20022:tech:xsd:pain.001.001.06}ActiveOrHistoricCurrencyCode
    Значение не соответствует образцу

    Ответы: (14)
  6. sda553 Экспортни эту фабрику в xsd и выложи глянуть

    вот: pain_001_001_06.rar

    Ответы: (12)
  7. нужно создать объект ActiveOrHistoricCurrencyAndAmount

  8. вот код, который пытаюсь выполнить:

    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
        ДвоичныеДанныеXSD = ОбработкаОбъект.получитьмакет("pain_001_001_06_xsd");	
        ВременныйФайлXSD = ПолучитьИмяВременногоФайла("xsd");
        ДвоичныеДанныеXSD.Записать(ВременныйФайлXSD);
        
        
        МояФабрикаXDTO = СоздатьФабрикуXDTO(ВременныйФайлXSD); 
        
        
        Для каждого пакетXDTO ИЗ МояФабрикаXDTO.Пакеты цикл
            URIПространстваИмен 	 =  пакетXDTO.URIПространстваИмен ;
            Если URIПространстваИмен  = "http://www.w3.org/2001/XMLSchema" Тогда продолжить конецЕсли;//типовые не нужны
            
            
            Для каждого  ТипЗначенияXDTO ИЗ пакетXDTO  цикл	
                Если ТипЗначенияXDTO.имя <> "ActiveOrHistoricCurrencyAndAmount"	 тогда продолжить конецЕсли;
                структурныйТип = МояФабрикаXDTO.Тип(ТипЗначенияXDTO.URIПространстваИмен, ТипЗначенияXDTO.Имя);
                ОбъектXDTO = МояФабрикаXDTO.Создать(структурныйТип);
                
                Свойства = ОбъектXDTO.Свойства(); 
                Для каждого свойство из свойства цикл
                    Попытка
                        ОбъектXDTO[свойство.имя] = МояФабрикаXDTO.Создать(свойство.Тип,"111");
                    Исключение
                        Сообщить(описаниеОшибки());
                    КОнецПопытки;
        
                    
                КОнецЦикла;
                
                
            КонецЦИкла;	
        КонецЦИкла;
    
  9. ошибка:
    {Форма.Форма.Форма(2046)}: Ошибка при вызове метода контекста (Создать): Несоответствие типов XDTO: Ошибка проверки данных XDTO:
    Значение: '111' не соответствует простому типу: {urn:iso:std:iso:20022:tech:xsd:pain.001.001.06}ActiveOrHistoricCurrencyCode
    Значение не соответствует образцу

    Ответы: (10)
  10. тип = МояФабрикаXDTO.Тип("urn:iso:std:iso:20022:tech:xsd:pain.001.001.06", "ActiveOrHistoricCurrencyCode");
        ActiveOrHistoricCurrencyCodeXDTO = МояФабрикаXDTO.Создать(тип);
        ActiveOrHistoricCurrencyCodeXDTO = "USD";
        тип = МояФабрикаXDTO.Тип("urn:iso:std:iso:20022:tech:xsd:pain.001.001.06",	ActiveOrHistoricCurrencyAndAmount);
        ActiveOrHistoricCurrencyAndAmountXDTO = МояФабрикаXDTO.Создать(тип);
        ActiveOrHistoricCurrencyAndAmountXDTO.ccy = ActiveOrHistoricCurrencyCodeXDTO;
  11. Stim Значение: '111' не соответствует простому типу: {urn:iso:std:iso:20022:tech:xsd:pain.001.001.06}ActiveOrHistoricCurrencyCode

    Судя по твоей схеме, там должна быть строка из трех символов, где разрешены только символы A-Z, без цифр

    Ответы: (11)
  12. sda553 Судя по твоей схеме, там должна быть строка из трех символов, где разрешены только символы A-Z, без цифр

    да, точно, спасибо

  13. (5)

        <xs:simpleType name="ActiveOrHistoricCurrencyCode">
            <xs:restriction base="xs:string">
                <xs:pattern value="[A-Z]{3,3}"/>
            </xs:restriction>
        </xs:simpleType>
    
    
  14. http://www.xe.com/iso4217.php

  15. Stim Значение не соответствует образцу

    ведь чёрным по белому написал, в чём проблема.
    нужно только прочитать и свериться с паттерном

    Ответы: (16)
  16. перл в схеме увидел

        <xs:simpleType name="TrueFalseIndicator">
            <xs:restriction base="xs:boolean"/>
        </xs:simpleType>
    
    
  17. andrewks ведь чёрным по белому написал, в чём проблема.
    нужно только прочитать и свериться с паттерном

    в правилах использования xsd просто было указано, что там сумма должна выводиться

    Ответы: (17)
  18. (16) это для элемента, наверное. а в ccy указывается код валюты, в которой указана сумма

или зарегистрируйтесь чтобы ответить!