Имя: Пароль:
1C
 
1C&VBS. Подскажите как в 1С выполнить код VBS
Ø
0 Пим Сибирский
 
01.03.06
14:23
Или кининте ссылкой, где это сожно посмотреть.
1 Денис2
 
01.03.06
14:25
КомандаСистемы()
2 Нуралиев
 
01.03.06
14:27
Образно: Создаешь файл вписываешь в него построчно код скрипта, сохраняешь с расширением .vbs и тут же запускаешь
3 Young
 
01.03.06
14:28
+(2)
http://www.script-coding.info/MSScriptControl.html
4 smaharbA
 
01.03.06
14:31
СкриптЗапуск=СоздатьОбъект("MSScriptControl.ScriptControl");
СкриптЗапуск.Language="vbscript";
Стр="
|Function Msg(message)
|msgbox(message)
|End Function";
Скрипт.AddCode(Стр);
СкриптЗапуск.eval("Msg(Привет)");
5 smaharbA
 
01.03.06
14:32
(2) Недо-Нуралиев...
6 Young
 
01.03.06
14:33
Дядько Абрахамс не дремлет :)
7 Пим Сибирский
 
01.03.06
14:39
Спасибо, други!
8 smaharbA
 
01.03.06
14:44
+(4) для (0) только я рекомендую приглядеться для работы с этим объектом к другому языку JavaScript(хотя для скриптов не в 1С сам предпочитаю VBS) с джскрипт можно получить объекты в 1с практически любого типа данных и использовать их с нормальным синтаксисом без конструкций типа
Стр="
|Function Msg(message)
|msgbox(message)
|End Function";
9 Young
 
01.03.06
14:49
(8) А можешь примерчик конкретный, где JScript+MSScriptControl будет удобнее, чем VBScript+MSScriptControl?
10 smaharbA
 
01.03.06
15:14
Даже два ;)
//*******************************************
Процедура Сформировать()
  Scr = CreateObject("MSScriptControl.ScriptControl");
  Scr.Language = "javascript";
  Scr.Timeout=-1;
  locator=createobject("wbemscripting.swbemlocator");
  service=locator.connectserver();
  oP=service.ехесquery("select * from Win32_Printer");
  Scr.AddObject("o",oP);
  e=Scr.eval("new Enumerator(o);");
  Пока e.atEnd(0)=0 Цикл
    Сообщить(e.item(0).Name);
    e.moveNext(0);
  КонецЦикла;
КонецПроцедуры
Процедура ВремяСервера()
  Scr = CreateObject("MSScriptControl.ScriptControl");
  Scr.Language = "javascript";
  Scr.Timeout=-1;
  locator=createobject("wbemscripting.swbemlocator");
  service=locator.connectserver("1CSERVER");
  oP=service.ехесquery("select * from Win32_LocalTime");
  Scr.AddObject("o",oP);
  e=Scr.eval("new Enumerator(o);");
  Пока e.atEnd(0)=0 Цикл
    Сообщить("Год: " + e.item(0).Year);
    Сообщить("Месяц: " + e.item(0).Month);
    Сообщить("День: " + e.item(0).Day);
    Сообщить("Квартал: " + e.item(0).Quarter);
    Сообщить("Неделя: " + e.item(0).WeekInMonth);
    Сообщить("ДеньНедели: " + e.item(0).DayOfWeek);
    Сообщить("Час: " + e.item(0).Hour);
    Сообщить("Минут: " + e.item(0).Minute);
    Сообщить("Секунд: " + e.item(0).Second);
    Сообщить("Миллисекунды: " + e.item(0).Milliseconds);
    e.moveNext(0);
  КонецЦикла;
КонецПроцедуры // ВремяСервера
11 Young
 
01.03.06
15:30
(10) Да, пожалуй Enumerator иногда удобнее, чем "for each", уговорил :)
12 smaharbA
 
01.03.06
15:37
(11) И не только энумератор, можно и джскриптовский объект в переменную 1С загнать и применять к нему методы джскрипт, к примеру
Scr = CreateObject("MSScriptControl.ScriptControl");
Scr.Language = "javascript";
Scr.Timeout=-1;
Д=Scr.Eval("new Data");
Сообщить(Д.getUTCMilliseconds(0));
...
Только обати внимание в метод/функцию javascript обязательно надо передать чтонибудь, даже если у нее нет входных параметров иначе ошибка...
13 trdm
 
02.03.06
13:16
А вот интересно можно в таком скрипте подписываться на события и переправлять их в 1С? Да еще вопрос есть такая-же обертка как Enumerator в vbs?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн