PDA

Просмотр полной версии : Как выгрузить реквизит документа в XML файл



x-perec
12.07.2018, 14:21
Добрый день! Подскажите, как выгрузить реквизит документа в XML файл? Создаю новую команду в документе "Взвешивание". Там добавляю процедуру, но не хватает ума написать правильно код. Нужно, чтоб при нажатии кнопки с этого документа создавался файл XML и туда записан был реквизит документа "НомерТТН".
Вот какой код пробую доделать, но чего то не хватает :

&НаКлиенте

Процедура ОбработкаКоманды(Параметр� �оманды, ПараметрыВыполненияКоманд ы)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("D:\ТТН.xml");
ЗаписьXML.ЗаписатьНачалоЭле мента("Главный"); //записываем первый элемент

//указываем все атрибуты первого элемента в документе
ЗаписьXML.ЗаписатьАтрибут("НомерТТН", Строка(ЭтотОбъект.НомерТТН ));
ЗаписьXML.ЗаписатьКонецЭлем ента();
ЗаписьXML.Закрыть();
КонецПроцедуры

x-perec
12.07.2018, 17:19
Дошел до такого кода:
&НаКлиенте
Процедура ОбработкаКоманды(Параметр� �оманды, ПараметрыВыполненияКоманд ы)

Запись=Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\document.xml");
Запись.ЗаписатьОбъявлениеX ML();
Запись.ЗаписатьНачалоЭлем� �нта("Корневой");
Запись.ЗаписатьАтрибут("Доумент", "Взвешивание");
Выборка = ЭтотОбъект.Ссылка;

Запись.ЗаписатьНачалоЭлем� �нта("Элемент");
Запись.ЗаписатьАтрибут("Номер", Строка(Выборка.НомерТТН));
Запись.ЗаписатьКонецЭлеме� �та();

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

Однако 1с ругается на эту строку: Выборка = ЭтотОбъект.Ссылка;
подскажите как правильно сослаться на форму открытого документа и оттуда взять реквизит НомерТТН?

x-perec
12.07.2018, 17:20
Дошел до такого кода:
&НаКлиенте
Процедура ОбработкаКоманды(Параметр� �оманды, ПараметрыВыполненияКоманд ы)

Запись=Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\document.xml");
Запись.ЗаписатьОбъявлениеX ML();
Запись.ЗаписатьНачалоЭлем� �нта("Корневой");
Запись.ЗаписатьАтрибут("Доумент", "Взвешивание");
Выборка = ЭтотОбъект.Ссылка;

Запись.ЗаписатьНачалоЭлем� �нта("Элемент");
Запись.ЗаписатьАтрибут("Номер", Строка(Выборка.НомерТТН));
Запись.ЗаписатьКонецЭлеме� �та();

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

Однако 1с ругается на эту строку: Выборка = ЭтотОбъект.Ссылка;
подскажите как правильно сослаться на форму открытого документа и оттуда взять реквизит НомерТТН???

x-perec
13.07.2018, 18:25
в форме документа, это в разделе "Команды".

Документ взвешивание -> формы
-> Команды
-> Макеты

Так вот я добавил Команду и в ней пишу данную процедуру
получилось пока так:
Процедура ОбработкаКоманды(Параметр� �оманды, ПараметрыВыполненияКоманд ы)

Запись=Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\document.xml");
Запись.ЗаписатьОбъявлениеX ML();
Запись.ЗаписатьНачалоЭлем� �нта("Корневой");
Запись.ЗаписатьАтрибут("Доумент", "Взвешивание");

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

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

Запись.Закрыть();
КонецПроцедуры

Номер выводит отлично, так как надо, но вот Дату выдает ошибку:
{Документ.Взвешивание.Кома� �да.Меркурий.МодульКоманды( 16)}: Ошибка при вызове метода контекста (ЗаписатьТекст)
Запись.ЗаписатьТекст(Парам етрКоманды.Дата);
по причине:
Несоответствие типов (параметр номер '1')

Помогите решить проблему. Может лучше было бы делать с формы документа, тогда бы не было данных ошибок

Touch_of_soul
11.09.2018, 21:48
в форме документа, это в разделе "Команды".

Документ взвешивание -> формы
-> Команды
-> Макеты

Так вот я добавил Команду и в ней пишу данную процедуру
получилось пока так:
Процедура ОбработкаКоманды(Параметр� �оманды, ПараметрыВыполненияКоманд ы)

Запись=Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\document.xml");
Запись.ЗаписатьОбъявлениеX ML();
Запись.ЗаписатьНачалоЭлем� �нта("Корневой");
Запись.ЗаписатьАтрибут("Доумент", "Взвешивание");

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

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

Запись.Закрыть();
КонецПроцедуры

Номер выводит отлично, так как надо, но вот Дату выдает ошибку:
{Документ.Взвешивание.Кома� �да.Меркурий.МодульКоманды( 16)}: Ошибка при вызове метода контекста (ЗаписатьТекст)
Запись.ЗаписатьТекст(Парам етрКоманды.Дата);
по причине:
Несоответствие типов (параметр номер '1')

Помогите решить проблему. Может лучше было бы делать с формы документа, тогда бы не было данных ошибок

решил или ещё актуально?