Но такая схема устраивала всех только до определенного предела, по мере роста объёмов разбираемых файлов скорость перестала устраивать даже самых терпеливых пользователей, и этот механизм был переписан на C#, для передачи результата в 1с использовалась функция "ЗначениеИзФайла". Приложение является консольным, принимающим на вход следующие параметры:
1. Путь к XML файлу
2. Имя узлового элемента (элемент который развернётся в строку таблицы значений,)
3. Имя файла в который будет записано сериализованное представление таблицы значений
4. Суб путь....необязательный параметр, в случае если надо указать в какой ветке XML искать узловые элементы
В случае если утилитка вложена в качестве макета в обработку то её можно вызвать следующей функцией
Функция ПрочитататьВТЧXMLИерархВнеш(пСТрДанных,пТЗ,пИмяУзловогоЭлемента,пСубпуть = "") Экспорт
лПуть = КаталогВременныхФайлов()+"CreatingTZFor1C.exe";
Попытка
ЭтотОбъект.ПолучитьМакет("CreatingTZFor1C").Записать(лПуть);
Исключение
лФайл = Новый Файл(лПуть);
Если НЕ лФайл.Существует() Тогда
Возврат Неопределено;
КонецЕсли;
КонецПопытки;
лВремФайл = ПолучитьИмяВременногоФайла("xml");
лЗаписьТекста = Новый ЗаписьТекста(лВремФайл);
лЗаписьТекста.Записать(пСТрДанных);
лЗаписьТекста.Закрыть();
лВремРезФайл = ПолучитьИмяВременногоФайла("data");
лТЧ = Новый ТаблицаЗначений;
ЗначениеВФайл(лВремРезФайл,лТЧ);
Если ПустаяСтрока(пСубпуть) Тогда
лКоманда = """"+лПуть+""" """+лВремФайл+""" """+пИмяУзловогоЭлемента+""" """+лВремРезФайл+"""";
Иначе
лКоманда = """"+лПуть+""" """+лВремФайл+""" """+пИмяУзловогоЭлемента+""" """+лВремРезФайл+""" """+пСубпуть+"""";
КонецЕсли;
//КомандаСистемы(лКоманда,КаталогВременныхФайлов());
ЗапуститьПриложение(лКоманда,КаталогВременныхФайлов(), Истина);
пТЗ = ЗначениеИзФайла(лВремРезФайл);
Возврат лВремРезФайл;
КонецФункции
И собственно вызов
ТЧДанных = Новый таблицазначений;
//лСтрРез - Строка с XML
//Policy - Имя узла разворачиваемого в строку
ПрочитататьВТЧXMLИерархВнеш(лСтрРез,ТЧДанных,"Policy");
Такой финт ушами позволяет из XML файла весом более 17 МБ за 10 секунд положить в таблицу значений 6000 строк и 2700 колонок. Так что польза очевидна :-)