Имя: Пароль:
1C
1С v8
Работа с XML запись
0 Начинающий_13
 
05.07.16
15:16
Здравствуйте
Скажите как избавиться от следующей строки
<?xml version="1.0" encoding="windows-1251" ?>

ЗаписьXML=Новый ЗаписьXML;        ЗаписьXML.ОткрытьФайл(ПутьКФайлу+"invoice-"+СокрЛП(СтрокаТЗ.УНППоставщикаПолучателя)+".xml", "windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
1 Зая Бусечка
 
05.07.16
15:19
А зачем избавляться от строки, котороая положена по стандарту?
2 Начинающий_13
 
05.07.16
15:22
Я сравниваю два файла, оба открываю в одной программе. В моем файле есть, во втором нет. Мой файл при загрузке выдает ошибку(ошибка открытия формы) второй нет.Если можно хочу попробовать без этой строки(может скрыть ее.)
3 Fragster
 
гуру
05.07.16
15:23
ЗаписьXML.ЗаписатьОбъявлениеXML(); - нафига?
4 Зая Бусечка
 
05.07.16
15:24
(2) Выкинь свою "одну программу"
5 HardBall
 
05.07.16
15:24
ЗаписьXML.ЗаписатьОбъявлениеXML() =  <?xml version="1.0" encoding="windows-1251" ?>
6 Начинающий_13
 
05.07.16
15:25
(3) Если без писать файл вообще не формируется
7 Димитрий1с
 
05.07.16
15:25
(2) Киньте код. Посмотрим что у Вас там.
8 Начинающий_13
 
05.07.16
15:28
Это выгрузка ЭСЧФ Беларусь. Слишком большой. Какую часть.
9 Начинающий_13
 
05.07.16
15:29
Сброшу по циклу При формировании файлов
Для каждого СтрокаТЗ Из ТаблицаДокументов Цикл
        
        НомерДокументаПоПорядку = НомерДокументаПоПорядку+1;
        
        ЗаписьXML=Новый ЗаписьXML;
        //// УТФ
        //ЗаписьXML.ОткрытьФайл(ПутьКФайлу+"invoice-"+СокрЛП(СтрокаТЗ.УНППоставщикаПолучателя)+"-"+Формат(Год(ТекущаяДата()),"ЧЦ=4; ЧГ=0")+"-"+Формат(НомерДокументаПоПорядку, "ЧЦ=10; ЧВН=; ЧГ=0")+".xml", "UTF-8");
        //// 1261
        ЗаписьXML.ОткрытьФайл(ПутьКФайлу+"invoice-"+СокрЛП(СтрокаТЗ.УНППоставщикаПолучателя)+"-"+Формат(Год(ТекущаяДата()),"ЧЦ=4; ЧГ=0")+"-"+Формат(НомерДокументаПоПорядку, "ЧЦ=10; ЧВН=; ЧГ=0")+".xml", "windows-1251");
        ЗаписьXML.ЗаписатьОбъявлениеXML();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("issuance"          , "http://www.w3schools.com";);
        ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(""    , "http://www.w3schools.com";);
        ЗаписьXML.ЗаписатьАтрибут("sender", ДанныеОрганизации.ИНН);

        //// Данные основные(накладной) general
        ЗаписьXML.ЗаписатьНачалоЭлемента("general"); //// Начало general
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("number");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НомерЭСЧФ);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("dateIssuance");
        ЗаписьXML.ЗаписатьТекст(Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd"));
        ЗаписьXML.ЗаписатьКонецЭлемента();
             
        ЗаписьXML.ЗаписатьНачалоЭлемента("dateTransaction");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ДатаСовершенияОперации);
        ЗаписьXML.ЗаписатьКонецЭлемента();

        ЗаписьXML.ЗаписатьНачалоЭлемента("documentType");
        ЗаписьXML.ЗаписатьТекст(ТипЭСЧФ);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец general
        
        
        //// Данные провайдера provider
        ЗаписьXML.ЗаписатьНачалоЭлемента("provider"); //// Начало провайдера
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("providerStatus");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПоставщикСтатус);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("dependentPerson");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПоставщикВзаимозависимоеЛицо);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("residentsOfOffshore");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПоставщикРезидентОфшорнойЗоны);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("specialDealGoods");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.Поставщик30НК);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("bigCompany");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПоставщикКрупныйПлательщик);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("countryCode");
        ЗаписьXML.ЗаписатьТекст("112");
        ЗаписьXML.ЗаписатьКонецЭлемента();
      
        //// Для док. Реализаци поставщику ДАННЫЕ НАВЕРНОЕ БУДУТ НАШЕЙ ОРГАНИЗАЦИИ
        ЗаписьXML.ЗаписатьНачалоЭлемента("unp");
        ЗаписьXML.ЗаписатьТекст(ДанныеОрганизации.ИНН);
        //ЗаписьXML.ЗаписатьТекст("ИНН ОРГ");        
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("name");
        ЗаписьXML.ЗаписатьТекст(ДанныеОрганизации.НаименованиеПолное);
        //ЗаписьXML.ЗаписатьТекст("Имя ОРГ");
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("address");
        ЗаписьXML.ЗаписатьТекст(ДанныеОрганизации.ЮридическийАдрес);
        //ЗаписьXML.ЗаписатьТекст("ЮР Адрес ОРГ");
        ЗаписьXML.ЗаписатьКонецЭлемента();

        ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец Провайдера
        
        //// Данные Реципиента recipien
        ЗаписьXML.ЗаписатьНачалоЭлемента("recipien"); //// Начало Реципиента
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("recipientStatus");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПолучательСтатус);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("dependentPerson");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПолучательВзаимозависимоеЛицо);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("residentsOfOffshore");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПолучательРезидентОфшорнойЗоны);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("specialDealGoods");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.Получатель30НК);
        ЗаписьXML.ЗаписатьКонецЭлемента();

        ЗаписьXML.ЗаписатьНачалоЭлемента("bigCompany");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ПолучательКрупныйПлательщик);
        ЗаписьXML.ЗаписатьКонецЭлемента();

        ЗаписьXML.ЗаписатьНачалоЭлемента("countryCode");
        ЗаписьXML.ЗаписатьТекст("112");
        ЗаписьXML.ЗаписатьКонецЭлемента();

        ЗаписьXML.ЗаписатьНачалоЭлемента("unp");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.УНППоставщикаПолучателя);
        ЗаписьXML.ЗаписатьКонецЭлемента();

        ЗаписьXML.ЗаписатьНачалоЭлемента("name");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НаименованиеПоставщикаПолучателя);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("address");
        ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.ЮридическийАдресПоставщикаПолучателя);
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец Реципиента
        
        ////// Данные по товарам ВСЕГО ПО СЧЕТУ rosterList
        ЗаписьXML.ЗаписатьНачалоЭлемента("roster"); //// Начало roster
        
        ЗаписьXML.ЗаписатьАтрибут("totalCostVat" , Формат(СтрокаТЗ.ДокументВсего,"ЧЦ=15; ЧДЦ=2"));
          ЗаписьXML.ЗаписатьАтрибут("totalExcise"  , "0.00");
           ЗаписьXML.ЗаписатьАтрибут("totalVat"     , Формат(СтрокаТЗ.ДокументНДС,"ЧЦ=15; ЧДЦ=2"));
          ЗаписьXML.ЗаписатьАтрибут("totalCost"    , Формат(СтрокаТЗ.ДокументВсегоБезНДС,"ЧЦ=15; ЧДЦ=2"));
             
        Если СтрокаТЗ.СуммаБезНДС>0 и СтрокаТЗ.ВсегоБезНДС>0 Тогда
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rosterItem"); //// Начало rosterItem
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("Name");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НаименованиеТовара);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaExcise");
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("vat");
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rate");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.СтавкаНДСБезНДС);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rateType");
            ЗаписьXML.ЗаписатьТекст("NO_VAT");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaVat");
            //ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.СуммаНДСБезНДС, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента();
            //////////////////////////////////////////////////////////
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("costVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.ВсегоБезНДС, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
                    
            ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец rosterItem
        КонецЕсли;      
        
        Если СтрокаТЗ.Сумма0>0 и СтрокаТЗ.Всего0>0 Тогда
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rosterItem"); //// Начало rosterItem
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("Name");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НаименованиеТовара);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaExcise");
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("vat");
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rate");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.СтавкаНДС0);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rateType");
            ЗаписьXML.ЗаписатьТекст("ZERO");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.СуммаНДС0, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента();
            //////////////////////////////////////////////////////////
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("costVat");
            //ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.Всего0, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец rosterItem
            
        КонецЕсли;

        Если СтрокаТЗ.СуммаНДС10>0  Тогда
            
              ЗаписьXML.ЗаписатьНачалоЭлемента("rosterItem"); //// Начало rosterItem
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("Name");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НаименованиеТовара);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaExcise");
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("vat");
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rate");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.СтавкаНДС10);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rateType");
            ЗаписьXML.ЗаписатьТекст("DECIMAL");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.СуммаНДС10, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента();
            //////////////////////////////////////////////////////////
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("costVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.Всего10, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец rosterItem

        КонецЕсли;    
        
        Если СтрокаТЗ.СуммаНДС18>0  Тогда
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rosterItem"); //// Начало rosterItem
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("Name");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НаименованиеТовара);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaExcise");
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("vat");
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rate");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.СтавкаНДС18);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rateType");
            ЗаписьXML.ЗаписатьТекст("DECIMAL");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.СуммаНДС18, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента();
            //////////////////////////////////////////////////////////
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("costVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.Всего18, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец rosterItem

        КонецЕсли;
        
        Если СтрокаТЗ.СуммаНДС20>0  Тогда
                
            ЗаписьXML.ЗаписатьНачалоЭлемента("rosterItem"); //// Начало rosterItem
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("Name");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.НаименованиеТовара);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaExcise");
            ЗаписьXML.ЗаписатьТекст(".00");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("vat");
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rate");
            ЗаписьXML.ЗаписатьТекст(СтрокаТЗ.СтавкаНДС20);
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("rateType");
            ЗаписьXML.ЗаписатьТекст("DECIMAL");
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("summaVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.СуммаНДС20, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента();
            //////////////////////////////////////////////////////////
            
            ЗаписьXML.ЗаписатьНачалоЭлемента("costVat");
            ЗаписьXML.ЗаписатьТекст(Формат(СтрокаТЗ.Всего20, "ЧЦ=15; ЧДЦ=2"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            
            ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец rosterItem
    
        КонецЕсли;    

        ЗаписьXML.ЗаписатьКонецЭлемента(); //// Конец roster
        
        ЗаписьXML.ЗаписатьКонецЭлемента();  /// Конец issuance
        
        ЗаписьXML.Закрыть();

    КонецЦикла;
10 Начинающий_13
 
05.07.16
15:31
Сами файлы формируются хорошо. Инициализация это то что их отличает от ОРИГИНАЛА
11 Начинающий_13
 
05.07.16
15:32
В оригинале она скрыта.
12 Димитрий1с
 
05.07.16
15:35
ЗаписьXML.ОткрытьФайл(ПутьКФайлу+"invoice-"+СокрЛП(СтрокаТЗ.УНППоставщикаПолучателя)+".xml", "windows-1251"); в этот момент он ругаеться?
13 mehfk
 
05.07.16
15:36
(9) Покажи что будет если выполнить этот код:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьНачалоЭлемента("Начинающий_13");
ЗаписьXML.ЗаписатьАтрибут("invoice", XMLСтрока(Новый УникальныйИдентификатор));
ЗаписьXML.ЗаписатьКонецЭлемента();
Сообщить(ЗаписьXML.Закрыть());
14 Начинающий_13
 
05.07.16
15:39
(12) Да нет. ругается на сайте гружу обычное окно и сообщение об ошибке. Я думаю, что это связано в самим файлом инициализацией его
15 Начинающий_13
 
05.07.16
15:41
(13) Выходит
<Начинающий_13 invoice="a1e7e88c-af7c-4616-b4dd-ddb02bf75658"/>
<Начинающий_13 invoice="000d50f3-7380-47d5-b745-4f5ae3e80cd4"/>