|
Подчиненные строки дерева в таблицу значений | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
STAYEKR
27.09.12
✎
14:56
|
Всем добра! Стоит задача выгрузки данных 1с в ексель. Выгрузка осуществляется некорректно, т.к. выгружаются только "родительские" строки. Возник вопрос: как сделать так, чтобы выгружались и вложенные строки? Использую следующий код (нашел в инете):
Процедура ВыгрузитьРезультатВExcel(ТаблицаРезультата) //ЦЕЛЬ: Выгрузить данные табличной части формы в файл Excel Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Исключение Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice не установлена на данном компьютере!"); Возврат; КонецПопытки; Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства.Name = "AsTemplate"; Свойства.Value = Истина; Args = Новый COMSafeArray("VT_VARIANT", 3); Args.SetValue(0, Свойства); Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства1.Name = "Hidden"; Свойства1.Value = Истина; Args.SetValue(1, Свойства1); Document = Desktop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Args); Sheets = Document.getSheets(); Sheet = Sheets.getByIndex(0); мИтКол = 0; Для каждого кол из ТаблицаРезультата.Колонки Цикл Sheet.getCellByPosition(мИтКол,0).setString(кол.Имя); мИтКол = мИтКол + 1; КонецЦикла; ВсегоСтрок = ТаблицаРезультата.Количество(); ВсегоКолонок = ТаблицаРезультата.Колонки.Количество(); МассивКОМ = Новый COMSafeArray("VT_VARIANT", ВсегоСтрок,ВсегоКолонок); иткол = 0; итстр = 0; Для каждого стр из ТаблицаРезультата Цикл Для каждого кол из ТаблицаРезультата.Колонки Цикл стрРез = СокрЛП(стр[кол.Имя]); МассивКОМ.SetValue(итстр,иткол,стрРез); иткол = иткол+1; КонецЦикла; иткол = 0; итстр = ?(итстр=ВсегоСтрок,0,итстр+1); КонецЦикла; begCol = 0; begRow = 1; endCol = ВсегоКолонок-1; endRow = ВсегоСтрок; Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow); Range.setDataArray(МассивКОМ); //Document.storeToURL(ПривестиФайлКУРЛ(ПутьКФайлу),Args); Свойства2 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства2.Name = "FilterName"; Свойства2.Value = "MS Excel 97"; Args.SetValue(2,Свойства2); Document.GetCurrentController().GetFrame().GetContainerWindow().SetVisible(Истина); КонецПроцедуры; Буду признателен за любую помощь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |