Весь код открыт, обработку выкладываю как пример использования для вставки в свою систему.
Скорость работы: xml в 780 000 строк (38Мб) на 56 000 объектов в фоновом режиме на сервере обрабатывается 22 минуты.
Поначалу читаю xml в дерево значений. И уже дерево разбираю в плоскую таблицу с формированием по каждому реквизиту отдельной колонки результата.
Для меня необходимо было обрабатывать большие эксемельки (от 30Мб). Эксель на них рушится от нехватки памяти и оставляет пустые строки в середине таблицы.
При этом у моих xml нет стилей и впомине.
Посмотрел аналогии, ничего путного не нашел и написал свою обработку.
Обращаю внимание, данное решение имеет смысл ТОЛЬКО для xml без xslt! Для эксемелек со стилями напишите свою процедурку, которая будет работать в разы быстрее.
Немного о механизме:
— xml читается «вдумчиво», дети объекта и вложенные таблицы наследуют реквизиты родителя.
— Вложенные таблицы расскладываю аккуратно как это делает Эксель (не перемножаются, а каждая строка вложенной таблицы объекта xml выкладывается отдельной результирующей строкой).
— Обработка не имеет ограничений ни по количеству реквизитов, ни по количеству уровней вложенности. Работает в рекурсии.
— Также реализовал здесь «умную» фильтрацию колонок. Т.е. без «умной» фильтрации, если Вам не нужны колонки с вложенной таблицей и без них «свернуть» таблицу, то таки останутся лишние пустые строки. Я реализовал фильтр колонок, который не создает этих пустых строк. В данной обработке фильтр не вывел на интерфейс, но весь функционал оставил. Доработайте сами.
— Все реализовывал отдельными процедурами. Чтобы Вам проще было встраивать себе в систему.
Как обычно, приветствую комментарии и предложения!
Хорошая обработка, сам думал такую писать. Иногда удобнее xml представить в виде плоской таблицы. Единственное отредактировал кусок:
Иначе ругалось и не добавляло колонки в тз, т.к. в наименовании были пробелы.
форма тупо не открывается в бух 8.2 . скачал глянуть, а теперь нужно ещё читать и править код. эйех
Было такое когда-то давно, запись эксель-файла путём создания xml и конвертации. Но было давно и не скажу, что работало нормально.
(2) Rusk51, В управляемых формах открываете?
Поднял для теста 8.2, создал пустую базу, скачал обработку с инфостарта и открыл БЕЗ изменений.
Вопрос закрываю
отлично работает 🙂
и дерево делает хорошо
особенно ТаблицаЗначений получилась классная 🙂