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

Выгрузка в XML

Автор xdto, 14 июл 2016, 09: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.Закрыть()


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


cska-fanat-kz

повторение - мать заикания? :angry: :^454^: :thwrt: ui;;t;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

xdto

Да:D:D:D:D

А так не получил ответа адекватного просто
Добавлено: 14 июл 2016, 10:17


Прощу помочь мне с этим делом

cska-fanat-kz

вполне себе адекватно LexaK отвечал... :kmtu:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

LexaK

cska-fanat-kz,
Просто пользователь перепутал раздел форума! Ему надо в раздел фрилансеров, там ему сразу сделают готовое решение!
В этом разделе, пользователю подсказывают решение, показывают пути решения, остальное надо додумать/доделать задачу самому пользователю.
Просто xdto не умеет / не хочет думать/программировать. :dfbbdrfb: 
Такое тоже бывает. :D
ответ Понравился? (в смысле пригодился?)

xdto

Если LexaK ответил адекватно тогда скажите почему этот код LexaK выгружает данные без остановки пока не прервешь работу программы  через диспетчер задач??
Добавлено: 14 июл 2016, 11:34


Я не ищу готовое решение хочу что бы подсказали где копать
Добавлено: 14 июл 2016, 11:42


Вот таким кодом еще работает
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("c:\document.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.ЗаписатьТекст(ЗначениеКИ.Представление);
ЗаписьXML.ЗаписатьКонецЭлемента();
             

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

Но в файле он сперва выгружает код наименование пол

-<ЭлементСправочника>

<Наименование>Алексей</Наименование>

<Код>00004741</Код>

<Пол>Мужской</Пол>

................

в конец
<КонтактнаяИнформация>
      <Тип>Телефон</Тип>
      <Вид>Сотовый телефон</Вид>
      <Представление>95718351112</Представление>

А мне нужно что это было вместе
типа как бы так

<Наименование>Алексей</Наименование>
<Код>00004741</Код>
<Пол>Мужской</Пол>
<Тип>Телефон</Тип>
<Вид>Сотовый телефон</Вид>
<Представление>95718351112</Представление>

LexaK

xdto, а может ну его на фиг, это программирование?
вы даже код примера правильно скопировать не можете!
при этом САМИ делаете кучу ошибок, и говорите что кто-то виноват что у вас все криво работает! :befhbt:

Вот код примера, как в детской задачке найдите несколько отличий!



...

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

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

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

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

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

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

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

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

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

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

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

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

...

ответ Понравился? (в смысле пригодился?)

xdto

Уважаемый LexaK причем тут скопировать я же не маленький ребенок
дело в том что Ваш код выгружает файлы без остановки понимаете меня
Как это понимать
А этот код подправленный мной который выкладывал
 

Теги:

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

6106

Ответов: 3
Просмотров: 3208

31714

Ответов: 53
Просмотров: 30287

66381

Ответов: 14
Просмотров: 3861

69770

Ответов: 2
Просмотров: 1316

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

Поиск