|  | Ошибка загрузки xlsx-файла в клиенте 1С x64 через LibreOffice Calc x32 | ☑ | 
    
        | 0
    
        jk3   02.07.20✎ 22:35 | 
        Имеется Клиент 1С x64, LibreOffice Calc x32.
 Вот такой код, который прекрасно отрабатывает на клиенте 1С x32, падает на клиенте 1С x64 в ошибкой:
 "Произошла исключительная ситуация (Ошибка выполнения Microsoft JScript): Разрешение отклонено"
 
 
 ServiceManager = New COMObject("com.sun.star.ServiceManager");
 js = New COMObject("MSScriptControl.ScriptControl");
 js.language = "javascript";
 js.AddObject("ServiceManager", ServiceManager);
 js.eval("Arr = new Array()");
 js.eval("Arr[0] = ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); // вот на этой строке падает
 
 |  | 
    
        | 1
    
        Фрэнки   02.07.20✎ 23:16 | 
        Религия запрещает использование 64 бит в LibreOffice Calc ?     |  | 
    
        | 2
    
        spectre1978   03.07.20✎ 06:24 | 
        (0) скорее всего что-то пытается выполнить 32-битный код в адресном пространстве 64-битного процесса. Попробуйте перейти на 64-битный либреофис.     |  | 
    
        | 3
    
        jk3   03.07.20✎ 23:18 | 
        (1) (2)
Снёс x32 LibreOffice, установил x64 LibreOffice.
 Ошибка та же самая.
 
 Тут дело в том, что вызывающий процесс x64, а MSScriptControl.ScriptControl -- x32.
 
 В службах компонентов прописал по статье:
 
 Но не взлетает.
 Почему-то у самого MSScriptControl.ScriptControl при выполнении нет доступа к ServiceManager.Bridge_GetStruct.
 |  | 
    
        | 4
    
        acht   03.07.20✎ 23:35 | 
        А зачем там MSScriptControl.ScriptControl вообще?     |  | 
    
        | 5
    
        spectre1978   05.07.20✎ 09:12 | 
        Я так понимаю, код был утащен из-под клюшек и скриптконтрол был использован из-за неумения клюшек работать с COMSafeArray. Под восьмёркой ведь этот кусок можно попробовать переписать без скриптконтрола?     |  | 
    
        | 6
    
        NorthWind   05.07.20✎ 09:27 | 
        вот здесь с Bridge_GetStruct работают напрямую Выгрузка данных в Оpen Office |  | 
    
        | 7
    
        pechkin   05.07.20✎ 10:13 | 
        1с сама умеет читать xlsx     |  | 
    
        | 8
    
        spectre1978   05.07.20✎ 11:13 | 
        (7) может быть, ods читать нужно.     |  | 
    
        | 9
    
        jk3   05.07.20✎ 23:23 | 
        (4) Для запуска LibreCalc в скрытом режиме (Hidden = True).
(5) Да, код старый.
 (6) Спасибо, помогло.
 Переписал кусок вместо MSScriptControl.ScriptControl вот так:
 
 
Property1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
 Property1.Name = "ReadOnly";
 Property1.Value = True;
 Property2 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
 Property2.Name = "Hidden";
 Property2.Value = True;
 
 Args = New COMSafeArray("VT_VARIANT", 2);
 Args.SetValue(0, Property1);
 Args.SetValue(1, Property2);
 
 Document = Desktop.LoadComponentFromURL(GetFileURL(FilePath), "_blank", 0, Args);
 
 |  |