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

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

Автор ЕвгенийЗерно, 12 июл 2018, 12:23

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

ЕвгенийЗерно

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

&НаКлиенте

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

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

wise

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

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

}
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

ЕвгенийЗерно

Цитата: wise от 12 июл 2018, 13:06
(0) попробуйте ТАК:
{
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   ЗаписьXML = Новый ЗаписьXML;
   ЗаписьXML.ОткрытьФайл("D:\kontragenty.xml");
   ЗаписьXML.ЗаписатьНачалоЭлемента("Главный");  //записываем первый элемент

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

}

Так номер ТТН должен браться из открытого документа (Текущего), он не может быть постоянным значением "Номер1234567" - этот параметр переменная.

Добавлено: 12 июл 2018, 15:13


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

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

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

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

wise

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

ЕвгенийЗерно

Цитата: wise от 12 июл 2018, 16:40
(2)Объект.НомерТТН
Нет это не в форме документа, это в разделе "Команды".

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

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

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

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

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

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

Теги:

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

Рейтинг@Mail.ru

Поиск