Имя: Пароль:
1C
1С v8
Чтение атрибута в пространстве имен
0 shlyahtich
 
08.10.16
09:18
учусь....
Записываю на серевере xml файл в пространстве имен
второй процедурой его читаю, но не могу понять, почему эта стока не работает
ЗначПрочит = XMLЗначение(ИзXMLТипа(ТипXML),ЧтениеXML.Значение);


&НаСервере
Процедура ВыгрузитьВXMLНаСервереПоТипам(АдресФайлаВоВременномХранилище,УИД)
    Расширение = ".xml";
    ИмяФайла = ПолучитьИмяВременногоФайла(Расширение);
    Файл = Новый Файл(ИмяФайла);
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    НЕ Номенклатура.ЭтоГруппа";
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    
    ФайлЗаписьXML = Новый ЗаписьXML;
    ФайлЗаписьXML.ОткрытьФайл(ИмяФайла);
    ФайлЗаписьXML.ЗаписатьОбъявлениеXML();
    ФайлЗаписьXML.ЗаписатьНачалоЭлемента("Корневой");
    ФайлЗаписьXML.ЗаписатьАтрибут("ВыгружаемыйСправочник",XMLСтрока("Номенклатура"));
    ФайлЗаписьXML.ЗаписатьКомментарий("Выгрузка элементов справочника номерклатура");
    
    Для Каждого Стр Из ТЗ Цикл
        ФайлЗаписьXML.ЗаписатьНачалоЭлемента("Элемент",XMLСтрока("Элемент"));
        ТипXML = XMLТипЗнч(стр.Код);
        ПространствоИмен = ТипXML.URIПространстваИмен;
        ИмяТипа = ТипXML.ИмяТипа;
        ФайлЗаписьXML.ЗаписатьАтрибут("Код",ИмяТипа,XMLСтрока(стр.Код));
    КонецЦикла;
    
    ФайлЗаписьXML.ЗаписатьКонецЭлемента();
    ФайлЗаписьXML.Закрыть();
    
    Если Файл.Существует() Тогда
        ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
        АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УИД);
        УдалитьФайлы(ИмяФайла);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ТипДанныхПространствоИменПрочитатьНаСервере(Адрес,Расширение)
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ИмяВременногоФайла);

    Пока ЧтениеXML.Прочитать() Цикл
        Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                ТипXML = Новый ТипДанныхXML(ЧтениеXML.Имя,ЧтениеXML.URIПространстваИмен);
                ЗначПрочит = XMLЗначение(ИзXMLТипа(ТипXML),ЧтениеXML.Значение);
                Сообщить("атрибут: "+ ЧтениеXML.Имя+" = "+ЗначПрочит);
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    ЧтениеXML.Закрыть();
    
КонецПроцедуры
1 shlyahtich
 
08.10.16
09:38
up
2 shlyahtich
 
08.10.16
09:41
ИзXMLТипа(ТипXML) неопределено в процедуре чтения когда читаю атрибут
3 hhhh
 
08.10.16
09:47
пользуйтесь фабрикой xdto. Зачем вы вручную эти файлы лопатите?
4 shlyahtich
 
08.10.16
10:04
(3) я учусь. Следующий этап XDTO
5 hhhh
 
08.10.16
10:38
(4) как-то странно учитесь. В СКД зачем-то форму создаете, когда все без форм работают, здесь тоже фигня какая-то.
6 shlyahtich
 
08.10.16
12:11
(5) я не создаю в СКД формы. Я ответил в ветке как раз что пользоваться можно стандартными средствами вывода