Имя: Пароль:
1C
 
Вызвать функцию по имени из внешней обработки
0 Фигурнов
 
19.03.18
08:42
Как правильно реализовать вызов внешней экспортной функции по имени (ОФ)?

"Выполнить" не работает:


во=ВнешниеОбработки.Создать(ПутьИлиИмяФайлаОбработки);
Выполнить("сообщить(типзнч(во))"); //Даёт:Внешняя обработка объект: ПриНачалеРаботыСистемы


Выполнить("во+"+".а()"); //Даёт ошибку {(1,3)}: Неопознанный оператор
во<<?>>+.а()

1 Mankubus
 
19.03.18
08:45
Выполнить("во"+".а()");
2 Фигурнов
 
19.03.18
08:47
То есть можно описать в коде вызова во.а(),
но как сделать вызов, если мы заранее не знаем имя
функции "а()" и получаем её через параметр


Функция а(ПараметрыВызова) Экспорт
//Выполняем полезные действия

Возврат ПолученноеЗначение;
КонецФункции
3 Фигурнов
 
19.03.18
08:49
(1) в коде (0) опечатка, да
тем не менее бе неё
{(1)}: Метод объекта не обнаружен (а)
во.а()
4 Фигурнов
 
19.03.18
08:56
(1) Все верно, перезагрузить конфигуратор надо было
5 Lexey_
 
19.03.18
09:09
(2) "но как сделать вызов, если мы заранее не знаем имя
функции "а()""
заменить "а()" на параметр
6 Franchiser
 
гуру
19.03.18
09:29
Во.а() просто работает?
7 Фигурнов
 
19.03.18
10:01
(5) Как именно?
(6) Да. (0) в варианте (1) работает. Проблема была в том, что исправленный вариант внешней обработки не виделся клиентом 1с до перезапуска конфигуратора, что показалось странным.
8 Lexey_
 
19.03.18
10:02
(7) просто замени одно на другое
9 Фигурнов
 
19.03.18
10:09
(8) не ясно, что подразумевается под параметром, впрочем задача решена в (1), и, должно быть, красивей не выйдет
10 Lexey_
 
19.03.18
10:26
(9) " не ясно, что подразумевается под параметром", ну в (2) же что-то подразумевается: "если мы заранее не знаем имя
функции "а()" и получаем её через параметр"