Формат даних XML

09.02.2018

XML - це текстовий формат даних.

Детальніше на сайті w3schools.com - https://www.w3schools.com/xml/

Приклад XML файлу
<?xml version="1.0" encoding="windows-1251"?>
<price date="05.02.18" company_name="Наша">

  <category code="1" parentCode="" level="1">Процесори</category>
  
  <item code="500" categoryCode="10" level="2">
    <name>Процесор AMD A1</name>
    <price>80</price>
    <storage>+</storage>
    <model>123456789</model>
    <manufacturer>AMD</manufacturer>
  </item>
  
  <item code="700" categoryCode="10" level="2">
    <name>Процесор AMD B1</name>
    <price>82</price>
    <storage>+</storage>
    <model>123456780</model>
    <manufacturer>AMD</manufacturer>
  </item>
  
</price>
      

Зразок програми яка формує XML файл для 1С 7.7

Функция ПрайсЛист()

      //Підготовка об'єкту Текст
      Текст=СоздатьОбъект("Текст");
      Текст.Шаблон(1);
      Текст.КодоваяСтраница(0);
	
      //Константи
      НазваКомпанії = "Наша";
	
      //Заголовок хмл-файлу
      Текст.ДобавитьСтроку("<?xml version=""1.0"" encoding=""windows-1251""?>
      |<price 
      |date=""[ТекущаяДата()]"" 
      |company_name=""[НазваКомпанії]""
      |>");

      ТекстЗапроса = "
      |Прайс = Справочник.ПрайсЛист.ТекущийЭлемент;
      |Группировка Прайс Упорядочить По Прайс.Код;
      |";
	
      Запрос = СоздатьОбъект("Запрос");
      Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
          Возврат;
      КонецЕсли;
	
      Пока Запрос.Группировка("Прайс") <> 0 Цикл
            ІД           = Прайс.Код; 
            ІДРодителя   = ?(ПустоеЗначение(Родитель) = 0, Родитель.Код, "");
            Наименование = Прайс.Наименование;
            Уровень      = Прайс.Уровень();
      
            Если Товар.ЭтоГруппа() = 1 Тогда
      
                Текст.ДобавитьСтроку("
                |<category code=""[ІД]"" parentCode=""[ІДРодителя]"" level=""[Уровень]"">[Наименование]</category>");
          
            Иначе
          
                Цена       = Прайс.Цена;
                СтрОстаток = Регистр.Остатки.СводныйОстаток(,Прайс,,,, "Кво");
                Модель     = Прайс.Модель;
                Виробник   = Прайс.Виробник;

                Текст.ДобавитьСтроку("
                |<item code=""[ІД]"" categoryCode=""[ІДРодителя]"" level=""[Уровень]"">
                |	<name>[Наименование]</name>
                |	<price>[Цена]</price> 
                |	<storage>[СтрОстаток]</storage>
                |	<model>[Модель]</model>
                |	<manufacturer>[Виробник]</manufacturer>      
                |</item>");
          
            КонецЕсли;
      КонецЦикла;

      //Корінний елемент закритий
      Текст.ДобавитьСтроку("</price>"); 
	
      ШляхДляЗбереження = "c:\XML_DATA.xml";
		
      Попытка
          Текст.Записать(ШляхДляЗбереження);
      Исключение
          Сообщить(ОписаниеОшибки());
      КонецПопытки;
    
      Возврат 1;
КонецФункции
      

Зразок для 1С 8.3

Функция ПрайсЛист(НазваКомпанії) Экспорт
	
	//Заголовок хмл-файлу
	ХМЛДани = "<?xml version=""1.0"" encoding=""windows-1251""?>
	|<price date=""" + ТекущаяДата() + """ company_name=""" + НазваКомпанії + """>";
	
	Запрос = Новый Запрос;
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	|	Номенклатура.Ссылка,
	|	Номенклатура.Код КАК Код,
	|	Номенклатура.Наименование,
	|	Номенклатура.ЕдиницаИзмерения,
	|	Номенклатура.Родитель.Код КАК РодительКод,
	|	Номенклатура.НаименованиеПолное КАК Цена,
	|	Номенклатура.НаименованиеПолное КАК Остаток,
	|	Номенклатура.НаименованиеПолное КАК Модель,
	|	Номенклатура.НаименованиеПолное КАК Производитель
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|
	|УПОРЯДОЧИТЬ ПО
	|	ЭтоГруппа УБЫВ,
	|	Код";
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		Если Выборка.ЭтоГруппа Тогда
			
			ХМЛДани = ХМЛДани + "
			|<category code=""" + Выборка.Код + """ parentCode=""" + Выборка.РодительКод + """><![CDATA[" + Выборка.Наименование + "]]></category>";
			
		Иначе
			
			ХМЛДани = ХМЛДани + "
			|<item code=""" + Выборка.Код + """ categoryCode=""" + Выборка.РодительКод + """>
			|	<name><![CDATA[" + Выборка.Наименование + "]]></name>
			|	<price>" + Выборка.Цена + "</price>
			|	<storage>" + Выборка.Остаток + "</storage>
			|	<model>" + Выборка.Модель + "</model>
			|	<manufacturer>" + Выборка.Производитель + "</manufacturer>
			|</item>";
			
		КонецЕсли;			
	КонецЦикла;
	
	//Корінний елемент закритий
	ХМЛДани = ХМЛДани + "</price>"; 
	
	Возврат ХМЛДани;	
КонецФункции
      

Результат

<?xml version="1.0" encoding="windows-1251"?>
<price date="09.02.2018 14:50:12" company_name="Наша компанія">
    <category code="000000003" parentCode=""><![CDATA[Товари]]></category>
    <category code="000000004" parentCode=""><![CDATA[Послуги]]></category>
    <category code="000000008" parentCode=""><![CDATA[Додаткова група]]></category>
    <item code="000000001" categoryCode="000000003">
	    <name><![CDATA[Номенклатура 1]]></name>
	    <price>Номенклатура 1</price>
	    <storage>Номенклатура 1</storage>
	    <model>Номенклатура 1</model>
	    <manufacturer>Номенклатура 1</manufacturer>
    </item>
    <item code="000000002" categoryCode="000000003">
	    <name><![CDATA[Номенклатура 2]]></name>
	    <price>Номенклатура 2</price>
	    <storage>Номенклатура 2</storage>
	    <model>Номенклатура 2</model>
	    <manufacturer>Номенклатура 2</manufacturer>
    </item>
    <item code="000000005" categoryCode="000000004">
	    <name><![CDATA[Послуга 1]]></name>
	    <price>Послуга 1</price>
	    <storage>Послуга 1</storage>
	    <model>Послуга 1</model>
	    <manufacturer>Послуга 1</manufacturer>
    </item>
    <item code="000000006" categoryCode="000000004">
	    <name><![CDATA[Послуга 2]]></name>
	    <price>Послуга 2</price>
	    <storage>Послуга 2</storage>
	    <model>Послуга 2</model>
	    <manufacturer>Послуга 2</manufacturer>
    </item>
    <item code="000000007" categoryCode="000000008">
	    <name><![CDATA[Товар додатковий]]></name>
	    <price>Товар</price>
	    <storage>Товар</storage>
	    <model>Товар</model>
	    <manufacturer>Товар</manufacturer>
    </item>
</price>