8.х ОБМЕН ЧтениеXML или есть альтернатива?

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем lestat, 5 янв 2013.

  1. TopicStarter Overlay
    lestat
    Offline

    lestat

    Регистрация:
    14 июл 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Подскажите как прочитать XML вот такой структуры:


    <?xml version="1.0" encoding="windows-1251" ?>
    <Данные Source="организация" ПлатимНДС="Да" ПлатимНП="Нет">
    <Справочники>
    <Контрагенты>
    <Контрагент Код="00001111" Наименование="VIP">
    <ЭтоГруппа>1</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    </Контрагент>
    <Контрагент Код="00002222" Наименование="ИП маг-и">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="00001111" Наименование="VIP" />
    <ЮридическийАдрес>Адрес</ЮридическийАдрес>
    <ПочтовыйАдрес>ПочтовыйАдрес</ПочтовыйАдрес>
    <Телефон>8 (35365) 11-11-11-11</Телефон>
    <ИНН>111111111111</ИНН>
    <КПП />
    <ОКПО />
    <ТипКонтрагента>Частный предприниматель</ТипКонтрагента>
    </Контрагент>
    </Контрагенты>
    <Сотрудники>
    <Сотрудник Код="00006" Наименование="Водители">
    <ЭтоГруппа>1</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    </Сотрудник>
    <Сотрудник Код="00110" Наименование="Фамилия Имя">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="00006" Наименование="Водители" />
    <Должность />
    <Контрагент Код="000003007" Наименование="Фамилия1 Имя1" />
    <Логин>Фамилия</Логин>
    <Оклад>0</Оклад>
    <Подразделение Код="" Наименование="" />
    <Полномочие Код="00002" Наименование="водитель-экспедитор" />
    </Сотрудник>
    </Сотрудники>
    <Подразделения>
    <Подразделение Код="0000000001" Наименование="Администрация">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <Административное>1</Административное>
    </Подразделение>
    <Подразделение Код="0000000007" Наименование="Магазин">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <Административное>0</Административное>
    </Подразделение>
    </Подразделения>
    <Номенклатура>
    - <Товар Код="00000154" Наименование="Нимнование Группы" БухгалтерииЭтоБудет="Материалы">
    <ЭтоГруппа>1</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    </Товар>
    - <Товар Код="00000150" Наименование="Наименование элемента">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="00000154" Наименование="Родитель" />
    <БазоваяЕдиница ОКЕИ="168" Коэффициент="1" />
    <ВидНоменклатуры Наименование="Сырье" />
    <СтавкаНДС Ставка="10" />
    </Товар>
    </Номенклатура>
    <Единицы>
    <Единица Код="797" Наименование="100шт">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <ПолноеНаименование>100 штук</ПолноеНаименование>
    </Единица>
    <Единица Код="163" Наименование="г">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <ПолноеНаименование>грамм</ПолноеНаименование>
    </Единица>
    <Единица Код="140" Наименование="квт*ч">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <ПолноеНаименование>Килловатт час</ПолноеНаименование>
    </Единица>
    <Единица Код="166" Наименование="кг">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <ПолноеНаименование>Килограмм</ПолноеНаименование>
    </Единица>
    </Единицы>
    <МестаХранения>
    <Склад Код="00018" Наименование="">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <МОЛ Код="" Наименование="" />
    <ТипСклада />
    </Склад>
    <Склад Код="00019" Наименование="">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    <МОЛ Код="" Наименование="" />
    <ТипСклада />
    </Склад>
    </МестаХранения>
    </Данные>

    Мне нужно перегрузить данные из торговли 7.7 в буху 3.0. данные в файле могут менятся, т.е могут не выгружать какой то справочник, могут выгрузить все, как читать данные в бухе 3.0, есть альтернативный способ ЧтениеXML, что то вообще с циклами запутался.
    Или хоть название или ссылочку что почитать чтобы разобраться с чтением xml.
    Это будет выполняться не один раз а регулярно.
  2. TopicStarter Overlay
    lestat
    Offline

    lestat

    Регистрация:
    14 июл 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    все сам разобрался
  3. TopicStarter Overlay
    lestat
    Offline

    lestat

    Регистрация:
    14 июл 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    а нет , не разобрался
    конкретно не могу обрулить вот этот код



    - <Контрагент Код="00002836" Наименование=" VIP">
    Что такое Контрагент Код И Наименование Я не вижу нигде чтобы они закрывались, как их прочитать?

    Вот Кусок где родитель и сам контрагент
    <Контрагенты>
    <Контрагент Код="00001111" Наименование="VIP">
    <ЭтоГруппа>1</ЭтоГруппа>
    <Родитель Код="" Наименование="" />
    </Контрагент>
    <Контрагент Код="00002222" Наименование="ИП маг-и">
    <ЭтоГруппа>0</ЭтоГруппа>
    <Родитель Код="00001111" Наименование="VIP" />
    <ЮридическийАдрес>Адрес</ЮридическийАдрес>
    <ПочтовыйАдрес>ПочтовыйАдрес</ПочтовыйАдрес>
    <Телефон>8 (35365) 11-11-11-11</Телефон>
    <ИНН>111111111111</ИНН>
    <КПП />
    <ОКПО />
    <ТипКонтрагента>Частный предприниматель</ТипКонтрагента>
    </Контрагент>
    </Контрагенты>
    в упор не пойму Что такое Контрагент Код И Наименование
  4. TopicStarter Overlay
    lestat
    Offline

    lestat

    Регистрация:
    14 июл 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Код:
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(Объект.ИмяФайла);
    
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    
    ЧтениеXML.Закрыть();   
    
    Позиция  = ДокументDOM.ПолучитьЭлементыПоИмени("Контрагенты");
    
    Для Позиц=0 По Позиция.Количество()-1 Цикл
    ДочерниеУзлы = Позиция[Позиц].ДочерниеУзлы;
    НстрКонт = ТЗКонт.Добавить();
    Для Каждого Узел Из ДочерниеУзлы Цикл
    Если Узел.ИмяУзла = "Контрагент" Тогда
    // что здесь нужно прописать???	   
    ИначеЕсли Узел.ИмяУзла = "ЭтоГруппа" Тогда
    НстрКонт.ЭтоГруппа = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "Родитель" Тогда
    // и как сюда заходить???	   
    ИначеЕсли Узел.ИмяУзла = "ЮридическийАдрес" Тогда
    НстрКонт.ЮАадрес = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "ПочтовыйАдрес" Тогда
    НстрКонт.ПАдрес = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "телефон" Тогда
    НстрКонт.Телефон = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "ИНН" Тогда
    НстрКонт.ИНН = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "КПП" Тогда
    НстрКонт.КПП = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "ТипКонтрагента" Тогда
    НстрКонт.ТипКонт = Узел.ТекстовоеСодержимое;
    ИначеЕсли Узел.ИмяУзла = "Сотрудник" Тогда
    Прервать;					   
    КонецЕсли;				   
    КонецЦикла;
    КонецЦикла;
    
  5. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Атрибуты узла.

    С такой постановкой задачи я думаю вам надо смотреть в сторону конфигурации Конвертация данных.
Похожие темы
  1. OzzY
    Ответов:
    1
    Просмотров:
    1.706
  2. sammas
    Ответов:
    1
    Просмотров:
    422
  3. Umptek
    Ответов:
    33
    Просмотров:
    3.293
  4. sanpolyt
    Ответов:
    3
    Просмотров:
    660
  5. mikegt
    Ответов:
    5
    Просмотров:
    637
Загрузка...

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