1. sys1c 12.11.19 10:46 Сейчас в теме

Как сделать такой XML?

Всем привет. Нужно сделать выгрузку в XML такого вида:


C XML особо не работал, написал вот такой код:

		ЗаписьXML = Новый ЗаписьXML;	
		ЗаписьXML.ОткрытьФайл(ДиалогСохраненияФайла.ПолноеИмяФайла, "windows-1251");
		ЗаписьXML.ЗаписатьОбъявлениеXML();
		ЗаписьXML.ЗаписатьНачалоЭлемента("СчетаПК");
		ЗаписьXML.ЗаписатьАтрибут("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
		ЗаписьXML.ЗаписатьАтрибут("xsi:noNamespaceSchemaLocation", "Wages.xsd");
		ЗаписьXML.ЗаписатьАтрибут("ДатаФормирования", Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd"));
		ЗаписьXML.ЗаписатьАтрибут("НомерДоговора", "");
		ЗаписьXML.ЗаписатьАтрибут("НаименованиеОрганизации", "");
		ЗаписьXML.ЗаписатьАтрибут("ИНН", "");
		ЗаписьXML.ЗаписатьАтрибут("КодВалюты", "");
		ЗаписьXML.ЗаписатьАтрибут("БИК", "");
		ЗаписьXML.ЗаписатьАтрибут("Зачисление", "");
		
		ЗаписьXML.ЗаписатьНачалоЭлемента("ЗачислениеЗарплаты");
		
		Для ИндексМассива = 0 по МассивВыгрузки.Количество() - 1 Цикл
			ЗаписьXML.ЗаписатьНачалоЭлемента("Сотрудник", "Сотрудник Нпп="+Строка(ИндексМассива+1));
				ЗаписьXML.ЗаписатьАтрибут("Фамилия",        Строка(МассивВыгрузки[ИндексМассива][0]));
				ЗаписьXML.ЗаписатьАтрибут("Имя",            Строка(МассивВыгрузки[ИндексМассива][1]));
				ЗаписьXML.ЗаписатьАтрибут("Отчество", 	    Строка(МассивВыгрузки[ИндексМассива][2]));
				ЗаписьXML.ЗаписатьАтрибут("ОтделениеБанка", Строка(МассивВыгрузки[ИндексМассива][3]));
				ЗаписьXML.ЗаписатьАтрибут("ЛицевойСчет",    Строка(МассивВыгрузки[ИндексМассива][4]));
				ЗаписьXML.ЗаписатьАтрибут("Сумма",          Строка(МассивВыгрузки[ИндексМассива][5]));
			ЗаписьXML.ЗаписатьКонецЭлемента();
		КонецЦикла;
		
		ЗаписьXML.ЗаписатьКонецЭлемента();
		ЗаписьXML.ЗаписатьКонецЭлемента();
		ЗаписьXML.Закрыть();
Показать


Получил вот такое, вижу почти похоже ))
Подскажите почему по Сотруднику атрибут не так встает?
Найденные решения
3. PhoenixAOD 57 12.11.19 10:53 Сейчас в теме
(1)по моему Нпп должен записать как ЗаписьXML.ЗаписатьАтрибут("НПП", Строка(ИндексМассива+1));
9. tvm 12.11.19 11:23 Сейчас в теме
в цикле как-то так должно быть
ЗаписьXML.ЗаписатьНачалоЭлемента("Сотрудник");
ЗаписьXML.ЗаписатьАтрибут("Нпп","","1");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("Фамилия","");
ЗаписьXML.ЗаписатьТекст("Иванов");
ЗаписьXML.ЗаписатьКонецЭлемента();
Остальные ответы
Избранное Подписка Сортировка: Древо
3. PhoenixAOD 57 12.11.19 10:53 Сейчас в теме
(1)по моему Нпп должен записать как ЗаписьXML.ЗаписатьАтрибут("НПП", Строка(ИндексМассива+1));
4. dhurricane 12.11.19 10:56 Сейчас в теме
(1) В представленном образце единственный атрибут - это "Нпп". Все остальное элементы.
2. sys1c 12.11.19 10:49 Сейчас в теме
5. sys1c 12.11.19 11:07 Сейчас в теме
А как внутрь НачалаЭлемента вставить элемент?
6. Sashares 18 12.11.19 11:14 Сейчас в теме
(5)Записать еще одно начало элемента, у вас это даже используется.
7. dhurricane 12.11.19 11:14 Сейчас в теме
(5) Просто последовательно записывайте начало элемента.
8. sys1c 12.11.19 11:19 Сейчас в теме
У меня "Сотрудник с Нпп" теперь норм заработал, но че-то с фамилиями не выходит


я явно в ФИО не тот "элемент" подставляю, там без ковычек в примере и скобки треугольные сразу идут...

		Для ИндексМассива = 0 по МассивВыгрузки.Количество() - 1 Цикл
			ЗаписьXML.ЗаписатьНачалоЭлемента("Сотрудник");
			ЗаписьXML.ЗаписатьАтрибут("Нпп", Строка(ИндексМассива+1));
			
			ЗаписьXML.ЗаписатьНачалоЭлемента("Фамилия");
			ЗаписьXML.ЗаписатьАтрибут("Фамилия", Строка(МассивВыгрузки[ИндексМассива][0]));
			ЗаписьXML.ЗаписатьКонецЭлемента();				
			
			ЗаписьXML.ЗаписатьНачалоЭлемента("Имя");
			ЗаписьXML.ЗаписатьАтрибут("Имя",  Строка(МассивВыгрузки[ИндексМассива][1]));
			ЗаписьXML.ЗаписатьКонецЭлемента();				
			
			ЗаписьXML.ЗаписатьНачалоЭлемента("Отчество");
			ЗаписьXML.ЗаписатьАтрибут("Отчество",  Строка(МассивВыгрузки[ИндексМассива][2]));
			ЗаписьXML.ЗаписатьКонецЭлемента();				
			
			ЗаписьXML.ЗаписатьКонецЭлемента();
		КонецЦикла;
Показать
11. nomad_irk 43 12.11.19 11:28 Сейчас в теме
(8)
ЗаписьXML.ЗаписатьНачалоЭлемента("Фамилия");
ЗаписьXML.ЗаписатьАтрибут("Фамилия", Строка(МассивВыгрузки[ИндексМассива][0]));
ЗаписьXML.ЗаписатьКонецЭлемента();


замените на:

.....
ЗаписьXML.ЗаписатьНачалоЭлемента("Фамилия");
ЗаписьXML.ЗаписатьТекст(Строка(МассивВыгрузки[ИндексМассива][0]));
ЗаписьXML.ЗаписатьКонецЭлемента();
....
9. tvm 12.11.19 11:23 Сейчас в теме
в цикле как-то так должно быть
ЗаписьXML.ЗаписатьНачалоЭлемента("Сотрудник");
ЗаписьXML.ЗаписатьАтрибут("Нпп","","1");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("Фамилия","");
ЗаписьXML.ЗаписатьТекст("Иванов");
ЗаписьXML.ЗаписатьКонецЭлемента();
10. sys1c 12.11.19 11:26 Сейчас в теме
Громадное всем спасибо! за элементы, атрибуты и текст!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Специалист техподдержки 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Системный аналитик 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Тестировщик 1С
Москва
зарплата от 70 000 руб.
Полный день

Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день