Перейти на главную страничку сайта (список статей, файлы для скачивания)
Объект Microsoft Script Control в среде 1С:Предприятие v7.7 может быть создан следующим образом:
ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
После этого вы можете вызывать и использовать методы и свойства этого объекта.
Объект позволит исполнить любой код на VBScript или JScript. Может быть очень полезен, если нужно исполнить код, который не может быть исполнен непосредственно в 1С:Предприятии. Например:
Полное описание объекта на английском языке можно скачать вместе с его дистрибутивом с сайта Microsoft. При этом, если у вас не слишком старая версия Windows, ничего устанавливать вам скорее всего вообще не придётся. Описание свойств и методов объекта на русском языке в формате синтакс-помощника 1С:Предприятие v7.7 (als-файл) вы можете скачать здесь. Скопируйте ALS-файл в каталог программы (например, "C:\Program Files\1Cv77\BIN\"), и в конфигураторе в синтакс-помощнике появится ветка "Некоторые объекты Automation". CHM-файл справки на русском языке по встроенным константам и функциям языка VBScript вы можете скачать здесь. Примеры работы с объектом Microsoft Script Control вы можете также получить, рассмотрев код маленькой конфигурации для 1С:Предприятия v7.7 "Администратор 1С", которую вы можете скачать на главной страничке этого сайта.
Функция читает список компьютеров, зарегистрированных в доменах локальной сети, и возвращает таблицу значений с
колонками "Домен" и "Компьютер":
Функция глПолучитьКомпьютеры() Экспорт
ТаблЗнач=СоздатьОбъект("ТаблицаЗначений");
ТаблЗнач.НоваяКолонка("Домен");
ТаблЗнач.НоваяКолонка("Компьютер");
Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function GetComputers()
| Set WinNT = GetObject(""WinNT:"")
| WinNT.Filter = Array(""domain"")
| strInfo=vbNullString
| For Each Domain In WinNT
| Set ADSI = GetObject(""WinNT://"" & Domain.Name)
| ADSI.Filter = Array(""computer"")
| For Each Comp In ADSI
| strInfo=strInfo & Domain.Name & vbTab & Comp.Name & vbCrLf
| Next
| Next
| GetComputers = strInfo
|End Function
|");
Текст=СокрЛП(ScrptCtrl.Run("GetComputers"));
Исключение
Сообщить(ОписаниеОшибки());
Возврат ТаблЗнач;
КонецПопытки;
Для ы=1 по СтрКоличествоСтрок(Текст) Цикл
СтрКомп=СтрПолучитьСтроку(Текст,ы);
Разд=Найти(СтрКомп,СимволТабуляции);
Домен=Лев(СтрКомп,Разд-1);
Компьютер=Прав(СтрКомп,СтрДлина(СтрКомп)-Разд);
ТаблЗнач.НоваяСтрока();
ТаблЗнач.Домен=Домен;
ТаблЗнач.Компьютер=Компьютер;
КонецЦикла;
ТаблЗнач.Сортировать("Домен,Компьютер");
Возврат ТаблЗнач;
КонецФункции //глПолучитьКомпьютеры
Функция читает список зарегистрированных информационных баз 1С из реестра Windows и возвращает таблицу значений
с колонками "Название" и "Путь":
Функция глПолучитьСписокИБ() Экспорт
ТаблЗнач=СоздатьОбъект("ТаблицаЗначений");
ТаблЗнач.НоваяКолонка("Название");
ТаблЗнач.НоваяКолонка("Путь");
Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function Get1CV77Titles()
| const HKEY_CURRENT_USER = &H80000001
| Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"")
| strKeyPath = ""Software\1C\1Cv7\7.7\Titles""
| oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
| strInfo=vbNullString
| For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & vbTab & Value & vbCrLf
| Next
| Get1CV77Titles = strInfo
|End Function
|");
Текст=СокрЛП(ScrptCtrl.Run("Get1CV77Titles"));
Исключение
Сообщить(ОписаниеОшибки());
Возврат ТаблЗнач;
КонецПопытки;
Для ы=1 по СтрКоличествоСтрок(Текст) Цикл
СтрБазы=СтрПолучитьСтроку(Текст,ы);
Разд=Найти(СтрБазы,СимволТабуляции);
Путь=Лев(СтрБазы,Разд-1);
Название=Прав(СтрБазы,СтрДлина(СтрБазы)-Разд);
ТаблЗнач.НоваяСтрока();
ТаблЗнач.Название=Название;
ТаблЗнач.Путь=Путь;
КонецЦикла;
ТаблЗнач.Сортировать("Название");
Возврат ТаблЗнач;
КонецФункции //глПолучитьСписокИБ
Процедура делает Log Off (Парам=4), Shutdown (Парам=5) или Reboot (Парам=6) выбранному компьютеру:
Процедура глViolateComputer(ИмяКомпа,Парам) Экспорт
Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function ViolateComputer()
| Set WMI = GetObject(""winmgmts:{(Shutdown,RemoteShutdown)}\\"+СокрЛП(ИмяКомпа)+"\Root\CIMV2"")
| For Each OS In WMI.ExecQuery(""SELECT * FROM Win32_OperatingSystem"")
| OS.Win32Shutdown("+Парам+")
| Next
|End Function
|");
ScrptCtrl.Run("ViolateComputer");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры //глViolateComputer
Функция вычисляет квадратный корень числа:
Функция КвКорень(Чсл)
Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function GetSqr(x)
| GetSqr = Sqr(x)
|End Function
|");
Рез=ScrptCtrl.Modules("Global").CodeObject.GetSqr(Чсл);
Исключение
Сообщить(ОписаниеОшибки());
Возврат 0;
КонецПопытки;
Возврат Рез;
КонецФункции //КвКорень
Людоговский Александр
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.