Вот и сообразил «читальщик» XML-файлов, который открывает, читает, и выводит в «дерево» структуру таких файлов также выводит статистику по «глубине» вложенности структуры данных.
Просматривать XML редакторами, которые сами по себе не маленькие по размерам и не совсем понятные по использованию меня нисколько не привлекает, тем более что надо всего лишь посмотреть структуру файла и дальше думать, что с ним делать.
Примечание.
Если установленной глубины в 9 не хватает, добавьте код самостоятельно. В 99 случаев из 100 этого глубины чтения в 9 хватает с лихвой.
Поиск по ИС:
- //infostart.ru/projects/1612/
- //infostart.ru/projects/2683/
- //infostart.ru/projects/2804/
- //infostart.ru/projects/1489/
- //infostart.ru/projects/1963/
- //infostart.ru/projects/1801/
- //infostart.ru/projects/3448/
-
http://www.firstobject.com/ — спАсибо Ufimtsev и Ёпрст за «шустрого»
…
-
…
Что я вообще думаю про XML … моё мнение совпадает с мнением, находящимся здесь: http://extrapro.ru/udxml.html
… ЗА дополнения, конструктивную критику, сообщения о замеченных неточностях или ошибках — буду благодарен …
Желающих продолжить работу над данным проектом прошу присоединяться.
с Уважением Шёпот теней …
… вОт …
Продолжение:
Новая версия обработки: «Читальщик XML-файлов ред.2» …
Решил несколько изменить обработку после обсуждения в ветке и полученных советов/рекомендаций.
Что изменено/неИзменено:
- Увеличено количество чтения вложенности до 15 … (этого должно хватит на все разумные случаи жизни).
- Не стал делать рекурсию на чтение данных. Для простоты понимания процесса и при необходимости «вычленения» данных.
- Добавил возможность отдельного чтения узлов по двойному клику по нему. Если узел содержит вложенные данные, обработка их выводит в строке сообщения4. Улучшена работа прогресс бара за счет двойного чтения файла. Рекомендуется отключать в случае «больших» файлов.
Примечание:
Данная обработка будет полезна для просмотра структуры файла XML до 10 Мб. Файлы объемом в 100 Мб, с отключенным прогресс баром, данная обработка прочитает и выведет за 3…5 минут (цифры условные т.к. зависят от многих факторов. приведены для того чтобы показать некие точки отсчета при работе с такими файлами).
Спасибо всем высказавшимся по данной обработке.
п.с.1. Много нареканий по поводу не использования «рекурсии» в данной обработке. По разным причинам сделано намеренно. Тех, кого это смущает, прошу считать данную обработку методическим материалом.
Продолжение 2:
Сделаны две обработки:
- «Читальщик XMLфайлов ред 3» — использует оператор «Если – Тогда»
- «Читальщик XMLфайлов ред 4» — использует «Циклы».
- «Читальщик XMLфайлов ред 5» — использует «Рекурсию».
Новое у этих обработок:
- Форма «Настройка». Устанавливает величину читаемого размера файла. При его превышении отключается работа индикатора действия. Устанавливается цвет индикатора.
- Читает файл XML полностью – элементы, атрибуты, текст.
Спасибо: rasswet – за интерес, замечания и комментарии к обработке.
зачетно.. мне бы такую для 7.7… анализировать файлы обменов…
… CheBurator — спасибо ЗАоценкуКомментарий …
… CheBurator, СССР — дорожу вашим мнением …
… вОООтВашШТ …
(1)Мне тоже надо…
Идея хорошая.
Но по коду/реализации есть комменты:
нафига 9 структур и т.п. ?? 🙁
Массивы, списки, таблицы еще никто не отменял
(4) … ммм …
… думаю, универсальность вЕщь избыточная и как всякая избыточность она должна быть опрАвдана … а то получится как у 1С — нужно быть не только программистом но ещё и архивариусомФлажком …
… дУмаю, что простота достигнется за счЁт рекурсии — здесь вот :http://infostart.ru/projects/3423/ — обращение к структуре с заранее неизвестным количеством вложений, у меня как раз решено именно образом рекурсии … дУмаю здЕсь это не опрАвдано …
… если файл xml состоит из документов с одинаковой структурой но варируемым количеством это одно а если много документов с разной структурой, для чего собственно и придумывался этот тип файлов, находится в файле — тогда это другой разговор … я имею ввиду вопрос: КАК ?транспонировать таблицы превращённые в строку (xml — файл) обратно в человекоПривычный вид «шапки + двуМерной табличной частью» …
… тем не менее Я с ОГРОМНЫМ удовольствием посмотрю на ВАШЕ решение …
… вОтТакМНЕдумается …
Собстно xml это совокупность узлов и их атрибутов, т.е. в принципе нет необходимости устанавливать ограничение на количество уровней… имхо
(6) … хм … ужжж я и не знаю, что и скАзать … по-моемому я не разу не видел файла с глубиной вложения больше 7, а про использование атрибутов и совсем не помню …
… думаю, что хмл файлы, «мёртвые» файлы … мода пройдЁт и они «пройдут» …
… мы же не делаем один запрос к документу ..? ..! 1с всем рекомендует делать их два, один к «шапке», другой к «таблице» документа … а использование хмл подразумевает делать один запрос не только к «шапка+таблица» но и к разным объектам …
… плюс к тому же — связываясь с хмл — мы сначалА прикладываем усилия сделать информацию «однострочной» а потом прикладываем усилию к обратному процессу, процессу «сборки» … и если использование html себя оправдывАет то xml — это ни кому не нужное усложение …
… то, что ЭТО сложно — видно хотя бы по использованию любого редактора_ХМЛ … размеры, быстрота чтения, простота использование, удобство просмотра — ВСЁ хромает …
… теория была крАсивой — да прАктика НЕприняла …
… вОтМоёМнение …
… (7) … хм … рЕшил мАлость попрАвить …
… все «эти» сложности с использованием хмл возможно опрАвдывают себя на очень «сложных» обменах данными — типа обмен БД через интернет … хотя и ЭТО мне кАжется спОрным … особенно когда вопрос касается поиска ошибки …
п.с. хОтя возможно я УЖЕ просто стАрый … или лЕнивый … или тУпой …
.. уффВОТвсё …
(7,8) Не соглашусь, сейчас все в этом формате, даже файлы офиса, обмены между современными приложениями (даже себрбанк научился юзать XML ))))). XML всего лишь попытка записать информацию в прозрачном и всем понятном формате.
>>а использование хмл подразумевает делать один запрос не только к «шапка+таблица» но и к разным объектам …
Чтобы найти информацию в файле любого формата сначала его надо разобрать, а xml разобрать и «выдрать», например оттуда только шапку проще, чем откуда либо (если я понял о чем Вы) и с запросами это никак не связно…
P.S. А обработка могла бы пригодиться, но не люблю не универсальные вещи, по этому использовать в такой реализации не буду…
(9) …
1абзац: … вопрос мнений … принято ! ..
… согласен с тем, что потихоньку всех приучат к этому формату …
… по-поводу прозрачности, хм…? А, рАзве другие форматы — не прозрачны…?
2абзац: … это была попытка провести аналогию… вОзможно не совсем удАчная …
3абзац: … чтоБЫ «выдрать» из файла информацию — не обходмо знАть его структуру … сначало как миниму прочитать и посмотреть …
4абзац: … П.С. … в таком случае чем де ВЫ пользуетесь для просмотра структуры … ?
… сАмое простое и быстрое что мне попалось это наверное, см.(0), Поиск по ИС: 1.http://infostart.ru/projects/1612/ — но ОНА не в 1С …
… вот …
> но ОНА не в 1С …
Зато можно редактровать…
ВооОоот…
(11) … ))) …. принЯто … !
… вотВедь …
Ой, редактировать. Спросонья…
(12) + … данная обработка изнАчально не прЕдназначалась для рЕдактирования … но вашЕ предложение вОзможно и осУществить в последующих вЕрсиях данной обработки, была бы НЕобходимость в практике …
… ради истины: …
… сдЕлал стандартную вЫгрузку базы из УТ в хмл … максимальная «глубина» вложений = 9 … )))
… поЭтому данной обработки дОлжно хвАтить на всЕ случаи жизни при работе в 1С УТ 8.х … нуууу, можно для надЁжности увеличить глубину чтения до 12 … чтобы устрАнить ВСЕ взможные эксцессы …
… вОтОднАкО …
Да я и не настаиваю, и не критикую, я пользуюсьhttp://infostart.ru/projects/1612/ именно потому, что можно редактировать… И задачи в этой области у меня — это xml переносов, иногда приходиться редактировать, больше в исследовательских целях… Но иногда бывает, что проще залезть в файл переноса через редактор и воткнуть там кое что, чем переписывать все правила…
(15) … проблема глобальности … что я имею ввиду … вЫгрузка из УТ получилась на 333 Мб …
1. пробовал открыть данной обработкой — не хвАтает пАмяти … (повторюсь, она и не была предназначена для такКкой «глобальности») …
2. программой указанной в (0) под 1 — так она читает по мере поступления команды от пользоваеля то псевдо-открывает быстро а узла открывает по мере поступления … выигрыша во времени не увидел по срАвнению с п.3…
3. открыл блокнотом — «прЕлестно» … и вЕсь файл открЫл и рЕдактировать можно …?
… вОт …
не могу не согласиться относительно xml, избыточная информация, но удобная структура для хранения произвольной информации. Я просто имел ввиду, что алгоритм разбора построенный на рекурсии может быть универсален, и количество уровней вложенности не играет никакого значения.
Например:
Процедура РазобратьУзел()
Если ЭтоУзел() Тогда
РазобратьУзел()
КонецЕсли;
КонецПроцедуры
РазобратьУзел()
Кстати, когда получаешь дерево значений, для обработки информации может быть удобным использовать обычную структуру. Получается тоже самое, что дерево значений, только похоже на динамические списки. Удобно когда нужно считать атрибуты узла.
))))) > открыл блокнотом — «прЕлестно» … и вЕсь файл открЫл и рЕдактировать можно …?
Да кто ж спорит!!! и не раз… но мне еще надо посмотреть тип выгруженного элемента данных и пр…
> вЫгрузка из УТ получилась на 333 Мб …
ну да… согласна… торговля сама по себе всегда намного больше той же бухгалтерии…
Если речь идет о постоянных выгрузках… и то… смотря куда слать и смотря… многое что еще смотря…
Несмотря на то, что xml позиционируется как универсальный формат обмена данными, никто не исключает и другие форматы…
(17) … принято … !
… обЪясниТЕ по поводу последнего абзацА …? :
…» Кстати, когда получаешь дерево значений, для обработки информации может быть удобным использовать обычную структуру. Получается тоже самое, что дерево значений, только похоже на динамические списки. Удобно когда нужно считать атрибуты узла. » …
… не сОвсем понял …? ещЁ рАз если мОжно …
… вот …
(18) … принято … !
… каждый пользуется ТЕМ оружием какое ОН любит … нууу … или имЕЕт …
… сОгласен, «инструменты» могут бЫть разные …
… вОт …
(10) Именно этимhttp://infostart.ru/projects/1612/ я и пользуюсь… Огромный полюс этой разработки в том что она не читает(раскрывает) сразу весь xml, а только верхний уровень. Скорость открытия выше чем у всех протестированных мной и работает с большими файлами, короче есть почти все что нужно.
> … по-поводу прозрачности, хм…? А, рАзве другие форматы — не прозрачны…?
Нет другие форматы ИМХО не прозрачны…
Возьмем самый наглядный пример это текстовый файл с разделителями. Попробуйте понять, что там храниться )))).
В XML мы можем передать ВСЮ необходимую информацию, такую как тип передаваемого значения и вообще саму структуру файла. Причем мы наглядно видим какое это значение (имя, тип и.т.) и даже визуально можем понять что откуда берется и как грузить. Отсюда и большой объем xml файлов, но они великолепно жмуться. Попробуйте передать это в любом другом формате и у Вас получиться XML файл 😉
P.S. До сих пор ИМХО существует проблема отсутствия нормальных инструментов с XML файлами (инструменты не оптимизированы), например SpyXML отличный наглядный инструмент, но слишком медленно работает. А программка из (10) отличная, но тоже подвисает на больших объемах
(21) … принято ..!
Будем смотреть)))
(23) … и вЫсказываемся … )))
… ищЕм если не Истину то хотя бы прАвду …
.. вОт ..
(20) > … каждый пользуется ТЕМ оружием какое ОН любит … нууу … или имЕЕт …
…нуууу…. не совсем так… от задачи зависит…
(23) а расскажи душещипательную историю про 300 форму и ее 7 и 8 приложение:)))) мне, боюсь, россиянам не объяснить… набор слов не тот, понимаешь каких…
(25) … принЯто ..!
ыыыы, как кто-то написал «ужас летящий на крыльях СОНО» ??
дык вряд ли россиянам сможем объяснить))))
2(19): Как выглядить дерево значений:
Строка 1 <Узел>
Строка 2 <атрибут>
Строка 3 <атрибут>
Строка 11 <Узел>
Строка 12 <Узел>
когда знаешь что за формат, нужно получить атрибуты узла, не совсем удобно обходить в цикле строки дерева значений, проще представить это все в виде структуры (обычная запись):
Новый Структура;
Например, шапка документа:
Номер = 10
Дата = 12.02.2008
Контрагент (это новая структура)
ЕДРПОУ = 1000000
Наименование = «Пупкин»
Короче, в программном виде так:
Структура = ПреобразоватьДеревоВВидеСтруктуры()
Если Документ.МойДокумент.НайтиПоНомеру(Структура.Номер) Тогда
…
КонецЕсли;
Контаргент = ПолучитьКонтрагента(Структура.Контрагент.Едрпоу);
…вОт… 🙂
Помоему так удобнее 😉
мне один друг говорил что есть еще один формат типа xml но более оптимизирован, т.е. в нем нет обязательных закрывающих тэгов.
тока не помню его название
(29) … принято ..! спАсибо за разЪяснения … бУдУдУмУдУмать … вОт …
Мне нравится алгоритм чтения реализованный здесьhttp://infostart.ru/projects/3448/ именно своей унивесальностью. Тем более что легко и преобразовать обратно, для сохранения изменений. Есть недостаток как раз в использовании при большом xml…
Помнится, мне приходилось специально писать обработку для анализа обменников, ибо они были более 500 мб, и ни один редактор, показывающий структуры их не открывал на персоналке, только на сервере…
(34) … принЯто СергейКа .. ознАкомлюсь … спАсибо …
… читАть большие по размеру файлы, соГласен прОблема, дАже простое чтЕние текстового файла рАзмером более 300 Мб составляет от 2 минут … а уж с выводом информации и вАААще рАзА в 3…4…5 дОльше …
… видимо нужны какие-то порции данных … но если нужны дАнные с «низу» бУдет читать почти тАкже долго как и вЕсь файл …
… дУмаю, что тАкие загрузки/выгрузки с файлом обмена «весом» больше 100 мб вАААще не нужны … лУчше частичные загрузки/выгрузки …
… вОт …
Шёпот у тебя что, клавиатура глючит?
За обработку +
за неуважение к читателям —
Жаль 🙁
… неДОРОГОЙ «artbear» — чЕловека нЕльзя обидЕть пока ОН сАм не ОБИДА-ется …
… кАк скАжешь НЕдорогой … вИдимо ТЫ ИСТИНА в последней инстанции …
… если ТЫ тАААк бОрешься ЗАуважениеКсебе будь тАк увАжителен коМНЕ НЕзаходи больше на мои ветки …
… бЕз уважения к «тебе» … НЕтвой Шёпот теней …
… неВОТ …
Новая версия обработки.
Решил несколько изменить обработку после обсуждения в ветке и советов.
Что изменено/неИзменено:
1. Увеличено количество чтения вложенности до 15 … (этого должно хватит на все разумные случаи жизни).
2. Не стал делать рекурсию на чтение данных. Для простоты понимания процесса и при необходимости «вычленения» данных.
3. Добавил возможность отдельного чтения узлов по двойному клику по нему. Если узел содержит вложенные данные, обработка их выводит в строке сообщения.
4. Улучшена работа прогресс бара за счет двойного чтения файла. Рекомендуется отключать в случае «больших» файлов.
Примечание: данная обработка будет полезна для просмотра структуры файла ХМЛ до 10 Мб. Файлы объемом в 100 Мб, с отключенным прогресс баром, данная обработка прочитает и выведет за 3…5 минут.
Спасибо всем высказавшимся, на данном этапе разработки по данной обработке.
… вОт …
(4+) За обработку все-таки ставлю минус — за 15 одинаковых структур, кучу одинаковых кусков кода по 15 штук каждый 🙁
ЗЫ раньше было только 9 🙂
видимо, кроме копи-паста ничего не знаешь.
(42) … нЭт … дОрОгОй … нЭчЭвО бОльшЕ НЭзнаю …
… НЭспАсибоИнаЭтом …
> … неДОРОГОЙ «artbear» — чЕловека нЕльзя обидЕть пока ОН сАм не ОБИДА-ется …
http://infostart.ru/forum/messages/forum17/topic10580/message85779/#message85779 ).
«На обиженных воду возят» — русская поговорка.
Увы, нетерпимость является большим минусом.
Явная неадекватность поведения в ответ на вполне нормальную критику.
Уговорил. Дабы не быть посланным, сам принимаю решение не заходить больше на Ваши ветки. Хотя форумные и раньше читать не мог (
код жесть 🙂
как же так? 🙁 нашлось время сделать «О программе»…
и мелкие красивости… вроде…
«Если ДанныеСтроки.Уровень = 1 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.СветлоЖелтый;
КонецЕсли;
Если ДанныеСтроки.Уровень = 2 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.СветлоЗолотистый;
КонецЕсли;
Если ДанныеСтроки.Уровень = 3 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Бежевый;
КонецЕсли;
Если ДанныеСтроки.Уровень = 4 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.ДымчатоБелый;
КонецЕсли;»
(используйте ИначеЕсли покороче будет да и попонятней),
а на нормальный код с рекурсией не хватило времени 🙁
Интересная ссылочкаhttp://extrapro.ru/udxml.html спасибо
На счет более компактного и быстрого XML есть FastInfoSet, но я забросил его на первых же граблях так как замена ЧтениеXML на ЧтениеFastInfoset почему то не работала (читал что на каких то платформах с ним ошибки).
(44) … СергейКа … жАль, что вы приняли такое решение … мне жАль …
п.с. …. «другие» — ВОН сколько НЕпросишь — сАми лЕзут … если не с «комментариями» то хОть с «мИнусками» …
(45) … ну, что ВЫ зацепились за эту Рекурсию …
…ммм … воспринимайте эту обрАботку как методический материал … лично у менЯ интЕрес к этой обрАботке лежит соврешенно НЕ в плоскости рЕкурсии …
… мои вЫводы:
1. … занимаясь пОискОм по ИС и не тОлько — обнАружил, что почти нЕт никаких «читальщиков» и уж тЕм более редАкторов по xml в 1С… по крАне мере я не нАшёл … вОт и рЕшил привлЕчь внимАние к этой проблЕме …
2. … про xml только ВСЕ говорят но мАло кто с ним рАботает … всЕ говорят какой ОН крутой и удОбный а обработок нЕт …
3. … всЕм тОварищам … кто прЕдлагает усложнить кОд, прЕдалагаю написАть свом вЕрсии xml-редакторов … и я с уДовольствием по-учусь у них и уму и рАзуму (бЕз тени ирОнии) …
… вОтВобщем …
(46) Да ты всех уже достал по-моему! Это читать не возможно, сплошные мычания какие-то! Не говоря уже о постоянной ругани в камментах, в которой ты сам на 99% виноват. Не приятно видеть такое на первой странице.
(47) … ммм … что ещЁ могу скАзать … вот …
(48) Шепот, всё-таки лучше воздерживаться от личных выпадов .
Зачем это : неДОРОГОЙ «artbear» ?
Замечания были вполне конструктивными.
… (49) … ТЫ, меня удивляешь по поводу «личных» вЫпадов …
… я огрАничил своЁ местоПребывание на ИС только «своими» вЕтками …
… Я, своего мения никому НЕнавязываю …
… по поводу «рекурсии» обЪснил — дрУгая задача, не в причЁсанности кода …
п.с.1. … файлы ХМЛ плохо поддАются визуализации, нЕт или очЕнь мало «читальщиков» и «редакторов» а если есть то до жути «громоздкие» да и неУдобные …
п.с.2. … плохая «визУализация» из-за плохой возможности их стрктурировАть и поэтому с ними трУдно рАботать …
п.с.3. … прерасная возможность передать рАзнородные данные — огорчается дополнительным «прАвилами» стандартами обЪменА … в итоге: сложность выросла а удобство и нАглядность пропала … и если ошибки в получении дАнных пропАли то они пОявились при рАботе с самими данными …
п.с.4. … то, что программисткая брАтия реагирует на «код», вместо того, чтоБЫ завалить ссЫлками на обрАботки с чтением_редактированием_ХМЛ — кОсвенно поДДтверждает даннУю мЫсль …
… вОт …
(49) … вОООбще-то … спАсибо хотел тебе скАзать … вОт …
(46) «…ммм … воспринимайте эту обрАботку как методический материал … лично у менЯ интЕрес к этой обрАботке лежит соврешенно НЕ в плоскости рЕкурсии» Ну должна быть какая нибудь уникальность и даже хорошо что она будет заключатся в простоте… только смотрите у вас «плохому» научатся 😉
(50) «что программисткая брАтия реагирует на «код»» контингент такой.
Нашел у себя самый большой XML Crysis Save 4,5 МБ в нем 12 уровней, а вы говорите 9 достаточно.
Посмотрел внимательно реализацию и заметил несколько моментов почему медленно:
1. Файл считывается два раза.
2. Индикация процесса съедает все время (желательно делать ее раз в секунду)
3. Нет смысла в отдельном ТЗ статистики ее можно отразить и в построенном дереве XML
4. Очень неоптимальный код чтения «много если» (для скорости и понятности нужна рекурсия)
Кстати на тестовом файле 60 сек. O_o убрал индикацию 38 сек.(50) «что программисткая брАтия реагирует на «код»» контингент такой.
Нашел у себя самый большой XML Crysis Save 4,5 МБ в нем 12 уровней, а вы говорите 9 достаточно.
Посмотрел внимательно реализацию и заметил несколько моментов почему медленно:
1. Файл считывается два раза.
2. Индикация процесса съедает все время (желательно делать ее раз в секунду)
3. Нет смысла в отдельном ТЗ статистики ее можно отразить и в построенном дереве XML
4. Очень неоптимальный код чтения «много если» (для скорости и понятности нужна рекурсия)
Кстати на тестовом файле 60 сек. O_o убрал индикацию 38 сек.
«Я, своего мения никому НЕнавязываю» никто не навязывает вам свое мнение. Просто высказываются 🙂
(52) … принято …
по поводу:
1. «два рАза» : для лучшей работы прогрессБара …
2. пишу же … для быстроты — нужно отключать прогрЕссБар …
3. можно и отразить … у кАждого свои вкУсы …
4. нУУУУ … скОлько мОжно пИсать про «рекурсии» … уже вЕзде нАписал … и в «описании» и в «комментах» … сдЕлано спЕциально …!
5. «к стати» : … сОгласен … см.п . 2 (здесь) …
… вот …
(52) , (53) + … вОООбще-то … спАсибо … вОт …
… Evg-Lylyk … ))) если тЫ с «+» в комментариях по поводу меня не ошибся … ? …
)))
… тУт .. вООбще-то … идЁт обрАтный процЕсс …! …
… хм … поЙду и вАм плЮсану … см. (52) … )))
… Вот! …
для редактирования XML пользуюсь ‘First object XML editor’.
— не требует установки, маленькая, бесплатная, быстрая, редактирует любые по размерам XML файлы.
(56) … спАсибо …
…а ссылку ..?
… вот …
(57)http://www.firstobject.com/
«шепот не ваших теней»
(58) … спАсибо … ох, ах, нУууу и шУстрый … )))
(59) … привЕтствую тЕбя, мАэстро «tango» … )))
спАсибо Ufimtsev и Ёпрст за «шустрого» —http://www.firstobject.com/ …
.. вОт ..
Зачот!!! Пешы есчо!!!
открываю файл
A1-7148-4F98-8F23-DBCE62942236″ ВерсПрог=»1С:ПРЕДПРИЯТИЕ7.7 08Q2002 7.70.500″ ВерсФорм=»5.01″>
<?xml version=»1.0″ encoding=»windows-1251″ ?>
— <Файл xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» ИдФайл=»NO_PRIB_77457745_7731240579774501001_20080711_2DB855
— <Документ КНД=»1151006″ ДатаДок=»11.07.2008″ Период=»31″ ОтчетГод=»2008″ КодНО=»7745″ НомКорр=»0″ ПоМесту=»214″>
— <СвНП ОКВЭД=»28.11.;» Тлф=»730-54-54″>
<НПЮЛ НаимОрг=»ООО «БЛАЛЛАЛА»» ИННЮЛ=»77888″ КПП=»75555001″ />
и т.д.
в столбце значение-пусто. отчего так?
это отчет из 7ки выгружен
(64) Вот ты блин своим ответ форум растянул — главная страница вытянулась до не могу.
(64) … изИните за крамольную мЫсль … а ползунком двИгали … вОт …
(66) … по поводу (64) … ой, что-то не то нАписал, нАверное … ))) винОват …
… знАчит:
… «Если файлXML.ТипУзла = ТипУзлаXML.Текст Тогда «…
… значит строки этого ХМЛ не содержат «Текст» …
всего существУет 3 типа:
1. ТипУзлаXML.НачалоЭлемента
2. ТипУзлаXML.Текст
3. ТипУзлаXML.КонецЭлемента
… вОт …
(67) а что содержат тогда? видно же что там текст.
(65) сорри! у меня в мозилле всё нормально…
аналогично. выгрузка из 7ки-налог на имущество. если есть 7ка попробуйте из ней посмотреть какой-нить файлик отчетности, который выгружается
(66) двигал ползунком.
(70) … пОлучил … пОсмотрю … дОложусь … ))) … вОт ..
(70) … если, нАпример, строку:
<НПЮЛ НаимОрг=»кккккк;» ИННЮЛ=»55555″ КПП=»666666″/>
пЕрЕписать как:
<НПЮЛ> НаимОрг=»кккккк;» ИННЮЛ=»55555″ КПП=»666666″</НПЮЛ>
… то рЕдакторы читают её как текст …
… вИдимо формАт такой … и началоЭлемента и текстЭлемента и конецЭлемента ВСЁ в одном теге … стАндарты бЫвают рАзные … )))
… это всЁ что мОгу скАзАть на уровне своих знАний по ХМЛ … (((
… вОт …
п.с. узнАете — не забудЬте рАссказать … бУдем ждать …
(72) точно не узнаю)
так выгружает стандартный механизм выгрузки 7ки. и как ни странно всё втягивается в Такском нормально. ну да ладно. Пасиб за обработку)
(73) … вАм спасибо .. ! удАчи … вОт ..
(70) .. все сОООбразил …
в строке: <НПЮЛ НаимОрг=»кккккк;» ИННЮЛ=»55555″ КПП=»666666″/>
1. НаимОрг=»кккккк;»
2. ИННЮЛ=»55555″
3. КПП=»666666″
1-3 … это Атрибуты …
… их чтение возможно в моей обработке если в процедуре:
«кнОткрыть_чтениеХМЛфайла» перенести код:
Пока файлXML.ПрочитатьАтрибут() Цикл
____Атрибут = файлXML.Значение;
____Сообщить(«атрибут:» + файлXML.Имя + «=» + файлXML.Значение);
КонецЦикла;
и поставить его после строк:
Если файлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Имя = файлXML.Имя;
глубина = файлXML.КонтекстПространствИмен.Глубина;
…. ВОТ сЮДА вставить код…
… естествЕЕно сделаю и испрАвлю обрАботку для вАрианта с «Атрибутами» …
… спАсибо вАм … ВОТ … )))
(75) а…ну вот будет более универсальное решение) для чтения и таких файлов! респект! как сделаете-отпишитесь-я скачаю!
(76) … Спасибо ! … отпишУсь Обязательно … )))
Сделаны две обработки:
1.«Читальщик XML файлов ред 3» — использует переменные и используется оператор «Если – Тогда»
2.«Читальщик XML файлов ред 4» использует массив и Циклы.
Новое у этих обработок:
1.Форма «Настройка». Устанавливает величину читаемого размера файла. При его превышении отключается работа индикатора действия. Устанавливается цвет индикатора.
2.Читает файл ХМЛ полностью – элементы, атрибуты, текст.
Спасибо: rasswet – за интерес, замечания и комментарии к обработке.
… ВОТ …
(78) дополнение в обработках:
3.«Читальщик XML файлов ред 5» — использует Рекурсию.
… вОт …
не смотрел обработку аффтара, ничего против стиля писания афтара не имею против, мне пофиг, однако, хочу заметить, что разбор XML файла решается обычной рекурсией без всяких условий. При этом легко можчно считывать файлы разными порциями, как угодно, формируя обычное дерево. При этом атрибуты и значения атрибутов можно раскладывать на токены, после чего, для окончательной обработки получать структуру, вроде динамических списков. Код будет весьма коротким и достаточно понятным. Кому интересно, могу выложить свой разбор, только не XML файла, а похожей структуры тоже состоящей из узлов и их атрибутов. Причем количество уровней вложености узлов мне по барабану. Лишь бы памяти хватило.
Относительно кода, нельзя говорить, что я пишу как хочу. Считается плохим тоном в программирования в языках высокорого уровня использовать безусловные переходы 🙂 Имхо мое мнение.
(80) …
1. … что тАкое «хороший» или «плохой» тон прогрАммирования я НЕзнаю — мне «пофиг» …
2. … если ВЫложите своЮ версию — лИчно мне будет интерсно и с интЕресом ознАкомлюсь с вАшим мЕтодами и спОсобами …
П.С.
… замеры по данной обработки при считывАнии одного и того же файла:
1. версия_3 = 31 сек. (открывет 15 уровней — решение через Если)
2. версия_4 = 34 сек. (открывет любое кол. уровней — решение через Цикл)
3. версия_5 = 28 сек. (открывет любое кол. уровней — решение через Рекурсия)
… разница между спОсобами чтения в 10% … но прОстота нАписания обрАтнАя …
.. отсюДА вЫвод: каЖдому «гОршку» своЁ прЕдназначение …
… вОтВОООбЩЕм …
ну ну.версия 2 через цикл используются безусловные переходы?
(82) … нУууу … нИкто и нЕспорит …
оценки любОй прОгрАммы:
1. вЫполнять ТО, что нУжно пОльзователю
2. нАписАна она должна быть как можно бЫстрее
3. вЫполнять зАдуманное как мОжно быстрее
4. пОдпрАвляться, при нЕобходимости как мОжно бЫстрее
5. после 1-4 можно переходить от внЕшнего крАсивого вида к внУтрЕЕннему совершенству
… ВоТ … ждЁм вАшу обрАботку …
(82) … БЕЗусловный переход — Перейти (Goto), а Если (If) — УСЛОВие-ный переход …
2. версия_4 = 34 сек. (открывет любое кол. уровней — решение через Цикл)
подскажите, как через цикл реализовать «открывает любое кол. уровней»?
я имею ввиду не используя goto
да и вообще как в циклах можно делать неограниченное количество уровней, поделитесь технологией
… понятно, принято, думаю, что рАзговариваем МЫ с вАми на разных языках …
… удачи …
… вОт …
(87) Как известно, алгоритм любой сложности может быть реализован с помощью операторов цикла и альтернативы(выбора). Цитата недословная (по памяти).
Если речь о рекурсии неопределенной глубины, то реализацию с помощью цикла while и стека можно найти где -то в google по строке «Рекурсия или цикл».
Да и здесь на ИС уже эта тема обсуждалась.
(89) … ммм … по моей памяти: … » … алгоритм любой сложности может быть реализован с помощью операторов …» : … кАк ни стрАннО при помощи двух операторов: «Метка» и «Если-Тогда» …
Нет , Шепот , я соврал в формулировке меньше чем ты.
Одна из формулировок теоремы Дейкстра :
Алгоритм любой сложности можно реализовать, используя только цикл while и альтернативу.
Или другая формулировка :
Теорема Дейкстра. Алгоритм любой сложности можно реализовать, используя только три конструкции: следования (линейные), выбора (ветвления) и повторения (циклические).
Посмотри в google «Теорема Дейкстра».
Люди говорят , что Дейкстра как раз объявил войну меткам.
Но судя по-всему он под «меткой» предполагал нечто другое , чем ты.
Впрочем , все три приведенные конструкции можно реализовать с помощью
Если -Тогда и метки . Ты это имел ввиду ?
Под «войной меткам» , насколько я помню 80-е годы подразумевалось
применение безусловных переходов в языках высокого уровня.
дело не в самих то метках. дело в коде. да, одну и ту же задачу можно реализовать разными способами. Например, посмотрите мой «Финансы и анализ» для 7.7, я использовал для реализации макроязыка собственный алгоритм, который впринципе рабочий, т.е задачу решил. Но! Я счаз сам в нем не разберусь, слишком много если, т.е. условностей. А теперь я оперирую другими понятиями, лексемы, токены, деревья разбора, и алгоритм разбора моего макроязыка стал раз в десять меньше и понятнее.
Использование безусловного перехода удобно, особенно если программировать в Бэйсике, но в разборе кода другим программистом очень не удобная штука.
И относительно правил хорошего тона в программировании, то это тоже самое как и правила хорошего тона в общении. Мы ж не материся тут на форуме и не обзываем друг друга, хотя могли бы.
Ко всему прочему не нужно забывать, что 1С интепритатор и избыточной код больше вреден чем полезен.
Да и вообще, вижу что у афтара много времени свободного 🙂
+ Поправка.
… подразумевалось ОТРИЦАНИЕ применения безусловных переходов…
именно, представте себе код на паскале со всякими unit-ми, представте когда из процедуры в номере строки 100 идет переход на строку 1500 причем без номерка строки а по псевдониму. а когда таких переходов будет много, и еще перекрестных, можно будет абалдеть разбирая этот код.
поэтому когда афтар говорит, что ему пофиг все эти правила, он проявляет свое невежество. Причем безо всяких наездов на афтара.
да что там паскаль, представим себе C++ с безусловным переходом в начальной функции Mainв хер знает куда 🙂
Слово «невежество» употреблено неверно.
Шепот вполне сознательно игнорирует известные ему сложившиеся правила приличия.
Ну , что ж . Мы его , как обычно, заклеймим. Почему ж не заклеймить ?
В первый раз что ли ?
(98) … вОООбщем-то спАсибо! …
… и за стОль «обширный» кОООмментарий и за эКскурс …
… но нАблюдается тЕнденция … снАчало МЫ пишем типА «для взрОслых» … зАтем взрослые прикидЫваются «мАленькими» … пОтом ТЫ пишЕшь «для Маленьких» .. пОтом Маленькие-взрослыЕ говорят что: «ТЫ, что мАленький … ???….» … вОООбщем чЕредуются приЁмы псИхологии — «обЁртыши» с зАконами дЕмагогии под номер «ТРИ» …
примечание:
повторю утвЕрждЕние, что » … алгоритм любой сложности может быть реализован с помощью операторов .. » — двух опЕраторов:
1. GoTo — Label
2. If — Then
/// … вОООт …
1. снАчало мне говорят, что используются «БЕЗусловные» переходы …
2. пОтом говорЯт, что БЕЗусловные пЕрЕходы НЕтак пишутся …
3. пОтом мне гОворят как «ОНИ» круто прОграммируют — НО уже ЗАбыли КАК…?
4. нууу, и т.д. …
П.С.
Тебе должно быть лестно !
Разные люди , используя разные приёмы психологии , пытаются вразумить Шепота : не оригинальничай в стиле . Стиль этот , невыражающий оригинального содержания, есть пёстрый фантик и не более.
Разворачиваем фантик . И что внутри ?
«повторю утвЕрждЕние, что » … алгоритм любой сложности может быть реализован с помощью операторов .. » — двух опЕраторов:
1. GoTo — Label
2. If — Then »
Автора утверждения не приводится. Стало быть — сам Шепот .
То, что любой алгоритм может быть реализован на ассемблере — НИКТО НЕ СПОРИТ.
Все конструкции : 1.следования,2.ветвления,3.цикла — суть комбинации этих
GOTO , if-Then.
Речь шла о том , что в языках высокого уровня , например «1с»,
(«структурное программирование» — термин 70-80-х годов) НЕ НУЖНО употребление безусловных переходов (GOTO) — достаточно этих трёх конструкций.