Имя: Пароль:
1C
1С v8
Присвоение значения свойству COM объекта по ссылке в функциональной форме
0 TormozIT
 
гуру
17.09.14
15:52
Как известно, интерпретатор 1С не поддерживает присвоение в виде А.АП(...) = 24. Поэтому я написал функцию, которая обходит это ограничение

Процедура УстановитьЗначениеПоФункциональнойСсылкеИис(Объект, Значение, ИмяФункции, ПараметрФункции) Экспорт
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
    Скрипт = "
        |Function SetFuncValue(Object, Parameter, Value)
        |Object." + ИмяФункции + "(Parameter) = Value
        |End Function
        |";
    СкриптМенеджер.Language = "vbscript";
    СкриптМенеджер.AddCode(Скрипт);
    СкриптМенеджер.Run("SetFuncValue", Объект, ПараметрФункции, Значение);
КонецПроцедуры

Но из-за использования COM класса MSScriptControl.ScriptControl ее нельзя использовать в 64-разрядном процессе, которым обычно является серверный контекст 1С. Чем можно заменить такую функцию на сервере?
1 H A D G E H O G s
 
17.09.14
16:01
(0)
"не поддерживает присвоение в виде А.АП(...) = 24."
Ниче не понял
2 TormozIT
 
гуру
17.09.14
16:08
(1) Интерпретатор vbscript поддерживает в левой части присвоения указания свойства, которому присваиваем значение, в функциональной форме. Например
МойОбъект.Свойство("Версия") = "3.4"
3 TormozIT
 
гуру
17.09.14
16:31
Вариант с оберткой в виде COM+ приложения не подходит, т.к. требуется полная автоматика.
4 TormozIT
 
гуру
17.09.14
17:41
Поясняю, что само присвоение такое нужно при работе с COM объектами. Например в семействе COMAdmin.COMAdminCatalog широко используется безальтернативный метод Value
F.Value("Key") = MyKey;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн