Имя: Пароль:
1C
1С v8
Переделываю обработку с 7-ки, ошибка- Scr = СоздатьОбъект("MSScriptControl.ScriptControl")
0 SkillUp
 
15.07.20
12:08
Здравствуйте, переделываю обрабоку с 7-ки на 8-ку (обычные формы), ошибка на строке Scr = СоздатьОбъект("MSScriptControl.ScriptControl"). Переделываю на Scr = Новый COMОбъект("MSScriptControl.ScriptControl"), так же ошибка :{ВнешняяОбработка.ОтгрузкаКонстар.Форма.Форма.Форма(23)}: Ошибка при вызове конструктора (COMОбъект)
        Scr = Новый COMОбъект("MSScriptControl.ScriptControl");
по причине:
-2147024891(0x80070005): Отказано в доступе.)

Сам код:
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Open("GET", СсылкаНаФайлDropbox, 0);
    WinHttp.Send();
    
    Если WinHttp.Status = 200 Тогда
        Scr = СоздатьОбъект("MSScriptControl.ScriptControl");
        Scr.Language = "vbscript";
        ТекстМодуля = "
        |Sub SaveToFile(ByRef FileName, ByRef WinHttp)
        |    Set Stream = CreateObject(""ADODB.Stream"")
        |    Stream.Type = 1
        |    Stream.Mode = 3
        |    Stream.Open
        |    Stream.Write WinHttp.responseBody
        |    Stream.SaveToFile FileName, 2
        |    Stream.Close
        |End Sub";
        
        Scr.AddCode(ТекстМодуля);
        Scr.Run("SaveToFile",ИмяФ, WinHttp);
    Иначе  
        Сообщить("Ошибка!");
        Возврат;
    КонецЕсли;

Подскажите из-за чего? Задача - получить и сохранить экселевский файл на диск, с Dropbox.
1 Tatitutu
 
15.07.20
12:09
2 SkillUp
 
15.07.20
12:24
(1) Ок, сп.
3 Ёпрст
 
15.07.20
12:25
(0) ну как бэ, в снеговике, для этого ни MSScriptControl, ни WinHttpRequest ни разу не упал (ну разве что в 8.1 и ранее)
4 fisher
 
15.07.20
12:26
Странно. Если ОФ и с клиента, то на права ругаться не должно, ибо запускается под твоими правами. Неужели серверный модуль, типа задание регламентное или еще что?
А вообще, по-идее это должно переписываться на нативное HTTP-соединение
5 Ёпрст
 
15.07.20
12:28
+3 смотри HTTPСщединение и его методы
Получить(<HTTPЗапрос>, <ИмяВыходногоФайла>)
6 SkillUp
 
15.07.20
12:34
(5) (4) (3) (1)  Решил проблемы так, может куому-то пригодиться:

    Если WinHttp.Status = 200 Тогда
        StreamOut = Новый COMОбъект("ADODB.Stream");
        StreamOut.Type = 1;
        StreamOut.Mode = 3;
        StreamOut.Open();
        StreamOut.Write(WinHttp.ResponseBody);
        //РежимДиалога = РежимДиалогаВыбораФайла.Открытие;
        //Диалог = Новый ДиалогВыбораФайла(РежимДиалога);
        StreamOut.SaveToFile(ИмяФ, 2);
        StreamOut.Close();
        StreamOut = Неопределено;
    Иначе  
        Сообщить("Ошибка!");
        Возврат;
    КонецЕсли;
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший