Доброе времени суток.

Есть ХМЛ документ который хранить данные документа. ХМЛ отправляется из мобильного приложение (Интеграция). Короче в файла есть такая строка -

```1c
    <CashOrders>
    <CashOrder ID="1" Type="2" Date="15.07.2020 09:55:05" UserID="1" CustomerID="2" Amount="10.0" IsDeleted="0" Comment=" DateString="15.07.2020 09:55:05" Exported="1" Guid="d8fc0902-75c6-4c37-a154-f32108494f4f" Cancelled="0" Printed="0" DeviceId="cc1bcadc973177ce"/>
```

Меня надо добавить еще одну информацию (наименование пользователя). С помощью СОМ объекта могу делать но не тот результат получаю. Добавляю, удаляю атрибут но... Можете помогать? Спасибо всем за ранее.

Надо так -

```1c
    <CashOrders>
    <CashOrder ID="1" Type="2" Date="15.07.2020 09:55:05" UserID="1" UserName="Test" CustomerID="2" Amount="10.0" IsDeleted="0" Comment=" DateString="15.07.2020 09:55:05" Exported="1" Guid="d8fc0902-75c6-4c37-a154-f32108494f4f" Cancelled="0" Printed="0" DeviceId="cc1bcadc973177ce"/>
```

```1c
    XML = Новый COMОбъект("MSXML2.DOMDocument");
    XML.Load(XML_Документ);

    //Получаем корневой элемент
    Root = XML.DocumentElement;

    FirstElement = Root.ChildNodes(1);

    ElementsCount = FirstElement.ChildNodes.Length;

    Для Стр = 0 По ElementsCount - 1 Цикл
    UserID = FirstElement.ChildNodes(Стр).Attributes.GetNamedItem("UserID").text;
    //Вот здесь надо писать
    КонецЦикла;

    //Сохраняем весь документ
    XML.Save("D:\Optima\Test.xml")
```
---
Спасибо за вниманию.
Этот код который вы писали по-моему ищут тот атрибут который уже находиться в документе. Но мне надо было добавить новый атрибут в текущем элемента.
Первый очередь создал новый атрибут потом добавил его в необходимый элемент. Использовал метод "setAttributeNode" для добавление атрибута.
Хороший сайт, показывает все методы и функции для работа с XML DOM Документам - XML DOM Document.
Может кому-то пригодиться полный код -

```1c
    Процедура ДобавитьНеобходимыеДанныеДляПланаОбмена(XML_Документ)

    XML = Новый COMОбъект("MSXML2.DOMDocument");
    XML.Load(XML_Документ);

    Root = XML.DocumentElement;

    FirstElement = Root.ChildNodes(1);

    ElementsCount = FirstElement.ChildNodes.Length;

    Для Стр = 0 По ElementsCount - 1 Цикл

    newAttr = xml.createAttribute("UserName");
    newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Наименование;
    FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);

    newAttr = xml.createAttribute("UserCashBox");
    newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Касса.Наименование;
    FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);

    newAttr = xml.createAttribute("UserStock");
    newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Склад.Наименование;
    FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);

    КонецЦикла;

    XML.Save("D:\Test\Test.xml");
    КонецПроцедуры
```

Спасибо всем.
---
не верно
не получится дописать в читаемый xml что-то

надо сначала все прочитать, сформировать или таблицу или структуру прочитанных данных
в процессе чтения добавить к данным требуемый атрибут со значением
закрыть чтение

только потом записать все заново в новый файл или в тот же с перезаписью
---
Спасибо за вниманию.
---
```1c
    Для Стр = 0 По ElementsCount - 1 Цикл
    //UserID = FirstElement.ChildNodes(Стр).Attributes.GetNamedItem("UserID").text;
    FirstElement.ChildNodes(Стр).Attributes.GetNamedItem("UserID").text = "123454456456";
    КонецЦикла;
```
---
Спасибо за вниманию.
Этот код который вы писали по-моему ищут тот атрибут который уже находиться в документе. Но мне надо было добавить новый атрибут в текущем элемента.
Первый очередь создал новый атрибут потом добавил его в необходимый элемент. Использовал метод "setAttributeNode" для добавление атрибута.
Хороший сайт, показывает все методы и функции для работа с XML DOM Документам - XML DOM Document.
Может кому-то пригодиться полный код -

```1c
    Процедура ДобавитьНеобходимыеДанныеДляПланаОбмена(XML_Документ)

    XML = Новый COMОбъект("MSXML2.DOMDocument");
    XML.Load(XML_Документ);

    Root = XML.DocumentElement;

    FirstElement = Root.ChildNodes(1);

    ElementsCount = FirstElement.ChildNodes.Length;

    Для Стр = 0 По ElementsCount - 1 Цикл

    newAttr = xml.createAttribute("UserName");
    newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Наименование;
    FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);

    newAttr = xml.createAttribute("UserCashBox");
    newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Касса.Наименование;
    FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);

    newAttr = xml.createAttribute("UserStock");
    newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Склад.Наименование;
    FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);

    КонецЦикла;

    XML.Save("D:\Test\Test.xml");
    КонецПроцедуры
```

Спасибо всем.