Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Имя функции в строку и обратно

Имя функции в строку и обратно
Я
   Масянька
 
26.06.19 - 17:01
День добрый!
Есть задумка...
Процедура, в которой вызывается другая процедура-функция.
Вариант - ту фигню, что вызывается передать в качестве параметра?
На пальцах:

Процедура Сделать(СделатьФигню)
  ...
  Ответ = СделатьФигню(...);
КонецПроцедуры
.......
Функция СделатьФигню()
....
КонецФункции

Спсаибо.
 
 
   МихаилМ
 
1 - 26.06.19 - 17:04
Выполнить (Execute)
Синтаксис:
Выполнить(<Строка>)

Параметры:
<Строка>
Строка, содержащая текст исполняемого кода.

Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.

Примечание:
В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение.

В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS
   novichok79
 
2 - 26.06.19 - 17:06
внезапно.
выполнить() или вычислить().
если сделатьфигню() вызывать из сделатьфигню(), то мне кажется стек вызовов 1С переполнится, о чем сообщит платформа.
   PiotrLoginov
 
3 - 26.06.19 - 17:08
(0) давно уже в БСП есть что-то вроде "ВыполнитьМетодКакойтоТам"
   Масянька
 
4 - 26.06.19 - 17:08
(1) (2) Да, нет же...
Из одной процедуры вызываются разные функции, которые передаются, как параметр...
   dka80
 
5 - 26.06.19 - 17:12
Выполнить("Ответ="+СделатьФигню+"()");
   Garykom
 
6 - 26.06.19 - 17:14
(4) Строкой передавай имя функции блин.
   Вафель
 
7 - 26.06.19 - 17:17
но зачем это?
   Mikeware
 
8 - 26.06.19 - 17:19
Масянька чего-то начиталась..
   novichok79
 
9 - 26.06.19 - 17:19
(7) у себя в нетленке я загружаю эксель-файлы, есть некий справочник с кодом на 1С для преобразования значения в колонках. для исполнения кода используется "выполнить".
   novichok79
 
10 - 26.06.19 - 17:19
(9) это как вариант использования.
 
 Рекламное место пустует
   novichok79
 
11 - 26.06.19 - 17:19
в формулах видов расчета в ЗУП кажется тоже было подобное.
   Sserj
 
12 - 26.06.19 - 17:20
(7) Как зачем, это же паттерн Шаблонный метод, кто-то пришел из "сурьезных языков" :)
   Mikeware
 
13 - 26.06.19 - 17:20
(7) как зачем? СделатьФигню®!
   dka80
 
14 - 26.06.19 - 17:20
(7) например, у меня была форма с кучей страниц и одной кнопкой "Выполнить". В зависимости от имени текущей открытой страницы программно вызывалась соответствующая процедура и не нужно было делать на каждой странице кнопку "Выполнить".
   Mikeware
 
15 - 26.06.19 - 17:21
(12) неееее... сурьезных языков у Масяньки в анамнезе не числится...
   dka80
 
16 - 26.06.19 - 17:21
+14 причем имя процедуры определялось автоматически по имени открытой страницы.
   Вафель
 
17 - 26.06.19 - 17:21
(9) типо КД2 ?
   Mikeware
 
18 - 26.06.19 - 17:23
(14) почему б не ?
проц Выполнить()
Если ОткрытаяСтраница="бла" тогда
 ДелаемКу();
иначеесли ОткрытаяСтраница="бла-бла" тогда
 ДелаемКу(2);
иначе
ДелаемКю();
...

?
   Масянька
 
19 - 26.06.19 - 17:24
Выполнить не работает, поскольку не видит потом переменную, которую присваивает в выполнить.
   novichok79
 
20 - 26.06.19 - 17:24
(17) да, есть справочник с туевой хучей колонок + характеристики, пользакам предоставляют большие объемы данных в xls, и надо это все загрузить в 1С более-менее универсально.
   Масянька
 
21 - 26.06.19 - 17:25
(18) Ну, да... В серьезном языке - одна строчка, а в эске куча условий...
Но, главное, ляпнуть. И ляпнуть - уверенно.
   Mikeware
 
22 - 26.06.19 - 17:25
кстати, а вот "обратно" - это уже интересно.
Это типа приходит куда-то структура, а там поля с именами функций, которые эту структуру выродили, обработали....
   dka80
 
23 - 26.06.19 - 17:28
(18) нет. все проще
ИмяТД = Сред(Элементы.Страницы.ТекущаяСтраница.Имя, 9);
Выполнить("ЗагрузитьДанныеНаСервере" + ИмяТД);
   Mikeware
 
24 - 26.06.19 - 17:28
(21) каждому овощу - свой фрукт.
Я могу там где надо применять кучу условий, а там, где надо - применять вызов через вычислить.
зы. я еще твой Объект Периодический не забыл...
   novichok79
 
25 - 26.06.19 - 17:31
(21) в эксе тоже есть "выполнить()"
   Asmody
 
26 - 26.06.19 - 17:31
(0) Написать в 1С, чтобы реализовали в языке функции первого класса
   Масянька
 
27 - 26.06.19 - 17:32
(24) И?
Там, вообще-то, был реквизит. Но для тебя - одно и тоже.
   novichok79
 
28 - 26.06.19 - 17:32
(19) я делал вот так
Результат = Неопределено
выполнить("Результат = 4;");

Сообщить(Результат) дает 4.
   Mikeware
 
29 - 26.06.19 - 17:32
(23) такое надо только либо при автогенерации страниц (когда ты не знаешь, сколько и каких страниц будет сделано), либо при некоей же автоматической генерации процедур.
это плохо с той точки зрения, что нет статического контроля - т.е. ты можешь попытаться вызвать несуществующую функцию.
в остальных случаях сокращение кода в ущерб надежности и читаемости - не есть хорошо...
   Масянька
 
30 - 26.06.19 - 17:32
(26) :(
   hhhh
 
31 - 26.06.19 - 17:32
(19) видит она эту переменную
   Mikeware
 
32 - 26.06.19 - 17:33
(27) и? неужели ты за прошедшее время не научилась отличать массив от функции?
   Масянька
 
33 - 26.06.19 - 17:33
(31) У меня пишет: переменная не определена.
 
 
   Масянька
 
34 - 26.06.19 - 17:33
(32) Не засоряй ветку бессмысленными сообщениями.
   hhhh
 
35 - 26.06.19 - 17:34
(33) так ты определи ее перед выполнить.
   Mikeware
 
36 - 26.06.19 - 17:34
(34) так бы и писала - "не научилась и не буду"
   Asmody
 
37 - 26.06.19 - 17:38
Можно делать как "a la java": делать обработки, как бы "реализующие определенный интерфейс" с одним методом, например, "Запустить" (ибо ВЫполнить уже занято), и передавать в нужную функцию экземпляр обработки.
   Масянька
 
38 - 26.06.19 - 17:39
(35) Спасибо большое!
   Mikeware
 
39 - 26.06.19 - 17:39
(37) а почему бы и нет?
   Масянька
 
40 - 26.06.19 - 17:39
Остальным (кроме, не будем показывать пальцем) тоже спасибо.
   Масянька
 
41 - 26.06.19 - 17:40
(37) Мечтать не вредно. Ешьте, что дают. :(
   Mikeware
 
42 - 26.06.19 - 17:41
(41) мы даже из того, что дают, умеем приготовить...
   Asmody
 
43 - 26.06.19 - 17:41
(39) Ну так всякие ВПФ и др извращения в типовых так и работают
   Mikeware
 
44 - 26.06.19 - 17:56
(43) прочитал "БПФ". задумался... :-)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует