Поэтому предлагаю в таких случаях использовать альтернативу в виде функции:
Функция Создать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.
Оно и без ScriptControl работает:
(0) Спасибо за наводку 🙂
(1) У Вас короче 🙂 Но все равно придется от скобок { и } избавляться.
(2) Это зависит от назначения функции. К примеру, я получаю гуиды средствами класса GUID компоненты 1С++ (он работает быстрее, чем TypeLib). И там мне приходится отдельно добавлять эти самые скобки { и } для вставки значения в поле типа uniqueidentifier в MS SQL Server.
А зачем избавляться от скобок {} ?