8.х Загрузка Xml файла

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

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Профессионал в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    1.008
    Симпатии:
    25
    Баллы:
    54
    Всем доброго времени суток.
    Платформа: 1С:Предприятие 8.3 (8.3.8.1652)

    Есть файл Xml и файл xml схемы (xsd).

    Требуется загрузить данные из другой программы, через Xml файл.

    Я сейчас делаю так:

    Код:
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.ОткрытьФайл(Объект.ФайлЗагрузки);
        ПостроительДОМ = Новый ПостроительDOM;
        Попытка
            ДокументDOM = ПостроительДОМ.Прочитать(ЧтениеXML);
            ТекстЛог = "Прочитан XML файл: "+Объект.ФайлЗагрузки;
            ЛогОшибок.ДобавитьСтроку(ТекстЛог);
        Исключение
            ТекстЛог = "Не удалось прочитать XML файл: "+Объект.ФайлЗагрузки;
            ЛогОшибок.ДобавитьСтроку(ТекстЛог);
           
        КонецПопытки;
       
        Если ДокументDOM.ЕстьДочерниеУзлы() Тогда
            СписокЭлементов = ДокументDOM.ПолучитьЭлементыПоИмени("*");
        КонецЕсли;
        Для каждого Элемент Из СписокЭлементов Цикл
    ......
    
    Можно конечно и так:

    Код:
        Пока ЧтениеXML.Прочитать()Цикл
    
    Но через DOM мне кажется проще и удобнее.

    А ещё, мне кажется, что раз у меня уже есть схема, то я могу как-то с помощью неё распарсивать xml файл. Может кто знает ссылку на подробную и человеческую инструкцию(пример).

    Так же для универсальности обработки, хочу создать некую таблицу, в которой Колонка1 - это имя узла xml, Колонка2 соответствие метаданным 1с. Т.е это может быть Номенклатура.Ссылка или Номенклатура.Код или Перечисления.СтавкиНДС - в таком духе, не могу сообразить какой тип присвоить реквизиту Колонка2
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    Используйте XDTO
    Если у вас есть схема и она не ссылается на разные сторонние особо злые схемы, такой способ удобнее

    И не гонитесь за универсальностью если эта универсальность реально не поможет.
    Peroman нравится это.
  3. TopicStarter Overlay
    Peroman
    Offline

    Peroman Профессионал в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    1.008
    Симпатии:
    25
    Баллы:
    54
    Спасибо. Но у меня как раз тот случай что у меня нету targetNamespace атрибута, и из-за этого я не могу работать через XDTO.
    Что до универсальности, очень много данных со временем надо будет тянуть из внешней программы в 1С и это как справочники, так и документы, со своими структурами XML файла. Каждый распарсивать и под каждый писать обработку это трэш. Я бы работал через внешний источник данных или через COM, тем более, что у меня есть подробное описание структуры БД, внешней программы. Но админы крутят мозг. :(

    Спасибо за ссылку, прочитал много полезной информации.

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