Здравствуйте. Помогите найти ошибку в коде. Создал обработку для выгрузки данных в xml документ. Документ создает, но данные туда не выгружает.

```1c
    &НаСервере
    Процедура ВыполнитьНаСервере(ИмяФайла)
    ХМЛ = Новый ЗаписьXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,"UTF-8");

    ХМЛ.ЗаписатьОбъявлениеXML();

    ХМЛ.ЗаписатьНачалоЭлемента("Товары");
    ХМЛ.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");

    Для Каждого Док Из ТаблицаРеализаций Цикл

    Если НЕ Док.Выгружать Тогда
    Продолжить;
    КонецЕсли;

    Для каждого Строка из ТаблицаРеализаций Цикл
    //ПолучитьФорму("Документ.ПеремещениеТоваров.Форма.ФормаДокумента");
    Выборка = Документы.ПеремещениеТоваров.ПолучитьСсылку().Товары;

    Для каждого Строка из Выборка Цикл

    ХМЛ.ЗаписатьНачалоЭлемента("Товар");
    //ХМЛ.ЗаписатьАтрибут("КодТовар", Строка(Строка.Номенклатура.Код));
    ХМЛ.ЗаписатьАтрибут("Номенклатура", Строка(Строка.Номенклатура));
    //ХМЛ.ЗаписатьАтрибут("Подгруппа", Строка(Строка.Номенклатура.Родитель));
    //ХМЛ.ЗаписатьАтрибут("Группа", Строка(Строка.Номенклатура.Родитель.Родитель));
    ХМЛ.ЗаписатьАтрибут("Количество", Строка(Строка.Количество));
    ХМЛ.ЗаписатьАтрибут("Цена", Строка(Строка.Цена));
    ХМЛ.ЗаписатьАтрибут("Артикул", Строка(Строка.Номенклатура.Артикул));
    ХМЛ.ЗаписатьАтрибут("ЕдиницаИзмерения", Строка(Строка.Номенклатура.ЕдиницаИзмерения));

    ХМЛ.ЗаписатьКонецЭлемента();
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;

    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.Закрыть();
    Сообщить("Выгружено!");

    КонецПроцедуры
```

Если делать через получить форму, то выдает ошибку, что интерактивные операции не доступны.

1с 8.3

Приложил эту обработку.
---
Потому что у тебя ни одной табличной части не находит(либо выгружаемых элементов нет с признаком "Выгружать"). Ты новый код пробовал?

```1c
    &НаСервере
    Процедура ВыполнитьНаСервере(ИмяФайла)

    ХМЛ = Новый ЗаписьXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,"UTF-8");

    ХМЛ.ЗаписатьОбъявлениеXML();

    ХМЛ.ЗаписатьНачалоЭлемента("Товары");
    ХМЛ.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");

    Для Каждого Док Из ТаблицаРеализаций Цикл

    Если НЕ Док.Выгружать Тогда
    Продолжить;
    КонецЕсли;

    Для каждого Строка из Док.Расходная.Товары Цикл

    Номенклатура = Строка.Номенклатура;

    ХМЛ.ЗаписатьНачалоЭлемента("Товар");
    ХМЛ.ЗаписатьАтрибут("Номенклатура", Номенклатура.Наименование);
    ХМЛ.ЗаписатьАтрибут("Количество", Формат(Строка.Количество, "ЧГ="));
    ХМЛ.ЗаписатьАтрибут("Цена", Формат(Строка.Цена, "ЧГ="));
    ХМЛ.ЗаписатьАтрибут("Артикул", Номенклатура.Артикул);
    ХМЛ.ЗаписатьАтрибут("ЕдиницаИзмерения", ?(ЗначениеЗаполнено(Номенклатура), Номенклатура.ЕдиницаИзмерения.Наименование, "));

    ХМЛ.ЗаписатьКонецЭлемента();

    КонецЦикла;

    КонецЦикла;

    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.Закрыть();
    Сообщить("Выгружено!");

    КонецПроцедуры
```

Так получше будет
---
```1c
    Для Каждого Док Из ТаблицаРеализаций Цикл

    Если НЕ Док.Выгружать Тогда
    Продолжить;
    КонецЕсли;

    Для каждого Строка из ТаблицаРеализаций Цикл
```

Имена таблиц (ТаблицаРеализаций) не перепутали?

```1c
    Выборка = Документы.ПеремещениеТоваров.ПолучитьСсылку().Товары;
```

А это вообще что? Выборка по табличной части пустого документа?
---
Нет не перепутаны. При отладке он пропускает блок кода где идет выборка данных
---
Нет не перепутаны
нафига нужна проверка "Док.Выгружать", если потом все равно цикл по всем строкам той же таблицы? Нафига там вообще "Строка" выбирается, если она чуть ниже переинициализируется другим циклом? У вас там вложенность хромает на три ноги из четырех, отступ правильно установите и посмотрите ещё раз
---
Не обратил внимание на этот косяк. Убрал двойной цикл. Но все равно пока не выгружает данные.
---
Что у вас в переменной ИмяФайла?
 и что будет если от кода оставить только

```1c
    ХМЛ = Новый ЗаписьXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,"UTF-8");

    ХМЛ.ЗаписатьОбъявлениеXML();
    ХМЛ.ЗаписатьНачалоЭлемента("Товары");
    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.Закрыть();
```
---
Он так же записывает файл с данными "<?xml version="1.0" encoding="UTF-8"?>
<Товары/>"

Здесь задается изначальное имя файла

```1c
    &НаКлиенте
    Процедура ВыполнитьРозница(Команда)
    СтрокаДата=СтрЗаменить(Формат(ТекущаяДата(),"Дф=dd.MM.yyyy"),".","_");
    ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогВыбораФайла.Заголовок = "Выгрузка ...";
    ДиалогВыбораФайла.ПолноеИмяФайла="Перемещение "+Формат(СтрокаДата,"Дф=dd.MM.yyyy")+".xml";
    ДиалогВыбораФайла.Фильтр = НСтр("ru = 'XML'; en = 'XML'") + "(*.xml)|*.xml";

    Если ДиалогВыбораФайла.Выбрать() Тогда
    ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
    ВыполнитьНаСервере(ИмяФайла);
    Иначе
    Сообщить("Каталог не выбран...");
    КонецЕсли;

    КонецПроцедуры
```
---
Есть эта кнопка дописанная в самом документе и там данные выгружает правильно. Цель выгружать данные из выделенных документов. Вот что он выгружает:

 "<?xml version="1.0" encoding="UTF-8"?>

-<Товары>

<ТабличнаяЧасть/>

</Товары>"

Саму табличную часть пропускает
---
Я же второй косяк тоже упомянул

```1c
    Выборка = Документы.ПеремещениеТоваров.ПолучитьСсылку().Товары;
```

Это выбирает ПУСТУЮ табличную часть ПУСТОГО документа "ПеремещениеТоваров". А у тебя, подразумевается, что выберется ТЧ какого-то документа. Непонятно только почему ты в "Реализации" ищешь "ПеремещениеТоваров", но это уж как знаешь
---
Как правильно нужно написать?
---
Это смотря что у тебя в таблице реализаций лежит. Наверное, где-то там есть колонка с документом перемещения? У тебя в коде вообще нигде не упоминается из какого документа ты хочешь табличную часть вытащить
---
Да есть колонка Расходная и там выбран этот документ ПеремещениеТоваров.
---
```1c
    &НаСервере
    Процедура ВыполнитьНаСервере(ИмяФайла)

    ХМЛ = Новый ЗаписьXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,"UTF-8");

    ХМЛ.ЗаписатьОбъявлениеXML();

    ХМЛ.ЗаписатьНачалоЭлемента("Товары");
    ХМЛ.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");

    Для Каждого Док Из ТаблицаРеализаций Цикл

    Если НЕ Док.Выгружать Тогда
    Продолжить;
    КонецЕсли;

    Для каждого Строка из Док.Расходная.Товары Цикл

    ХМЛ.ЗаписатьНачалоЭлемента("Товар");
    //ХМЛ.ЗаписатьАтрибут("КодТовар", Строка(Строка.Номенклатура.Код));
    ХМЛ.ЗаписатьАтрибут("Номенклатура", Строка(Строка.Номенклатура));
    //ХМЛ.ЗаписатьАтрибут("Подгруппа", Строка(Строка.Номенклатура.Родитель));
    //ХМЛ.ЗаписатьАтрибут("Группа", Строка(Строка.Номенклатура.Родитель.Родитель));
    ХМЛ.ЗаписатьАтрибут("Количество", Строка(Строка.Количество));
    ХМЛ.ЗаписатьАтрибут("Цена", Строка(Строка.Цена));
    ХМЛ.ЗаписатьАтрибут("Артикул", Строка(Строка.Номенклатура.Артикул));
    ХМЛ.ЗаписатьАтрибут("ЕдиницаИзмерения", Строка(Строка.Номенклатура.ЕдиницаИзмерения));

    ХМЛ.ЗаписатьКонецЭлемента();

    КонецЦикла;

    КонецЦикла;

    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.Закрыть();
    Сообщить("Выгружено!");

    КонецПроцедуры
```

Примерно так, если правильно структуру понял
---
Там так и написано, документ создает без ошибок, только в сам документ данные не выгружает.
Он создается с данными:

```1c
    <?xml version="1.0" encoding="UTF-8"?>

    -<Товары>

    <ТабличнаяЧасть/>

    </Товары>
```

Должен создаваться как этот:

```1c
    <?xml version="1.0" encoding="UTF-8"?>

    -<Товары>

    -<ТабличнаяЧасть>

    <Товар ЕдиницаИзмерения="кг " Артикул="17" Цена="84" Количество="8" Номенклатура="Баранки Сдобные в/с "/>

    <Товар ЕдиницаИзмерения="кг" Артикул="293" Цена="65" Количество="1,8" Номенклатура="Батон Особый в/с 0,3"/>

    <Товар ЕдиницаИзмерения="кг" Артикул="5548" Цена="190" Количество="2,23" Номенклатура="Рулет "Итальянка" весовой, неупакованный, для магазина"/>

    <Товар ЕдиницаИзмерения="кг" Артикул="259" Цена="190" Количество="2,61" Номенклатура="Рулет Елена весовой, неупакованный, для магазина"/>

    </ТабличнаяЧасть>

    </Товары>
```
---
Потому что у тебя ни одной табличной части не находит(либо выгружаемых элементов нет с признаком "Выгружать"). Ты новый код пробовал?

```1c
    &НаСервере
    Процедура ВыполнитьНаСервере(ИмяФайла)

    ХМЛ = Новый ЗаписьXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,"UTF-8");

    ХМЛ.ЗаписатьОбъявлениеXML();

    ХМЛ.ЗаписатьНачалоЭлемента("Товары");
    ХМЛ.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");

    Для Каждого Док Из ТаблицаРеализаций Цикл

    Если НЕ Док.Выгружать Тогда
    Продолжить;
    КонецЕсли;

    Для каждого Строка из Док.Расходная.Товары Цикл

    Номенклатура = Строка.Номенклатура;

    ХМЛ.ЗаписатьНачалоЭлемента("Товар");
    ХМЛ.ЗаписатьАтрибут("Номенклатура", Номенклатура.Наименование);
    ХМЛ.ЗаписатьАтрибут("Количество", Формат(Строка.Количество, "ЧГ="));
    ХМЛ.ЗаписатьАтрибут("Цена", Формат(Строка.Цена, "ЧГ="));
    ХМЛ.ЗаписатьАтрибут("Артикул", Номенклатура.Артикул);
    ХМЛ.ЗаписатьАтрибут("ЕдиницаИзмерения", ?(ЗначениеЗаполнено(Номенклатура), Номенклатура.ЕдиницаИзмерения.Наименование, "));

    ХМЛ.ЗаписатьКонецЭлемента();

    КонецЦикла;

    КонецЦикла;

    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.Закрыть();
    Сообщить("Выгружено!");

    КонецПроцедуры
```

Так получше будет
---
Спасибо большое. Все заработало
---
Сообщение было скрыто модератором.
---
не путай человека. Получить объект от ссылки работает, а не от менеджера документа
---
упс. лишнее сообщение
---
Это сделано для того, чтоб выгружалось из нескольких документов.