7.7 1С + скрипт

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем klopik, 3 май 2007.

  1. TopicStarter Overlay
    klopik
    Offline

    klopik

    Регистрация:
    8 фев 2007
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    народ как засунуть в 1с скрипт, написанный на ВБ- или Ява-Скрипт???
    а про урдб, что ваще никто ничё не знает(эт судя по ответам на мои пред. темы)?
    жду ваших ответов!
  2. Filister
    Offline

    Filister

    Регистрация:
    28 апр 2007
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Использование объекта Microsoft Script Control в среде 1С:Предприятие v7.7
    Объект Microsoft Script Control

    Объект Microsoft Script Control в среде 1С:Предприятие v7.7 может быть создан следующим образом:

    ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");

    После этого вы можете вызывать и использовать методы и свойства этого объекта.

    Объект позволит исполнить любой код на VBScript или JScript. Может быть очень полезен, если нужно исполнить код, который не может быть исполнен непосредственно в 1С:Предприятии. Например:

    * Для работы с некоторыми OLE-объектами (например, при работе с технологией WMI - образцы кода см. ниже) нужно использовать функцию "GetObject". Этой функции нет во встроенном языке 1С:Предприятие v7.7, но используя Microsoft Script Control, вы сможете работать с ней.
    * Не все методы и свойства различных OLE-объектов корректно работают непосредственно в 1С:Предприятии v7.7. Иногда не удаётся передать или получить какой-то параметр, т.к. не поддерживается тот или иной тип данных. С помощью Microsoft Script Control эти проблемы решаются.
    * В VBScript и JScript есть функции, которых нет во встроенном языке 1С:Предприятие v7.7 (например, функция, вычисляющая квадратный корень числа). Используя Microsoft Script Control, вы сможете полноценно работать с этими функциями.
    * 1С:Предприятие v7.7 не всегда корректно работает с объектами так называемых "коллекций", которые могут быть возвращены различными свойствами и методами тех или иных OLE-объектов. Используя Microsoft Script Control, вы сможете полноценно работать с любыми коллекциями, например, с помощью цикла "for each", которого нет во встроенном языке 1С:Предприятие v7.7.

    Полное описание объекта на английском языке можно скачать вместе с его дистрибутивом с сайта 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;
    КонецПопытки;
    Возврат Рез;
    КонецФункции //КвКорень

    2005 http://www.script-coding.info R

Поделиться этой страницей