Как получить GUID без v7plus.dll в Предприятии 7.7

Часто в терминальных сессиях у пользователю Windows не хватает прав на регистрацию v7plus.dll. Соответственно нельзя воспользоваться, например методом СоздатьGUID() класса V7SysInfo.

 

Поэтому предлагаю в таких случаях использовать альтернативу в виде функции:

 

 

Функция СоздатьGUID() Экспорт
    Перем Результат, ScrptCtrl;

    Попытка

        ScrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language = "VBScript";
        ScrptCtrl.AddCode(
                            "Function CreateGUID()
                            |    Set TypeLib = CreateObject(""Scriptlet.TypeLib"")
                            |    CreateGUID = TypeLib.Guid
                            |End Function
                            |"
                        );
       
        Результат = ScrptCtrl.Modules("Global").CodeObject.CreateGUID();
        Результат = СтрЗаменить(СтрЗаменить(Результат, "{", ""), "}", "");
   
    Исключение
       
    КонецПопытки;
       
    Возврат Результат;
КонецФункции

 

Данную функцию можно вставить в любой модуль. Вставив в глобальный модуль данную функцию можно вызывать везде, где Вам может понадобиться GUID.

 

4 Comments

  1. berezdetsky

    Оно и без ScriptControl работает:

    Процедура Сформировать()
    TypeLib = CreateObject(«Scriptlet.TypeLib»);
    CreateGUID = TypeLib.Guid;
    Message(CreateGUID);
    КонецПроцедуры
    Reply
  2. marsohod

    (0) Спасибо за наводку 🙂

    (1) У Вас короче 🙂 Но все равно придется от скобок { и } избавляться.

    Reply
  3. berezdetsky

    (2) Это зависит от назначения функции. К примеру, я получаю гуиды средствами класса GUID компоненты 1С++ (он работает быстрее, чем TypeLib). И там мне приходится отдельно добавлять эти самые скобки { и } для вставки значения в поле типа uniqueidentifier в MS SQL Server.

    Reply
  4. djolejek

    А зачем избавляться от скобок {} ?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *