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

Выгрузка в XML формат

Автор xdto, 13 июл 2016, 10:24

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

xdto

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


Вот та я выгружаю Код ,Наименование, Пол    -- поля справочника


ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("Z:\client.xml");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Корневой");
ЗаписьXML.ЗаписатьАтрибут("ИмяСправочника", "Клиенты");
ЗаписьXML.ЗаписатьКомментарий("Выгрузка элементов справочника");
СтрокиКлиенты = ПолучитьСтрокиКлиенты();
Для Каждого Строка Из СтрокиКлиенты Цикл      Значение = РазобратьСтроку(Строка);
ЗаписьXML.ЗаписатьНачалоЭлемента("ЭлементСправочника");

ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
ЗаписьXML.ЗаписатьТекст(Значение.Наименование);
ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.ЗаписатьНачалоЭлемента("Код");
ЗаписьXML.ЗаписатьТекст(Значение.Код);
ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.ЗаписатьНачалоЭлемента("Пол");
ЗаписьXML.ЗаписатьТекст(Значение.Пол);
ЗаписьXML.ЗаписатьКонецЭлемента();

КонецЦикла;     
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть()
;


А как остальные поля выгрузить не знаю поля из регистра сведений

LexaK

да все тоже самое, лучше конечно по функциям разбросать, но для визуализации оставляем пока так
к стати у вас косяк в коде !
Скобки НачалоЭлемента и КонецЭлемента - должны совпадать!

у вас

Для Каждого Строка Из СтрокиКлиенты Цикл
Значение = РазобратьСтроку(Строка);
ЗаписьXML.ЗаписатьНачалоЭлемента("ЭлементСправочника");
...

ЗаписатьНачалоЭлемента("ЭлементСправочника");  - Находится в цикле !

а ЗаписьXML.ЗаписатьКонецЭлемента(); - - за циклом

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


возможно при записи в файл, сообщения об ошибке и не будет, а вот при чтении ...

а теперь относительно вашей доработки по поводу вывода КИ, делаете все то же самое что и при выводе реквизитов контрагента.
вот примерная схема, там мелкие детали остаются, которые по подобию вы легко сами допрограммируете

ваш код с небольшими изменениями

СтрокиКлиенты = ПолучитьСтрокиКлиенты();
Для Каждого Строка Из СтрокиКлиенты Цикл
Значение = РазобратьСтроку(Строка);
ЗаписьXML.ЗаписатьНачалоЭлемента("ЭлементСправочника");

ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
ЗаписьXML.ЗаписатьТекст(Значение.Наименование);
ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.ЗаписатьНачалоЭлемента("Код");
ЗаписьXML.ЗаписатьТекст(Значение.Код);
ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.ЗаписатьНачалоЭлемента("Пол");
ЗаписьXML.ЗаписатьТекст(Значение.Пол);
ЗаписьXML.ЗаписатьКонецЭлемента();

    //здесь дополнительный код по выводу КИ, почти все тоже самое что и при выводе Контрагента
    СтрокиКИ = ПолучитьСтрокиКИ(Строка); //получаем строки РС по текущему контрагенту Строка.Контрагент
    Для Каждого СтрокаКИ Из СтрокиКИ Цикл
    ЗначениеКИ = РазобратьСтрокуКИ(СтрокаКИ);

    //Начало записи КИ
    ЗаписьXML.ЗаписатьНачалоЭлемента("КонтактнаяИнформация");

    ЗаписьXML.ЗаписатьНачалоЭлемента("Тип");
    ЗаписьXML.ЗаписатьТекст(ЗначениеКИ.Тип);
    ЗаписьXML.ЗаписатьКонецЭлемента();

    ЗаписьXML.ЗаписатьНачалоЭлемента("Вип");
    ЗаписьXML.ЗаписатьТекст(ЗначениеКИ.Вип);
    ЗаписьXML.ЗаписатьКонецЭлемента();

    ЗаписьXML.ЗаписатьНачалоЭлемента("Представление");
    ЗаписьXML.ЗаписатьТекст(ЗначениеКИ.Представление);
    ЗаписьXML.ЗаписатьКонецЭлемента();

    //завершение записи КИ
    ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;     

//перенесено в цикл, как пара элементу
ЗаписьXML.ЗаписатьКонецЭлемента();

КонецЦикла;     
//обрано, возможна ошибка
//ЗаписьXML.ЗаписатьКонецЭлемента();



если помогло нажмите: Спасибо!

xdto

Вот Обработка моя со всеми функциями
Добавлено: 13 июл 2016, 15:48


Выгружает одинаковые позиции и слишком большой файл формирует
Добавлено: 14 июл 2016, 08:40


Ваш код не сработывает
Добавлено: 14 июл 2016, 08:41


Нет идеи у когго нибудь еще?

Теги:

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

Рейтинг@Mail.ru

Поиск