8.х Срочно, вопрос про загрузку из ХМЛ файла

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ZZZ, 9 дек 2010.

  1. TopicStarter Overlay
    ZZZ
    Offline

    ZZZ

    Регистрация:
    13 сен 2010
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    у меня в хмл выгружаются чеки ККМ, в другой базе надо их загрузить. все работает, только читает криво. через один документ.
    вот код, подскажите в чем проблема

    ЧтениеXML=Новый ЧтениеXML();
    ЧтениеXML.ОткрытьФайл("c:\doc.xml");


    Пока ЧтениеXML.Прочитать()Цикл
    Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
    Если ЧтениеXML.Имя="DocumentObject.ЧекККМ" Тогда
    ЗагружаемыйОбъект=ПрочитатьXML(ЧтениеXML);
    ЗагружаемыйОбъект.ПолучитьФорму("ФормаДокумента").Открыть();
    ЗагружаемыйОбъект.Записать();
    ЗагружаемыйОбъект.ПолучитьФорму("ФормаДокумента").Закрыть();
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
    ЧтениеXML.Закрыть();



    первый читает, второй пропускает , третий читает, четвертый пропускает и т.д.
    где я проскакиваю?
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    На отладчике проверяйте когда считывает дважды.
  3. TopicStarter Overlay
    ZZZ
    Offline

    ZZZ

    Регистрация:
    13 сен 2010
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    <Root>
    <DocumentObject.ЧекККМ>
    <Ref>
    9be69f54-03a3-11e0-8a74-00195b300101
    </Ref>
    ....
    </Row>
    </Оплата>
    </DocumentObject.ЧекККМ>
    <DocumentObject.ЧекККМ>
    ....
    </DocumentObject.ЧекККМ>
    ....


    и т.д. вот файл. на отладчике что то не получилось поймать. сейчас опять гляну. просто время заканчивается и выбрасывает меня
  4. TopicStarter Overlay
    ZZZ
    Offline

    ZZZ

    Регистрация:
    13 сен 2010
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    может в самом файле хмл немного не так структурирован ?
  5. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Я так понимаю Вы штатными средствами целиком доки писали, или самостоятельно описывали структуру файла?
    Файл Выше мне никакой информации ни дал.
  6. TopicStarter Overlay
    ZZZ
    Offline

    ZZZ

    Регистрация:
    13 сен 2010
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    вот таким образом записываю


    ДокВыборка = Документы.ЧекККМ.Выбрать();


    ЗаписьXML=Новый ЗаписьXML();
    ЗаписьXML.ОткрытьФайл("c:\doc.xml");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Root");

    Пока ДокВыборка.Следующий() Цикл
    Если ДокВыборка.Проведен Тогда
    ВыгружаемыйОбъект=ДокВыборка.ПолучитьОбъект();
    ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);
    КонецЕсли;

    КонецЦикла;

    ЗаписьXML.ЗаписатьКонецЭлемента();

    ЗаписьXML.Закрыть();

    на отладчике, после того как прочитывает первый док и записывает далее не проходит по первому Если ВозможностьЧтенияXML(ЧтениеXML) потом один раз проходит но по второму не уловию не идет, далее уже читается третий док, где второй... ну и далее аналогично
  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Попробуйте
    Код:
    ВозможностьЧтенияXML(ЧтениеXML)
    
    убрать и пока не записывайте объекты а протсо читайте но выводите их типы, нужно проверить понимает ли он типы объектов
    Код:
    Сообщить(ПолучитьXMLТип(<Чтение XML>) )
    
  8. TopicStarter Overlay
    ZZZ
    Offline

    ZZZ

    Регистрация:
    13 сен 2010
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    только это выдает
    ТипДанныхXML
  9. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Значит типы определены
    Если неопределено не возвращает, тогда убери проверку, что-то не отрабатывает, сделай демо базу и прогони загрузку. Возможно сама команда
    Код:
    ВозможностьЧтенияXML(ЧтениеXML)
    
    отрабатывает из-за пробелов некорректно.
  10. TopicStarter Overlay
    ZZZ
    Offline

    ZZZ

    Регистрация:
    13 сен 2010
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    неопределенно не возвращает.

    получается так что после записи элемента она съедает <DocumentObject.ЧекККМ> второго элемента. почему? из за этого и не записываются четные документы
  11. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Код:
    	ЧтениеXML=Новый ЧтениеXML();
    ЧтениеXML.ОткрытьФайл("c:\doc.xml");
    ЧтениеXML.Прочитать();
    
    ЧтениеXML.Прочитать();
    
    Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
    ЗагружаемыйОбъект=ПрочитатьXML(ЧтениеXML);
    ЗагружаемыйОбъект.Записать();
    КонецЦикла;
    ЧтениеXML.Закрыть(); 
    

Поделиться этой страницей