Имя: Пароль:
1C
1С v8
Работа с Оpen Office из 1С на примере Calc
0 kejsi
 
28.01.18
00:23
есть пара вопросов:
1. Устанавливаю ширину колонки - а меняется ширина всех колонок.

код такой
    Попытка
        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 = ВсегоСтрок;
    Columns0=Sheet.getColumns().getByIndex(0);
    Columns0.OptimalWidth=0;
      Columns0.Width=200;
       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(Истина);


и вот где
Columns0.Width=200;
меняется ширина всех колонок на 200

2. Как установить защиту на лист паролем (чтобы нельзя было ничего изменить кроме 2х указанных ячеек)

3. Может у кого есть полная обработка указанная в примере
http://wiki.mista.ru/doku.php?id=1c:v8:howto:rabota_s_open_office_iz_1s_na_primere_calc

просто там не хватает пары процедур в частности НачатьВыводВOpenDocument

Спасибо
1 kejsi
 
29.01.18
22:30
Может кто-то поможет? Буду очень благодарен!
2 cw014
 
29.01.18
22:38
Что гугл говорит про твои вопросы?
3 cw014
 
29.01.18
22:39
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн