Имя: Пароль:
1C
1С v8
Как в отладчике посмотреть содержимое XML файла?
0 dft2014
 
12.10.18
14:48
Создаю XML-файл, заполняю его. На выходе получаю пустой файл. Как мне в отладчике посмотреть записывается что-то в него или нет? Ниже код:


Процедура Web() Экспорт
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл("C:\OBMEN\staff.xml");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("STAFF");
    ЗаписьXML.ЗаписатьАтрибут("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance";);
    
    
    Для каждого Выборка из ТЗ_на_отправку Цикл
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("Person");
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("Number");
        ЗаписьXML.ЗаписатьТекст(Выборка.PersonnelNumber);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("LastName");
        ЗаписьXML.ЗаписатьТекст(Выборка.Surname);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("FirstName");
        ЗаписьXML.ЗаписатьТекст(Выборка.Name);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("MiddleName");
        ЗаписьXML.ЗаписатьТекст(Выборка.Patronymic);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("Sex");
        ЗаписьXML.ЗаписатьТекст(Строка(Выборка.Sex));
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("BirthDate");
        ЗаписьXML.ЗаписатьТекст(Строка(ОбработатьДату(Выборка.BirthDate)));
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("TakeDate");
        ЗаписьXML.ЗаписатьТекст(Строка(ОбработатьДату(Выборка.ReceptionDate)));
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("Post");
        ЗаписьXML.ЗаписатьТекст(Строка(Выборка.Position));
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("Subdivision");
        ЗаписьXML.ЗаписатьТекст(Выборка.SubdivisionCode);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("VacationDays");
        ЗаписьXML.ЗаписатьТекст(Выборка.VacationDays);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьКонецЭлемента();    
        
    КонецЦикла;
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.Закрыть();
    
    
    ЗаписьXML_Состояния.ЗаписатьКонецЭлемента();
    ЗаписьXML_Состояния.Закрыть();
    
КонецПроцедуры
1 Ёпрст
 
гуру
12.10.18
14:52
(0) ну, файло явно не пустое.
Как проверил, что оно пустое ?
2 Ёпрст
 
гуру
12.10.18
14:52
как минимум, там будет 1 элемент и запись о пространстве имён
3 Ёпрст
 
гуру
12.10.18
14:54
а так, ЗаписьXML.Закрыть() - возвращает строку, весь текст твоей xml
4 Ёпрст
 
гуру
12.10.18
14:54
можешь глядеть в отладчике
5 dft2014
 
12.10.18
14:55
<?xml version="1.0" encoding="UTF-8"?>
<STAFF xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <Person>
        <Number>0000005960</Number>
        <LastName>Иванов</LastName>
        <FirstName>Иван</FirstName>
        <MiddleName>Иванович</MiddleName>
        <Sex>Мужской</Sex>
        <BirthDate>1987-09-28T00:00:00</BirthDate>
        <TakeDate>2012-12-13T00:00:00</TakeDate>
        <DismissDate>2013-07-31T00:00:00</DismissDate>
        <Post>Менеджер</Post>
        <Subdivision>174</Subdivision>
        <VacationDays/>
    </Person>
    <Person>
        <Number>0002005009</Number>
        <LastName>Петров</LastName>
        <FirstName>Петр</FirstName>
        <MiddleName>Петрович</MiddleName>
        <Sex>Мужской</Sex>
        <BirthDate>1995-03-06T00:00:00</BirthDate>
        <TakeDate>2017-01-16T00:00:00</TakeDate>
        <DismissDate>0001-01-01T00:00:00</DismissDate>
        <Post>Юрист</Post>
        <Subdivision>254</Subdivision>
        <VacationDays>
6 dft2014
 
12.10.18
14:55
+(5) Это я на выходе такое получаю.
7 Ёпрст
 
гуру
12.10.18
14:56
(6) и ? Че не устраивает то ? :)
8 dft2014
 
12.10.18
15:03
(7) Видите, блок VacationDays пустой! И незакрытый! Почему?! Там у меня цифры должны подтягиваться (тип число).
9 Mankubus
 
12.10.18
15:05
(8) значит у тебя в выборке пустота в этом поле
10 Mankubus
 
12.10.18
15:06
(8) и он закрытый. Видишь там символ / есть
11 dft2014
 
12.10.18
15:13
(9) Да, пустота может быть в некоторых случаях, но я думала, что в этом случае, будет заполнено вот так:
<VacationDays></VacationDays>

Разве не так?
12 Ёпрст
 
гуру
12.10.18
15:18
(11) это одно и тоже
13 Darych
 
12.10.18
15:19
не так.. тебе шашечки или ехать?
14 dft2014
 
12.10.18
15:19
(12) и (13) противоречите друг другу
15 Darych
 
12.10.18
15:20
(14) с чего б?
16 sitex
 
naïve
12.10.18
15:21
(14) Такой синтаксис элемента называется самозакрывающийся.
17 Ёпрст
 
гуру
12.10.18
15:23
(14)
Ознакомься, как оформляется пустой элемент
https://msdn.microsoft.com/ru-ru/library/ms256085(v=vs.120).aspx
18 Serg_1960
 
12.10.18
15:40
Хм... кто кого тут путает?
В файле (5) первый <Person> - закрыт, второй - нет. Ок? В первом <Person> элемент VacationDays - пустой, а во втором - нет и при попытке вывода значения - исключительная ситуация ( и судя по всему - без анализа ошибки).
19 dft2014
 
12.10.18
17:14
Всем спасибо, разобралась!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший