Имя: Пароль:
1C
1С v8
загрузка xml в документ
0 novichok_v_1c
 
27.10.16
14:16
Всем добрый день! Есть задача закинуть данные из xml-файла в документ 1с бухгалтерии 3.0 "Отчет о розничных продажах". Я создал по аналогии с загрузкой данных для справочника обработку для данного документа. Но данные у меня не записываются. Может есть у кого пример такой обработки или советы для решения данной проблемы?
P.S. Конфа-8.3.8.2088    база бух - 3.0.43.223
1 DrShad
 
27.10.16
14:34
как именно они не записываются?
2 novichok_v_1c
 
27.10.16
14:37
(1) ну нажимаю на кнопку "Записать XML в документ". он пару секунд думает,а при проверке документа "Отчет о розничных продажах" пусто.
3 DrShad
 
27.10.16
14:37
и что конкретно ты создал?
4 DrShad
 
27.10.16
14:37
под кнопкой Записать XML в документ какой алгоритм?
5 novichok_v_1c
 
27.10.16
14:40
(4) &НаСервере
Процедура  ПрочитатьXMLФайлНаСервере(Файлик);
    
    
    ПутьКФайлу = Файлик[0];    
          ЧтениеXML = Новый ЧтениеXML;
     ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
    
    
     СЗ = Новый СписокЗначений;
    
     Пока ЧтениеXML.Прочитать() Цикл
        
         Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента
             Тогда    ЧтениеXML.ПрочитатьАтрибут();
                     Атрибут = ЧтениеXML.Значение;
             КонецЕсли;
        
             Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
                
                 //дата оказания
                 Если Атрибут  =  "visit_date" Тогда
                     СЗ.Добавить(ЧтениеXML.Значение);
                 КонецЕсли;
                 //код услуги
                  Если Атрибут  =  "service_code" Тогда
                     СЗ.Добавить(ЧтениеXML.Значение);
                 КонецЕсли;
                        //Услуга
                 Если Атрибут  =  "service_name" Тогда
                     СЗ.Добавить(ЧтениеXML.Значение);
                 КонецЕсли;
                     //Кабинет
                 Если Атрибут  =  "cablab_name" Тогда
                     СЗ.Добавить(ЧтениеXML.Значение);
                     КонецЕсли;

             КонецЕсли;
            
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и
             Атрибут = "status_mnemo"   Тогда
             СоздатьЭлементДокумента(СЗ) ;
             СЗ.Очистить();
             КонецЕсли;
            
                      КонецЦикла;
    
    
КонецПроцедуры

Процедура  СоздатьЭлементДокумента(СЗ) ;
Если СЗ.Количество() >0 Тогда
НовыйЭлемент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
НовыйЭлемент.Дата = СЗ[0].Значение;
НовыйЭлемент.Код = СЗ[1].Значение;
НовыйЭлемент.Товары.Номенклатура = СЗ[2].Значение;
НовыйЭлемент.Склад = СЗ[3].Значение;

    
      НовыйЭлемент.Записать();
СЗ.Очистить();
КонецЕсли;

    

КонецПроцедуры




&НаКлиенте
Процедура ПрочитатьИзФайлаXML(Команда)
    
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
Фильтр = "xml|*.xml";
ДиалогОткрытияФайла.Фильтр = Фильтр;
Если ДиалогОткрытияФайла.Выбрать() Тогда
    Файлик = ДиалогОткрытияФайла.ВыбранныеФайлы;
    ПрочитатьXMLФайлНаСервере(Файлик);
КонецЕсли;


ОбновитьИнтерфейс();
    
    
КонецПроцедуры
6 DrShad
 
27.10.16
14:44
НовыйЭлемент.Товары.Номенклатура = СЗ[2].Значение;

что это!? что по твоему должно произойти?
7 novichok_v_1c
 
27.10.16
14:46
(6) значение второго эл-та xml-го файла уйдет в номенклатуру. нет разве?
8 DrShad
 
27.10.16
14:50
нет
9 arccos6pi
 
27.10.16
14:50
(7) Стаж: 4 года 5 месяцев 25 дней
и так писать...
10 novichok_v_1c
 
27.10.16
14:51
(8) а что нужно поменять?
11 DrShad
 
27.10.16
14:52
(10) боюсь озвучивать, но похоже начать нужно с начала
12 novichok_v_1c
 
27.10.16
14:56
(11) а если по конкретнее? с нуля все писать что ли?
или можно в этом кода что-то поменять?
13 novichok_v_1c
 
27.10.16
15:15
(9) я как бы оч давно не работал в 1с. поэтому тут и спрашиваю. Может у тебя есть конкретные предложения по исправлению кода или доработки его?
14 novichok_v_1c
 
27.10.16
15:20
апап
15 arccos6pi
 
27.10.16
15:21
(13) тут нечего исправлять
тут нужно писать заново
16 novichok_v_1c
 
27.10.16
15:22
(15) хорошо,тогда с чего начать? по подробнее можешь описать?
17 arccos6pi
 
27.10.16
16:46
(16) для начала понять,что все что вы прочитали из xml - строки, а нужные реквизиты у документа имею совсем другие типы
потом неплохо бы понять что нужно добавить строку в табличную часть прежде чем ее заполнять
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший