0
STAYEKR
27.09.12
✎
14:56
|
Всего мнений: 0
Всем добра! Стоит задача выгрузки данных 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(Истина);
КонецПроцедуры;
Буду признателен за любую помощь
|
|