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

Выгрузка в xml

Автор Алексей25, 26 апр 2017, 11:30

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

Алексей25

Всем доброго времени суток.
Есть такой порос, пытаюсь выгрузить документ в xml формат.

Нашел на просторах интернета(как чаще всего используемый) кусок кода

// Выгрузить в файл xml.
    ЗаписьXML=Новый ЗаписьXML();
    ЗаписьXML.ОткрытьФайл("путь к файлу");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Root");

    // Получить объект по ссылке.
    ВыгружаемыйОбъект=Документ.ПолучитьОбъект();

    // С помощью средств сериализации записать объект в файл.
    ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);

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


Но выдает ошибку

{Документ.ПоступлениеТоваров.Форма.ФормаДокумента.Форма(3962,23)}: Переменная не определена (Документ)
    ВыгружаемыйОбъект=<<?>>Документ.ПолучитьОбъект();  (Проверка: Сервер)

И сам вопрос, я не очень то понимаю что должно быть тут?
Документ.ПолучитьОбъект();

alex0402

Цитата: Алексей25 от 26 апр 2017, 11:30ВыгружаемыйОбъект=Документ.ПолучитьОбъект();

1) Не понятно зачем получать объект для выгрузки, можно выгружать ссылку.
2) в данном контексте документ это ссылка на доукмент тип ДокументСсылка.ИмяДокумента.
Спасибо за Сказать спасибо

ilyay

Документ здесь - это ссылка на объект типа документ. Если Вы из формы документа сохраняете, то имейте ввиду, что объект у вас преобразован в реквизит формы. И это не то же самое, что объект.

Рекомендуется сделать Записать() в форме, если она модифицирована, а потом сделать Док=Объект.Ссылка.ПолучитьОбъект(); И этот Док в xml сохранять.
Добавлено: 26 апр 2017, 11:48


Цитата: alex0402 от 26 апр 2017, 11:43
1) Не понятно зачем получать объект для выгрузки, можно выгружать ссылку.
Тогда не будет выгружена структура документа (поля и табличные части), только ссылка.

Алексей25

Цитата: ilyay от 26 апр 2017, 11:47Рекомендуется сделать Записать() в форме, если она модифицирована, а потом сделать Док=Объект.Ссылка.ПолучитьОбъект(); И этот Док в xml сохранять.

Был бы благодарен, если с примером, я еще мало знаю 1с.
Да, я делаю в самой форме документа и понял, что ссылки на него нет(в самом документе же).
Но что под понятиям "модифицирована"?
и записать в xml? Или это действия с формой?
Сам документ называется - ЗаказПоставщику(если это надо)

alex0402

Цитата: Алексей25 от 26 апр 2017, 12:21Но что под понятиям "модифицирована"?

изменена пользователем.
Цитата: Алексей25 от 26 апр 2017, 12:21и записать в xml?
запись в файл.
Спасибо за Сказать спасибо

Алексей25

Пока без записи(что бы разобрать), с условием в голове, что пользователь пока что ничего не менял.

Сделал так


&НаСервере
Процедура ОткрытьПодбор(Команда)

// Выгрузить в файл xml.
    ЗаписьXML=Новый ЗаписьXML();
    ЗаписьXML.ОткрытьФайл("C:\Users\PC-1\Desktop\doc.xml");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Root");

    // Получить объект по ссылке.
    ВыгружаемыйОбъект= Объект.Ссылка.ПолучитьОбъект();//Документ.ПолучитьОбъект();

    // С помощью средств сериализации записать объект в файл.
    ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);

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

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


После нажатия на кнопку файл пуст, в чем проблема?

Dethmontt

Цитата: Алексей25 от 26 апр 2017, 11:30И сам вопрос, я не очень то понимаю что должно быть тут?

Алексей25, то, что мы хотим записать в xml
Добавлено: 26 апр 2017, 13:52


Цитата: Алексей25 от 26 апр 2017, 13:20После нажатия на кнопку файл пуст, в чем проблема?

Цитата: Алексей25 от 26 апр 2017, 13:20Объект.Ссылка.ПолучитьОбъект();

наверное тут нет ничего...

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Алексей25

Цитата: Dethmontt от 26 апр 2017, 13:45наверное тут нет ничего...

А как туда поместить что мне нужно? Или может быть можно другим способам выгрузить документ?
Добавлено: 26 апр 2017, 15:20


Мой косяк, все выгружает.

И тогда еще один вопрос, что бы плодить темы.
Когда загружаешь(можно ли как-то выцепить данные данные)?

Как пример:
Выгрузил я поставку, а там есть номенклатура, которой в другой базе нету. И тогда он должен взять и создать ее, такое вообще возможно? Что-то типо проверки(перед загрузкой сначала чтение, проверка, а уже потом запись запись)

Dethmontt

Алексей25, юзай Конвертацию Данных ред. 2.х
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

ilyay

Если Модифицированность Тогда
    Записать();
КонецЕсли;


Когда записываешь, обращай внимание, где выполняется код - на клиенте или на сервере.
Файл пишется в файловую систему соответствующего компьютера.
Если на сервере, неправильно использовать путь на локальный диск, а правильно использовать сетевой путь. В кластере неизвестно на каком сервере код будет выполняться - потом файл не найдешь.
Если надо сохранять на клиенте, тогда прокидываешь сохраненный на сервере файл через временное хранилище на клиент.

План обмена решает вопросы переноса данных в другие базы через xml.


Теги:

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

Рейтинг@Mail.ru

Поиск