Имя: Пароль:
1C
1С v8
Чтение через XDTO
,
0 Лохматый
 
22.10.13
19:39
Кто наставит на путь истинный?

Читаю файлы через XDTO не используя схемы. Файлы однотипные.Схема в файлах не определена.

Узел1
  Узел2
   узел3
     ОписьДокументов
        Документ
        Документ
        ........
        Документ

По вышеобозначеной структуре ХДТО создает объект Документ типа СписокXDTO
Если узел Документ один то создает объект Документ типа объектXDTO

Куда копать что бы однообразно обрабатывать файлы то есть как получить Документ  типа СписокXDTO c одной записью
1 alexei366
 
22.10.13
19:57
Ты предварительно знаешь какие свойства согут являться списком?
2 alexei366
 
22.10.13
20:00
(1) Если да, то делай наверно след образом (если тебе только читать),
МойМассив = Новый Массив;
Если ТипЗнч(НекийУзел) = Тип("ОбъектXDTO") Тогда
МойМассив.Добавить(НекийУзел);
Иначе
МойМассив = НекийУзел;
КонецЕсли;

Для Каждого Узел Из МойМассив Цикл
....трали вали....
КонецЦикла;
3 alexei366
 
22.10.13
20:02
(2) Ну или завернуть всю обработку внутри цикла в функцию и

Если ТипЗнч(НекийУзел) = Тип("ОбъектXDTO") Тогда
МояФункция(НекийУзел);
Иначе
Для Каждого Узел Из НекийУзел Цикл
МояФункция(Узел);
КонецЦикла;
КонецЕсли;
4 alexei366
 
22.10.13
20:03
(1) Ну или навоять самому xsd схему для xml которые грузишь
5 Лохматый
 
22.10.13
20:16
alexei366, спасибо
2,3 перевариваю
1,4 из примера интересует только объект Документ как "загнать" его в свою схему
создал пакет XDTO. Как эту схему использовать при чтении?
в файле не  определена схема
6 alexei366
 
22.10.13
21:37
(5) xml кинь примерный
7 Лохматый
 
22.10.13
22:27
<?xml version='1.0' encoding='windows-1251'?>
<!-- This document was created with Syntext Serna Free. -->
<Файл>
  <ИмяФайла>ТЕСТ.XML</ИмяФайла>
  <ДатаФайла>01.02.2003</ДатаФайла>
  <ОПИСЬДОКУМЕНТОВ>
    <Документ>
      <НомерДокумента>
        <Номер>100</Номер>
        <Дата>01.01.1980</Дата>
      </НомерДокумента>
      <ФИРМА>Рога и Копыта</ФИРМА>
      <Руководитель>
        <Фамилия>ЛЕНИН</Фамилия>
        <Имя>ВЛАДИМИР</Имя>
        <Отчество>ИЛЬИЧ</Отчество>
      </Руководитель>
      <ДатаЗаполнения>26.08.2010</ДатаЗаполнения>
    </Документ>
    <Документ>
      <НомерДокумента>
        <Номер>101</Номер>
        <Дата>01.01.1980</Дата>
      </НомерДокумента>
      <ФИРМА>Рога и Копыта</ФИРМА>
      <Руководитель>
        <Фамилия>БЕРИЯ</Фамилия>
        <Имя>ЛАВРЕНТИЙ</Имя>
        <Отчество>ПАЛЫЧ</Отчество>
      </Руководитель>
      <ДатаЗаполнения>26.08.2010</ДатаЗаполнения>
    </Документ>
    <Документ>
      <НомерДокумента>
        <Номер>102</Номер>
        <Дата>01.01.1980</Дата>
      </НомерДокумента>
      <ФИРМА>Рога и Копыта</ФИРМА>
      <Руководитель>
        <Фамилия>ПУШКИН</Фамилия>
        <Имя>АЛЕКСАНДР</Имя>
        <Отчество>СЕРГЕЕВИЧ</Отчество>
      </Руководитель>
      <ДатаЗаполнения>26.08.2010</ДатаЗаполнения>
    </Документ>
  </ОПИСЬДОКУМЕНТОВ>
</Файл>
8 alexei366
 
22.10.13
22:29
(7) Файл ты изначально задаешь?
9 alexei366
 
22.10.13
22:29
(8) создаешь*
10 Лохматый
 
22.10.13
22:32
(8)НЕТ. ПОЛУЧАЮ
11 Лохматый
 
22.10.13
22:33
ГЕНЕРИТ ЗАКРЫТАЯ СИСТЕМА
12 alexei366
 
22.10.13
22:35
(11) А попросить их пространство имен в корневой узел сможешь?
13 alexei366
 
22.10.13
22:35
добавить*
14 Лохматый
 
22.10.13
22:38
(13) ЗАКРЫТАЯ СИСТЕМА

Можно наверно перед чтением дописать но это ж извращение
15 alexei366
 
23.10.13
00:29
(14) Ну тогда ПакетXDTO тебе не поможет, он без пространства имен файлик не прочитает
16 alexei366
 
23.10.13
00:31
(15) Хотя там вроде есть метод приведения одного объекта в другой по полям. Да и я помнил такую функцию сам писал, чтобы можно было прочитать xml и влить её в объект , когда сама xml с точки зрения схемы не валидна из-за отсуствия некоторых обязательных свойств