Имя: Пароль:
1C
1С v8
Подчиненные строки дерева в таблицу значений
, ,
0 STAYEKR
 
27.09.12
14:56
1. я знаю как и подскажу 0% (0)
2. я не знаю как но попробую 0% (0)
3. многабукафниасилил 0% (0)
4. я тупо сижу на ветке 0% (0)
5. я не буду подсказывать, нубье маст дай!!11 0% (0)
Всего мнений: 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(Истина);
КонецПроцедуры;

Буду признателен за любую помощь
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший