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 указывается код валюты, в которой указана сумма

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