Имя: Пароль:
1C
 
выгрузка данных в xml
0 falselight
 
31.05.19
08:13
Решил сделать и разобрать пример выгрузки в xml.
Если есть таблица на форме.
Как правильно её выгрузить в xml. Какие обязательные конструкции?
1 Василий Алибабаевич
 
31.05.19
08:18
(0) Вот это обязательно:
ЗаписьXML = Новый ЗаписьXML;

ЗЫ. И не нужно благодарности. )))
2 ildary
 
31.05.19
08:38
(1) ну это уже полдела, осталось только записать.
3 d4rkmesa
 
31.05.19
08:41
Знакомый админ изучает 1С, надо его приколоть, как можно зайти в профессию и оставаться в ней. =)
4 Сияющий в темноте
 
31.05.19
08:47
5А что мы получаем на выходе?
например,в таблице элемент справочника,мы в файл будем писать ссылку на него или все поля элемента?
5 falselight
 
31.05.19
08:58
Вот пример

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл("d:\Temp\Test.XML", "UTF-8");
    ЗаписьXML.ЗаписатьОбъявлениеXML();                  
    ЗаписьXML.ЗаписатьНачалоЭлемента("Организации");
    Выборка = Справочники.Организации.Выбрать();
    Пока Выборка.Следующий() Цикл  
        ЗаписьXML.ЗаписатьНачалоЭлемента("Организация");
        ЗаписьXML.ЗаписатьАтрибут("Код",Строка(Выборка.Код));
        ЗаписьXML.ЗаписатьАтрибут("Наименование",Строка(Выборка.Наименование));
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();


Между Пока - Цикл
      КонецЦикла

Можно заключать любые атрибуты?

Что все же будет обязательное? И необходимое????

Вроде как там используются углубленные структуры? Хотелось бы подробностей.
6 sqr4
 
31.05.19
09:21
(5) Это все)
7 ДенисЧ
 
31.05.19
09:45
(5) "Хотелось бы подробностей"

Хочешь я научу тебя великому искусству доставания чистого листа бумаги формата А4 и написанию на нём букв на русском языке?
8 falselight
 
31.05.19
09:49
(7) Для чего это?
9 falselight
 
31.05.19
09:49
(?+) Я про xml !
10 ДенисЧ
 
31.05.19
09:49
(8) Тебе оно пригодится в жизни, однозначно...
11 falselight
 
31.05.19
09:51
(10) Ну давай, послушаю тебя. Выскажись.
12 falselight
 
31.05.19
13:00
Вот эта выгрузка уходит далеко в право.
Как правильно нужно?


//
&НаСервере
Процедура ВыгрузитьНаСервереВXML()
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ПутьКФайлуВыгрузки, "UTF-8");
    ЗаписьXML.ЗаписатьОбъявлениеXML();                  
    ТЗсФормы       = ТЗДляВыгрузки.Выгрузить();
    Для каждого СтрТЗ Из ТЗсФормы Цикл
        //
        Для каждого СтрТзКолонка Из ТЗсФормы.Колонки Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
            ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
            ЗаписьXML.ЗаписатьАтрибут(СтрТзКолонка.Имя, СТРОКА(СтрТЗ[СтрТзКолонка.Имя]));
            ЗаписьXML.ЗаписатьКонецЭлемента();
        КонецЦикла;    
    КонецЦикла;    
    //
    ЗаписьXML.ЗаписатьКонецЭлемента();
КонецПроцедуры
//
13 catena
 
31.05.19
13:08
(12)Ты считаешь, что ЗаписьXML тупой и ему надо по два раза повторять?
14 falselight
 
31.05.19
13:10
(13) Опечатка.

Попробовал вот так, но пишет ошибку, - Ошибочный порядок записи XML

//
&НаСервере
Процедура ВыгрузитьНаСервереВXML()
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ПутьКФайлуВыгрузки, "UTF-8");
    ЗаписьXML.ЗаписатьОбъявлениеXML();                  
    ТЗсФормы = ТЗДляВыгрузки.Выгрузить();
    Для каждого СтрТЗ Из ТЗсФормы Цикл
        //
        ЗаписьXML.ЗаписатьНачалоЭлемента("НомерСтроки");
        ЗаписьXML.ЗаписатьАтрибут("НомерСтроки", СТРОКА(СтрТЗ.НомерСтроки));
        Для каждого СтрТзКолонка Из ТЗсФормы.Колонки Цикл
            Если СтрТзКолонка.Имя = "НомерСтроки" Тогда
                ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
                ЗаписьXML.ЗаписатьАтрибут(СтрТзКолонка.Имя, СТРОКА(СтрТЗ[СтрТзКолонка.Имя]));
                ЗаписьXML.ЗаписатьКонецЭлемента();
            КонецЕсли;
        КонецЦикла;    
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    //
    ЗаписьXML.ЗаписатьКонецЭлемента();
КонецПроцедуры
//
15 catena
 
31.05.19
13:11
Теперь два начала и три конца.
16 Здравый_смысл
 
31.05.19
13:17
(13) Ржу чот :)

(14) Убери это: ЗаписьXML.ЗаписатьКонецЭлемента(); в конце процедуры.
17 falselight
 
31.05.19
13:17
Идет вот эта ошибка не пойму в чем дело.

{ВнешняяОбработка.ОбработкаВыгрузки.Форма.Форма.Форма(331)}: Ошибка при вызове метода контекста (ЗаписатьНачалоЭлемента)
            ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
по причине:
Ошибочный порядок записи XML


//
&НаСервере
Процедура ВыгрузитьНаСервереВXML()
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ПутьКФайлуВыгрузки, "UTF-8");
    ЗаписьXML.ЗаписатьОбъявлениеXML();                  
    ТЗсФормы = ТЗДляВыгрузки.Выгрузить();
    Для каждого СтрТЗ Из ТЗсФормы Цикл
        //
        //ЗаписьXML.ЗаписатьНачалоЭлемента("НомерСтроки");
        //ЗаписьXML.ЗаписатьАтрибут("НомерСтроки", СТРОКА(СтрТЗ.НомерСтроки));
        Для каждого СтрТзКолонка Из ТЗсФормы.Колонки Цикл
            Если СтрТзКолонка.Имя = "НомерСтроки" Тогда
                Продолжить;
            КонецЕсли;
            ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
            ЗаписьXML.ЗаписатьАтрибут(СтрТзКолонка.Имя, СТРОКА(СтрТЗ[СтрТзКолонка.Имя]));
            ЗаписьXML.ЗаписатьКонецЭлемента();
        КонецЦикла;    
        //ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    //
    ЗаписьXML.ЗаписатьКонецЭлемента();
КонецПроцедуры
//
18 falselight
 
31.05.19
13:28
//
&НаСервере
Процедура ВыгрузитьНаСервереВXML()
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ПутьКФайлуВыгрузки, "UTF-8");
    ЗаписьXML.ЗаписатьОбъявлениеXML();                  
    ТЗсФормы = ТЗДляВыгрузки.Выгрузить();
    Для каждого СтрТЗ Из ТЗсФормы Цикл
        //
        //ЗаписьXML.ЗаписатьНачалоЭлемента("НомерСтроки");
        //ЗаписьXML.ЗаписатьАтрибут("НомерСтроки", СТРОКА(СтрТЗ.НомерСтроки));
        Для каждого СтрТзКолонка Из ТЗсФормы.Колонки Цикл
            Если СтрТзКолонка.Имя = "НомерСтроки" Тогда
                Продолжить;
            КонецЕсли;
            ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
            ЗаписьXML.ЗаписатьАтрибут(СтрТзКолонка.Имя, СТРОКА(СтрТЗ[СтрТзКолонка.Имя]));
            ЗаписьXML.ЗаписатьКонецЭлемента();
        КонецЦикла;    
        //ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    //
КонецПроцедуры
//
19 falselight
 
01.06.19
08:20
Почему на этой строке ошибка?

            ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
20 hhhh
 
01.06.19
09:52
(19)             ЗаписьXML.ЗаписатьНачалоЭлемента(СтрТзКолонка.Имя);
            ЗаписьXML.ЗаписатьТекст(СТРОКА(СтрТЗ[СтрТзКолонка.Имя]));
            ЗаписьXML.ЗаписатьКонецЭлемента();

не благодари
21 dmpl
 
01.06.19
13:15
(5) Открой для себя СериализаторXDTO :)