Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 сен 2021, 04:21

Дублирования Атрибута при выводе в xml файл

Автор Vasya Povar, 25 окт 2016, 11:48

0 Пользователей и 1 гость просматривают эту тему.

Vasya Povar

Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  | ВыданнаяННСостав.НомерСтроки,
                  | ВыданнаяННСостав.Номенклатура,
                  | ВыданнаяННСостав.ЕдиницаИзмерения,
                  | ВыданнаяННСостав.Количество
                  |ИЗ
                  | Документ.ВыданнаяНН.Состав КАК ВыданнаяННСостав";
Выборка = Запрос.Выполнить().Выбрать();
Запись.ЗаписатьНачалоЭлемента("RXXXXG2D");
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоАтрибута("ROWNUM");
   НомерСтроки = Выборка.НомерСтроки;
Запись.ЗаписатьТекст(Строка(НомерСтроки));
  Запись.ЗаписатьКонецАтрибута();
КонецЦикла;

         Запись.ЗаписатьТекст(Строка(Формат(Объект.НалоговыйДокумент.Дата,"ДФ=ddMMyyyy")));  
 
 
 
  Запись.ЗаписатьКонецЭлемента();


Должно в итоге вывести номера строк из запроса

<RXXXXG2D ROWNUM="1">10092016</RXXXXG2D>

<RXXXXG2D ROWNUM="2">10092016</RXXXXG2D>

<RXXXXG2D ROWNUM="3">10092016</RXXXXG2D>

Сейчас ошибка Дублирование атрибута.

ilyay

Атрибут в теге может быть только один.

Вот это:
Запись.ЗаписатьНачалоЭлемента("RXXXXG2D");
и закрытие тега надо внутрь цикла поместить.

Еще я не увидел отбора документа по ссылке.
Добавлено: 25 окт 2016, 12:06


Сейчас вы пытаетесь сделать следующее:
<RXXXXG2D ROWNUM="1" ROWNUM="2" ...

И не надо "Строка()". Надо "XMLСтрока()". Иначе на 1000 у вас будут проблемы с пробелом в числе, да и спецсимволы всякие бывают.

Vasya Povar

Цитата: ilyay от 25 окт 2016, 12:02
Атрибут в теге может быть только один.

Вот это:
Запись.ЗаписатьНачалоЭлемента("RXXXXG2D");
и закрытие тега надо внутрь цикла поместить.

Еще я не увидел отбора документа по ссылке.
Добавлено: 25 окт 2016, 12:06


Сейчас вы пытаетесь сделать следующее:
<RXXXXG2D ROWNUM="1" ROWNUM="2" ...

И не надо "Строка()". Надо "XMLСтрока()". Иначе на 1000 у вас будут проблемы с пробелом в числе, да и спецсимволы всякие бывают.

  Запрос = Новый Запрос;
  ССылка = Объект.НалоговыйДокумент.Ссылка;
   Запрос.Текст = "ВЫБРАТЬ
                  | ВыданнаяННСостав.НомерСтроки,
                  | ВыданнаяННСостав.Номенклатура,
                  | ВыданнаяННСостав.ЕдиницаИзмерения,
                  | ВыданнаяННСостав.Количество
                  |ИЗ
                  | Документ.ВыданнаяНН.Состав КАК ВыданнаяННСостав
                  |ГДЕ
                  | ВыданнаяННСостав.Ссылка =(&Ссылка)";
  Запрос.Параметры.Вставить("Ссылка",Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоЭлемента("RXXXXG2D");
Запись.ЗаписатьНачалоАтрибута("ROWNUM");
   НомерСтроки = Выборка.НомерСтроки;
Запись.ЗаписатьТекст(Строка(НомерСтроки));
  Запись.ЗаписатьКонецАтрибута();
  Запись.ЗаписатьТекст(XMLСтрока(Формат(Объект.НалоговыйДокумент.Дата,"ДФ=ddMMyyyy")));
   Запись.ЗаписатьКонецЭлемента();
КонецЦикла;  


Вот так все работает. Спасибо!

ilyay

Цитата: Vasya Povar от 25 окт 2016, 12:38
Цитата: ilyay от 25 окт 2016, 12:02
Атрибут в теге может быть только один.

Вот это:
Запись.ЗаписатьНачалоЭлемента("RXXXXG2D");
и закрытие тега надо внутрь цикла поместить.

Еще я не увидел отбора документа по ссылке.
Добавлено: 25 окт 2016, 12:06



И не надо "Строка()". Надо "XMLСтрока()". Иначе на 1000 у вас будут проблемы с пробелом в числе, да и спецсимволы всякие бывают.

Запись.ЗаписатьТекст(Строка(НомерСтроки));  


Вот так все работает. Спасибо!

А вы проверьте на 1001 строке табличной части. И не все будет работать.

Vasya Povar

У меня там максимум будет 6-7 строк в ТЧ.

ilyay

ЦитироватьУ меня
Странный подход. А я думал конфигурация пишется для пользователей.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск