|
Есть ли обработка формирование чтения XML файла? | ☑ | ||
---|---|---|---|---|
0
ERWINS
20.05.14
✎
15:06
|
Обработка получает на вход xml файл, а на выходе код его чтения.
Дальше в код вставляешь, что тебе надо. |
|||
1
vicof
20.05.14
✎
15:09
|
Есть, называется "руки и мозг". Кто знает, как ты там хочешь читать этот файл, и какая стрктура у файла?
|
|||
2
ERWINS
20.05.14
✎
15:11
|
(1) структура есть в получаемом на ход файле
Результат работы обработки правлю руками, половина работы делается за меня. |
|||
3
vicof
20.05.14
✎
15:14
|
Я отом, что никто не знает, как читать твой файл, кроме тебя
|
|||
4
Йосис
20.05.14
✎
15:15
|
(1) Если у тебя есть схема XML, никакой обработки не нужно. Грузишь ее в пакет XDTO и читаешь файл.
|
|||
5
butterbean
20.05.14
✎
15:16
|
(3) он хочет чтобы обработка за него перебрала весь XML файл, как-то выявила закономерности в его структуре и на их основе выдала код для вставки куда-нибудь
|
|||
6
vicof
20.05.14
✎
15:18
|
(5) Я понимаю, и пытаюсь втолковать, что никто за него это не сделает.
|
|||
7
acsent
20.05.14
✎
15:18
|
(4) можно и без схемы
|
|||
8
butterbean
20.05.14
✎
15:19
|
(6) но вдруг есть такая готовая обработка
|
|||
9
vicof
20.05.14
✎
15:21
|
(8) Ага, я вот вчера целых 20 таких на коленке написал. Но все разобрали, ничего не осталось.
|
|||
10
bolobol
20.05.14
✎
15:25
|
А чего, я не понял, не так с "новый ЧтениеXML"? Перестал читать? Отменили?
|
|||
11
butterbean
20.05.14
✎
15:26
|
(10) не удобно разбирать сложные XML
|
|||
12
ДенисЧ
20.05.14
✎
15:28
|
Кстати, ЧтениеXML довольно таки тормозная штучка...
|
|||
13
bolobol
20.05.14
✎
15:33
|
(12) Что мы тут частные случаи рассматриваем?, предлагаю обобщить на множество 1С.*
|
|||
14
acsent
20.05.14
✎
15:36
|
(12) Врешь ведь или пруф с замерами давай
|
|||
15
ДенисЧ
20.05.14
✎
15:39
|
||||
16
acsent
20.05.14
✎
15:45
|
И медленней чего же чтение XML?
|
|||
17
ДенисЧ
20.05.14
✎
15:46
|
(16) Того же DOMа.
И проц жрёт как не в себя. |
|||
18
DailyLookingOnA Sunse
20.05.14
✎
15:50
|
Чё, DOM быстрее плоского чтения?
А ежели памяти не хватит? |
|||
19
ERWINS
20.05.14
✎
17:26
|
Сделал
На выходе пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="СчетаПК" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="ЗачислениеЗарплаты" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="Сотрудник" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="Фамилия" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // Фамилия=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="Имя" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // Имя=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="Отчество" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // Отчество=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="ОтделениеБанка" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // ОтделениеБанка=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="ФилиалОтделенияБанка" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // ФилиалОтделенияБанка=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="ЛицевойСчет" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // ЛицевойСчет=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="Сумма" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // Сумма=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="КодВалюты" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // КодВалюты=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="КонтрольныеСуммы" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="КоличествоЗаписей" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // КоличествоЗаписей=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="СуммаИтого" тогда пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.Текст тогда // СуммаИтого=XML.Значение; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; КонецЦикла; ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда Прервать; Иначе ВызватьИсключение "Не верно прочитан файл" КонецЕсли; |
|||
20
ERWINS
20.05.14
✎
17:27
|
Сама обработка
&НаКлиенте Процедура Команда1(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл с данными"; Диалог.ПолноеИмяФайла = ""; Если Диалог.Выбрать() Тогда Ткт=новый ТекстовыйДокумент; Ткт.Прочитать(Диалог.ПолноеИмяФайла); ФормированиеТекста= ЗагрузкаXML(Ткт.ПолучитьТекст()) КонецЕсли КонецПроцедуры &НаСервере Функция ЗагрузкаXML(Текст); XML= новый ЧтениеXML(); XML.УстановитьСтроку(Текст); Дерево= новый ДеревоЗначений; Дерево.Колонки.Добавить("Имя"); Ветвь=Дерево; Пока XML.Прочитать() цикл Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда поискСтроки=Ветвь.Строки.Найти(XML.Имя); Если поискСтроки=неопределено тогда ст=Ветвь.Строки.Добавить(); ст.Имя=XML.Имя; Ветвь=ст; иначе Ветвь=поискСтроки; КонецЕсли; иначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда Ветвь=Ветвь.Родитель; иначеЕсли XML.ТипУзла = ТипУзлаXML.Текст Тогда Если Ветвь.Строки.Найти("#text")=неопределено тогда ст=Ветвь.Строки.Добавить(); ст.Имя="#text"; КонецЕсли; КонецЕсли; КонецЦикла; возврат ОбходДерева(Дерево, ""); КонецФункции &НаСервере Функция ОбходДерева(ветвь, таб) Рез=Таб+"пока XML.Прочитать() цикл"+Символы.ПС; ПервыйШаг=" Если"; для каждого ст из ветвь.Строки цикл Если ст.Имя="#text" тогда рез= рез + Таб+ПервыйШаг+" XML.ТипУзла = ТипУзлаXML.Текст тогда " +Символы.ПС; рез= рез + Таб+" // "+ветвь.Имя +"=XML.Значение;" +Символы.ПС; иначе рез= рез + Таб+ПервыйШаг+" XML.ТипУзла = ТипУзлаXML.НачалоЭлемента и XML.Имя="""+ст.Имя+""" тогда " +Символы.ПС; рез= рез + ОбходДерева(ст, Таб+ " ")+Символы.ПС; КонецЕсли; ПервыйШаг=" ИначеЕсли"; КонецЦикла; Рез=рез + Таб+ПервыйШаг+" XML.ТипУзла = ТипУзлаXML.КонецЭлемента тогда" +Символы.ПС+ // Таб+" XML.Прочитать();" +Символы.ПС+ Таб+" Прервать;" +Символы.ПС+ Таб+" Иначе " +Символы.ПС+ Таб+" ВызватьИсключение ""Не верно прочитан файл""" +Символы.ПС+ Таб+" КонецЕсли;" +Символы.ПС+ Таб+"КонецЦикла;" +Символы.ПС; возврат рез; КонецФункции |
|||
21
ERWINS
20.05.14
✎
18:25
|
ап
|
|||
22
ДенисЧ
20.05.14
✎
18:33
|
Что это было?
|
|||
23
ERWINS
20.05.14
✎
18:44
|
(22) подаешь по вход обработка xml файл получаешь код 1с для загрузки данного файла и правишь как уже хочешь
|
|||
24
batman69
20.05.14
✎
18:48
|
(23) мля...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |