Из 1С (v8.3) нужно подключиться к открытой активной странице OpenOffice Calc

Автор Miket78, 27 октября 2015, 17:03

0 Пользователи и 1 гость просматривают эту тему.

Miket78

Зарегистрировался (еле капчу прошел). Повторю вопрос, т.к. обрезалось.

Уважаемые коллеги. Помогите решить проблемку. Из 1С (v8.3) нужно подключиться к открытой активной странице OpenOffice Calc и считать с нее информацию. В интернете нашел код:
Функция ЗагрузитьТЗизФайла(ПутьКФайлу)

   //OpenOffice Calc//////////////////////////////////////////////////////////////////////////////////////////////
   Попытка
       ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
   Исключение
       Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice\LibreOffice не установлена на данном компьютере!");
   Возврат Неопределено;
   
   КонецПопытки;
   Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
   Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   Свойства.Name = "AsTemplate";
   Свойства.Value = Истина;
   Args = Новый COMSafeArray("VT_VARIANT", 2);
   Args.SetValue(0, Свойства);
   Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   Свойства1.Name = "Hidden";
   Свойства1.Value = Истина;
   Args.SetValue(1,Свойства1);
   Document = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(ПутьКФайлу), "_blank", 0, Args);
   Sheets = Document.getSheets();
   Sheet = Sheets.getByIndex(0);
   локТабЗнач = Новый ТаблицаЗначений;
   begCol = 0;
   begRow = 0;
   endCol = Sheet.Data.GetLength(6) - 1;
   endRow = Sheet.Data.GetLength() - 1;
   нКол = 0;
   локТабЗнач.Колонки.Очистить();

   КС = Новый КвалификаторыСтроки(50);
   Массив = Новый Массив;
   Массив.Добавить(Тип("Строка"));

   ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , КС);

   Пока нКол <= endCol Цикл
       ИмяКол = "К"+Строка(нкол+1);
       локТабЗнач.Колонки.Добавить(ИмяКол,ОписаниеТиповСтрока);
       нКол = нКол + 1;
   КонецЦикла;
   Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow);
   МассивКом = Новый COMSafeArray("VT_VARIANT", Range.Columns.Count, Range.Rows.Count);
   МассивКом = Range.getDataArray();
   тмпПростойМассив = МассивКом.Выгрузить();
   Для каждого массив из тмпПростойМассив Цикл
       ит = 0;
        НовСтр = локТабЗНач.Добавить();
       Для каждого ЭлементМассива из массив цикл
           НовСтр [ит] = ЭлементМассива;
           ит = ит + 1;
       КонецЦикла;
   КонецЦикла;
   Возврат локТабЗнач;

КонецФункции

Все работает, но этот код для существущего файла, а мне нужно подключиться к активной открытой странице calc.

У меня есть обработка, она делает это для MS Excel. Вот код из нее для чтения активной страницы:

Ексель = ПолучитьCOMОбъект(, "Excel.Application");
АктивнаяСтраница = Ексель.ActiveSheet;
ТекстЯчейки=Врег(СокрЛП(АктивнаяСтраница.Cells(НомерСтрокиЕксель,НомерКолонкиЕксель).text));

Мне нужно переделать обработку под Open Office Calc.