|
работа с xml файлом. | ☑ | ||
---|---|---|---|---|
0
zippygrill
12.02.14
✎
21:05
|
Что-то я туплю, совсем, с загрузкой данных из xml.
Так выглядит файл http://screencast.com/t/R60zlMIsLI6 Новую строку добавить в новой таблице когда встречается тэг "Строка" а вот как получить значении из тэга "Документ"?! и все это в линейную таблицу бы. Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьКФайлу); //ПутьКФайлу - Путь к загружаемому XML-документу указан в переменной //Используется модель последовательного доступа. Пока Чтение.Прочитать() Цикл // Прочитать «структурные части» элементов. // Проверить, какая часть элемента текущая. Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; Если ИмяУзла = "Строка" Тогда СчитатьСтрока = Истина; новСтр = ТабличнаяЧасть1.Добавить(); КонецЕсли; Сообщить("--" + ИмяУзла); // Атрибуты элементов можно читать, только если текущая часть – начало элемента. ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда ИмяУзла = Чтение. // В примере просто выводим текст в окно сообщений. Сообщить("Текст:" + Чтение.Значение); ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда ИмяУзла = Чтение.Имя; Если ИмяУзла = "Строка" Тогда СчитатьСтрока = Ложь; КонецЕсли; // В примере просто выводим признак конца элемента в окно сообщений. Сообщить("--Конец:" + Чтение.Имя); КонецЕсли; КонецЦикла; Чтение.Закрыть(); Как дальше, не понимаю я. |
|||
1
zippygrill
12.02.14
✎
21:06
|
з.ы. С xml раньше не работал.
|
|||
2
zippygrill
12.02.14
✎
21:12
|
структура файла вообще ни о чем :)
|
|||
3
zippygrill
12.02.14
✎
21:15
|
Дистрибьютор1/01.01.2001/бв-1111/Товар1/20 шт/20 руб./
Дистрибьютор1/01.01.2001/бв-1111/Товар2/10 шт/10 руб/ как-то так. |
|||
4
zippygrill
12.02.14
✎
22:16
|
апну.
|
|||
5
m-serg74
12.02.14
✎
22:46
|
(0)
в ПроцедураЧтенияСтроки - обработка файла и заполнение строки ТЗ |
|||
6
zippygrill
12.02.14
✎
22:51
|
(5) да, но как при добавлении новых строк как мне получить данные узлов "Номер" или "ТипДокумента"?
|
|||
7
m-serg74
12.02.14
✎
22:56
|
(6) ессно также ка и строку но до строки
|
|||
8
m-serg74
12.02.14
✎
22:59
|
(6) например вот посмотри
http://help1c.com/faq8/view/1321.html |
|||
9
zippygrill
12.02.14
✎
23:15
|
(8) спс за ссылку.
|
|||
10
zippygrill
13.02.14
✎
00:29
|
ребята, что-то мне кажется этот код много, совсем много место занимает.
Пока Чтение.Прочитать() Цикл // Прочитать «структурные части» элементов. // Проверить, какая часть элемента текущая. Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; //тэг Данные Если ИмяУзла = "Дистрибьютор" Тогда СчитатьДистрибьютор = Истина; новСтр = ТабличнаяЧасть1.Добавить(); КонецЕсли; Если ИмяУзла = "ДистрибьюторИНН" Тогда СчитатьДистрибьюторИНН = Истина; КонецЕсли; Если ИмяУзла = "ДатаОтчета" Тогда СчитатьДатаОтчета = Истина; КонецЕсли; //тэг Документ Если ИмяУзла = "ТипДокумента" Тогда СчитатьТипДокумента = Истина; КонецЕсли; Если ИмяУзла = "Дата" Тогда СчитатьДата = Истина; КонецЕсли; Если ИмяУзла = "Номер" Тогда СчитатьНомер = Истина; КонецЕсли; Если ИмяУзла = "ПокупательИНН" Тогда СчитатьПокупательИНН = Истина; КонецЕсли; Если ИмяУзла = "ПокупательИмя" Тогда СчитатьПокупательИмя = Истина; КонецЕсли; Если ИмяУзла = "Адрес" Тогда СчитатьАдрес = Истина; КонецЕсли; Если ИмяУзла = "ПокупательКПП" Тогда СчитатьПокупательКПП = Истина; КонецЕсли; Если ИмяУзла = "Строка" Тогда СчитатьСтрока = Истина; //Если новСтр = Неопределено Тогда // новСтр = ТабличнаяЧасть1.Добавить(); //КонецЕсли; КонецЕсли; Сообщить("--" + ИмяУзла); // Атрибуты элементов можно читать, только если текущая часть – начало элемента. ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда //запоминаем реквизиты шапки Если СчитатьДистрибьютор Тогда Дистрибьютор = Чтение.Значение; КонецЕсли; Если СчитатьДистрибьюторИНН Тогда ДистрибьюторИНН = Чтение.Значение; КонецЕсли; Если СчитатьДатаОтчета Тогда ДатаОтчета = Чтение.Значение; КонецЕсли; Если СчитатьТипДокумента Тогда ТипДокумента = Чтение.Значение; КонецЕсли; Если СчитатьДата Тогда Дата = Чтение.Значение; КонецЕсли; Если СчитатьНомер Тогда Номер = Чтение.Значение; КонецЕсли; Если СчитатьПокупательИНН Тогда ПокупательИНН = Чтение.Значение; КонецЕсли; Если СчитатьПокупательИмя Тогда ПокупательИмя = Чтение.Значение; КонецЕсли; Если СчитатьАдрес Тогда Адрес = Чтение.Значение; КонецЕсли; Если СчитатьПокупательКПП Тогда ПокупательКПП = Чтение.Значение; КонецЕсли; Если ИмяУзла = "ТоварКод" Тогда новСтр[ИмяУзла] = Чтение.Значение; КонецЕсли; Если ИмяУзла = "ТоварИмя" Тогда новСтр[ИмяУзла] = Чтение.Значение; КонецЕсли; Если ИмяУзла = "Количество" Тогда новСтр[ИмяУзла] = Чтение.Значение; КонецЕсли; Если ИмяУзла = "Цена" Тогда новСтр[ИмяУзла] = Чтение.Значение; КонецЕсли; Если ИмяУзла = "Сумма" Тогда новСтр[ИмяУзла] = Чтение.Значение; новСтр = ТабличнаяЧасть1.Добавить(); КонецЕсли; новСтр.Дистрибьютор = Дистрибьютор; новСтр.ДистрибьюторИНН = ДистрибьюторИНН; новСтр.ДатаОтчета = ДатаОтчета; //тэг Документ новСтр.ТипДокумента = ТипДокумента; новСтр.Дата = Дата; новСтр.Номер = Номер; новСтр.ПокупательИНН = ПокупательИНН; новСтр.ПокупательИмя = ПокупательИмя; новСтр.Адрес = Адрес; новСтр.ПокупательКПП = ПокупательКПП; Сообщить("Текст:" + Чтение.Значение); ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда ИмяУзла = Чтение.Имя; Если ИмяУзла = "Дистрибьютор" Тогда СчитатьДистрибьютор = Ложь; КонецЕсли; Если ИмяУзла = "ДистрибьюторИНН" Тогда СчитатьДистрибьюторИНН = Ложь; КонецЕсли; Если ИмяУзла = "ДатаОтчета" Тогда СчитатьДатаОтчета = Ложь; КонецЕсли; //тэг Документ Если ИмяУзла = "ТипДокумента" Тогда СчитатьТипДокумента = Ложь; КонецЕсли; Если ИмяУзла = "Дата" Тогда СчитатьДата = Ложь; КонецЕсли; Если ИмяУзла = "Номер" Тогда СчитатьНомер = Ложь; КонецЕсли; Если ИмяУзла = "ПокупательИНН" Тогда СчитатьПокупательИНН = Ложь; КонецЕсли; Если ИмяУзла = "ПокупательИмя" Тогда СчитатьПокупательИмя = Ложь; КонецЕсли; Если ИмяУзла = "Адрес" Тогда СчитатьАдрес = Ложь; КонецЕсли; Если ИмяУзла = "ПокупательКПП" Тогда СчитатьПокупательКПП = Ложь; КонецЕсли; // В примере просто выводим признак конца элемента в окно сообщений. Сообщить("--Конец:" + Чтение.Имя); КонецЕсли; КонецЦикла; Чтение.Закрыть(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |