Имя: Пароль:
1C
1С v8
избавиться от префикса в xml
0 04347
 
20.02.16
09:57
пишу обработку, которая создает файл xml

Запись.ЗаписатьНачалоЭлемента("document");
        
    Запись.ЗаписатьНачалоЭлемента("doc_type", "shipping");  
    Запись.ЗаписатьКонецЭлемента();
        
    Запись.ЗаписатьНачалоЭлемента("is_spirit", "false");
    Запись.ЗаписатьКонецЭлемента();

когда выгружаю данные появляеся префикс d3p1:

<document>
    <d3p1:doc_type xmlns:d3p1="shipping"/>
    <d3p1:is_spirit xmlns:d3p1="false"/>

а нужно

<document>
    <doc_type>shipping</doc_type>
    <is_spirit>false</is_spirit>

Как записать файл без префикса?
1 ДенисЧ
 
20.02.16
09:58
поиск по своему коду на этот префик что-то дал?
2 Defender aka LINN
 
20.02.16
09:59
(0) Я может тебя удивлю, но запись XML начинается не с этих строк.
3 Лефмихалыч
 
20.02.16
10:04
найди и удали строки, содержащие "ЗаписатьСоответствиеПространстваИмен"
4 04347
 
20.02.16
10:34
(3) у меня нет этих строк

вот пример с самого начала

Запись=Новый ЗаписьXML;
    
    // Открываем файл для записи XML
    
    ИмяФайла="EG_TTN_" + Формат(ТекущаяДата(),"ДФ=ггггММдд")+ "_" + Формат(ТекущаяДата(),"ДФ=ЧЧммсс");
    ИмяФайлаXML=ИмяФайла+".xml";
    
    Запись.ОткрытьФайл("C:\1c\"+ИмяФайлаXML, "Windows-1251");
    
    Запись.ЗаписатьОбъявлениеXML();
    
    Запись.ЗаписатьНачалоЭлемента("data_file");    //все атрибуты обязательны
    Запись.ЗаписатьАтрибут("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance";);
    Запись.ЗаписатьАтрибут("xsi:noNamespaceSchemaLocation", "EG_TTN_01.xsd");
    Запись.ЗаписатьАтрибут("file_ID", ИмяФайла); //EG_TTN_YYYYMMDD_hhmmss.xml
    Запись.ЗаписатьАтрибут("format_version","0.1");
    ДатаФайла = ПреобразованиеДаты(Формат(ТекущаяДата(), "ДЛФ=ДВ"));
    Запись.ЗаписатьАтрибут("file_date", ДатаФайла);    
    Запись.ЗаписатьАтрибут("doc_count", Строка(КолДок));  //счетчик документов
    
    //Идентификационные сведения товарно-транспортной накладной    
        
        Запись.ЗаписатьНачалоЭлемента("document");
        
        Запись.ЗаписатьНачалоЭлемента("doc_type", "shipping");   //отгрузка  ???? d3p1
        Запись.ЗаписатьКонецЭлемента();
        
        Запись.ЗаписатьНачалоЭлемента("is_spirit", "false");
        Запись.ЗаписатьКонецЭлемента();
5 04347
 
20.02.16
10:38
(1) я этот префикс не пишу, (2) я знаю, я привела отрывок файла, в (4) есть начало
6 Лефмихалыч
 
20.02.16
10:47
(4) значит пространства имен и префикс уже описаны в том файле, который ты открываешь для дозаписи. Подозреваю, что, если ты префикс выпилишь, файл не воспримет то, для чего ты его делаешь
7 04347
 
20.02.16
11:03
(6) как раз наоборот, с префиксами валидацию не проходит. А когда я префиксы вручную выпиливаю, валидацию файл проходит.
Файла нет, он каждый раз создается заново, ему присваивается имя до секунды
8 Лефмихалыч
 
20.02.16
11:15
(7) откуда тогда взялось желание избаиться от префиксов?
9 04347
 
20.02.16
11:21
(8) у меня есть клиент, который производит пиво. Я пишу выгрузку для него в ЕГАИС, файл без префиксов загружается, с префиксами нет "Сообщение: Обрабатывается Файл D:\EG_TTN_20160219_105004.xml ...
Ошибка: Некорректный формат входного XML файла:
Ошибка в строке 4 : Элемент "document" имеет недопустимый дочерний элемент "doc_type" в пространстве имен "shipping". Список ожидаемых элементов: "doc_type".
Сообщение: Файл D:\EG_TTN_20160219_105004.xml не обработан.
10 Asmody
 
20.02.16
11:44
вот в этом файле EG_TTN_01.xsd что?
11 IlyaSR
 
20.02.16
11:46
похоже на сериализацию элементов

http://www.tdoc.ru/c/dotnet/net-framework/xml-serialization-f2-page3.html
12 Asmody
 
20.02.16
11:50
попробуй

Запись.ЗаписатьНачалоЭлемента("data_file");
Запись.ЗаписатьАтрибут("xmlns", "d3p1");
13 04347
 
20.02.16
12:17
(10) этого файла нет.

Вот у разработчиков записаны требования

6.32.2.4 XSD-схема файла обмена
<?xml version="1.0" encoding="windows-1251"?>
? <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
attributeFormDefault="unqualified" elementFormDefault="qualified">
? <xsd:complexType name="contragent">
? <xsd:all>
<xsd:element name="inn" type="xsd:string" />
<xsd:element name="kpp" type="xsd:string" />
<xsd:element name="client_code" type="xsd:string" />
</xsd:all>
</xsd:complexType  и т.д.


а потом приведен пример

Ниже приведен пример файла с конкретными значениями параметров для фасованной импортной продукции.
<?xml version="1.0" encoding="windows-1251" ?>
- <data_file xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:noNamespaceSchemaLocation="EG_TTN_01.xsd" file_ID="EG_TTN_20090413_105500" format_version="0.1" file_date="2009-04-13T11:09:50" doc_count="1">
- <document>
<doc_type>shipping</doc_type>
<is_spirit>false</is_spirit>
- <ttn_inform>
<ship_date>2009-04-13T09:00:00</ship_date>
<load_date>2009-04-13T09:15:00</load_date>
14 04347
 
20.02.16
12:24
(12)написала
Запись.ЗаписатьНачалоЭлемента("data_file");    //все атрибуты обязательны
    Запись.ЗаписатьАтрибут("xmlns", "d3p1");  //ИЗ МИСТЫ
    Запись.ЗаписатьАтрибут("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance";);
    Запись.ЗаписатьАтрибут("xsi:noNamespaceSchemaLocation", "EG_TTN_01.xsd");
    Запись.ЗаписатьАтрибут("file_ID", ИмяФайла); //EG_TTN_YYYYMMDD_hhmmss.xml

получила

<?xml version="1.0" encoding="Windows-1251"?>
<data_file xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns="d3p1" xsi:noNamespaceSchemaLocation="EG_TTN_01.xsd" file_ID="EG_TTN_20160220_142333" format_version="0.1" file_date="2016-02-20T14:23:33" doc_count="1">
    <document>
        <d3p1:doc_type xmlns:d3p1="shipping"/>
        <d3p1:is_spirit xmlns:d3p1="false"/>
        <ttn_inform>


может не так нужно было писать?
15 04347
 
20.02.16
12:25
(11) читаю
16 04347
 
20.02.16
12:31
(11) вижу похожее
<anyType xmlns:q1="http://www.w3.org/2001/XMLSchema";
d3p1:type="q1:string"
xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance">This is a string</anyType>

вижу, что избавляются от этого, но не понимаю, как это применить к 1с
17 04347
 
20.02.16
13:57
помогло разбитие на две строки

Запись.ЗаписатьНачалоЭлемента("doc_type");  
Запись.ЗаписатьТекст("shipping");
18 Asmody
 
20.02.16
14:32
(17) Никто не читает СП.
Второй параметр в ЗаписатьНачалоЭлемента() — это URI пространства имен. Вот оно и пихало его как могло.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший