Имя: Пароль:
1C
 
Использование Microsoft VBScript в 1с 8
0 Oleg333
 
26.09.09
20:35
Товарищи помогите кто знает советом решить следующую проблему.

Попытался в 1с использовать MSScriptControl, следующим образом:

Script=Новый COMОбъект("MSScriptControl.ScriptControl");
Script.Language="vbscript";
СтрокаСкрипта="Private Declare Function URLDownloadToFile Lib ""urlmon.dll"" Alias ""URLDownloadToFileA"" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
|Sub GetFile  
|Dim ret As Long  
|ret = URLDownloadToFile(0, ""http://www.mail.ru"", ""c:\1.html"", 0, 0)  
|End Sub";

Script.AddCode(СтрокаСкрипта);  

При выполнении последнего оператора выдается ошибка:
{Форма.Форма(93)}: Ошибка при вызове метода контекста (AddCode): Произошла исключительная ситуация (Ошибка компиляции Microsoft VBScript): Предполагается наличие окончания инструкции
Script.AddCode(СтрокаСкрипта);  
по причине:
Произошла исключительная ситуация (Ошибка компиляции Microsoft VBScript): Предполагается наличие окончания инструкции.

Этот же код написанный в екселе в качестве макроса прекрасно работает. Я так понимаю проблема в том, что я пытаюсь определить функцию URLDownloadToFile из библиотеки "urlmon.dll".

Не подскажите как правильно написать чтобы заработало?
1 МихаилМ
 
26.09.09
20:42
to (0)
URLDownloadToFile Lib ""urlmon.dll"" Alias
Насколько я помню, скриптовые языки от мс не поддерживают вывоз длл
но может скорее всего есть какие-нибуть ole биилиотеки, через которые можно вызвать нужный метод.
2 МихаилМ
 
26.09.09
20:50
+(1)
из СП v8

HTTPСоединение (HTTPConnection)
Получить (Get)
Синтаксис:
Получить(<Источник>, <Имя выходного файла>, <Заголовки>)
Параметры:
<Источник> (обязательный)
Тип: Строка. Адрес ресурса на сервере.
<Имя выходного файла> (обязательный)
Тип: Строка. Имя файла, в который помещаются данные полученного ресурса.
<Заголовки> (необязательный)
Тип: Строка. Указываются заголовки, добавляемые к запросу на сервер. Текстовые пары вида <Заголовок>:<Значение>, разделяемые комбинацией ВК + ПС.
Описание:
Получает ресурс из указанного адреса.
3 Oleg333
 
26.09.09
20:51
А не подскажите тогда может есть какая-нибудь нормальная компонента для 8-ки с помощью которой можно страницы с интерента скачивать. Использовал всегда для этого такой код:

HTTP=Новый HTTPСоединение(СокрЛП(АдресСервера));
HTTP.Получить(АдресРесурсаНаСервере, ИмяВыходногоФайла);

Но почему-то с недавнего времени один из сайтов стал выдавать непонятную страницу в ответ. При этом если тот же адрес открывать через визуальный компонент "ПолеHTMLДокумента", он открывается нормально, но не хотелось бы задействовать визуальный объект, для которого нужно делать форму и т.д.
4 МихаилМ
 
26.09.09
21:09
то (3)
не знаю
Поиграйтесь с разными  методами.
возможно поле хтмл документа умеет читать настройки прокси
или еще что, поэтому отображает .

как альтернатавный вариант - внеш. компонента v7plus от 1с77
или ole библиотека winhttp
на крайний вариант броузер IE  через OLE с этим справится.
Возможно и в vbscript есть что-то.
5 ShoGUN
 
26.09.09
21:28
(3) >стал выдавать непонятную страницу в ответ.
Чаще всего ответ содержится в этой странице. Тем более, что если раньше все нормально работало - проблема явно не в 1С и HTTPСоединение.
6 dk
 
26.09.09
21:55
насколько я помню стоковые константы в vbs обрамляются одинарной, а не двойной кавычкой
---
а вообще тупо пихаешь код в текстовый vbs и запускаешь, сразу увидишь есть ошибки или нет )
7 Oleg333
 
26.09.09
21:59
Нашел альтернативу v8: Таки может всетаки подскажет, как считывать URL-ресурс в фоновом режиме?
а вообще похоже МихаилМ прав: "Насколько я помню, скриптовые языки от мс не поддерживают вывоз длл "
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn