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

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

Выборка = ЭтотОбъект.Ссылка;      

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

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

Однако 1с ругается на эту строку: Выборка = ЭтотОбъект.Ссылка;
подскажите как правильно сослаться на форму открытого документа и оттуда взять реквизит НомерТТН?
1 LeoKeyn
 
12.07.18
15:37
(0) А код ты пишешь в форме документа?
2 LeoKeyn
 
12.07.18
15:39
(0) Скорее всего ты имеешь дело с УФ, следовательно тебе нужно поменять "ЭтотОбъект" на "Объект".
Объект.НомерТТН(если это реквизит документа)
3 LeoKeyn
 
12.07.18
15:40
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
  
Запись=Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\document.xml");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Доумент", "Взвешивание");

Выборка = Объект.НомерТТН;      

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

Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
КонецПроцедуры
4 EvgenyRus31
 
12.07.18
15:57
Код пишу в самом документе, добавлением новой "команды", она же выводит кнопку на форму.
5 EvgenyRus31
 
12.07.18
15:59
Не выходит так. Пишет: Переменная не определена (Объект)
6 dezss
 
12.07.18
15:59
(4) еще раз...
это в форме документа?
если да, то тебе в (3) дали правильный код
7 dezss
 
12.07.18
16:00
(4) кароч, добавь команду в форму документа и сделай как в (3) и будет тебе щастье
8 EvgenyRus31
 
12.07.18
16:03
Нет это не в форме документа, это в разделе "Команды".

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

Так вот я добавил Команду и в ней пишу данную процедуру
9 Timon1405
 
12.07.18
16:06
в (3) нужно поменять Объект на "ПараметрКоманды"
10 EvgenyRus31
 
12.07.18
16:13
Спасибо, все отлично рассказали и получилось, теперь я знаю даже 2 способа, как делать из формы документа и из параметра Команд. Супер БЛАГОДАРЮ.
11 EvgenyRus31
 
12.07.18
16:50
Помогите продолжить заполнение, может нужно типы данных еще дописывать?
Дополнил код:
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
Запись=Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\document.xml");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Доумент", "Взвешивание");

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

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

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

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