|
Имя функции в строку и обратно | ☑ | ||
---|---|---|---|---|
0
Масянька
26.06.19
✎
17:01
|
День добрый!
Есть задумка... Процедура, в которой вызывается другая процедура-функция. Вариант - ту фигню, что вызывается передать в качестве параметра? На пальцах: Процедура Сделать(СделатьФигню) ... Ответ = СделатьФигню(...); КонецПроцедуры ....... Функция СделатьФигню() .... КонецФункции Спсаибо. |
|||
1
МихаилМ
26.06.19
✎
17:04
|
Выполнить (Execute)
Синтаксис: Выполнить(<Строка>) Параметры: <Строка> Строка, содержащая текст исполняемого кода. Описание: Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения. Примечание: В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение. В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS |
|||
2
novichok79
26.06.19
✎
17:06
|
внезапно.
выполнить() или вычислить(). если сделатьфигню() вызывать из сделатьфигню(), то мне кажется стек вызовов 1С переполнится, о чем сообщит платформа. |
|||
3
PiotrLoginov
26.06.19
✎
17:08
|
(0) давно уже в БСП есть что-то вроде "ВыполнитьМетодКакойтоТам"
|
|||
4
Масянька
26.06.19
✎
17:08
|
(1) (2) Да, нет же...
Из одной процедуры вызываются разные функции, которые передаются, как параметр... |
|||
5
dka80
26.06.19
✎
17:12
|
Выполнить("Ответ="+СделатьФигню+"()");
|
|||
6
Garykom
гуру
26.06.19
✎
17:14
|
(4) Строкой передавай имя функции блин.
|
|||
7
Вафель
26.06.19
✎
17:17
|
но зачем это?
|
|||
8
Mikeware
26.06.19
✎
17:19
|
Масянька чего-то начиталась..
|
|||
9
novichok79
26.06.19
✎
17:19
|
(7) у себя в нетленке я загружаю эксель-файлы, есть некий справочник с кодом на 1С для преобразования значения в колонках. для исполнения кода используется "выполнить".
|
|||
10
novichok79
26.06.19
✎
17:19
|
(9) это как вариант использования.
|
|||
11
novichok79
26.06.19
✎
17:19
|
в формулах видов расчета в ЗУП кажется тоже было подобное.
|
|||
12
Sserj
26.06.19
✎
17:20
|
(7) Как зачем, это же паттерн Шаблонный метод, кто-то пришел из "сурьезных языков" :)
|
|||
13
Mikeware
26.06.19
✎
17:20
|
(7) как зачем? СделатьФигню®!
|
|||
14
dka80
26.06.19
✎
17:20
|
(7) например, у меня была форма с кучей страниц и одной кнопкой "Выполнить". В зависимости от имени текущей открытой страницы программно вызывалась соответствующая процедура и не нужно было делать на каждой странице кнопку "Выполнить".
|
|||
15
Mikeware
26.06.19
✎
17:21
|
(12) неееее... сурьезных языков у Масяньки в анамнезе не числится...
|
|||
16
dka80
26.06.19
✎
17:21
|
+14 причем имя процедуры определялось автоматически по имени открытой страницы.
|
|||
17
Вафель
26.06.19
✎
17:21
|
(9) типо КД2 ?
|
|||
18
Mikeware
26.06.19
✎
17:23
|
(14) почему б не ?
проц Выполнить() Если ОткрытаяСтраница="бла" тогда ДелаемКу(); иначеесли ОткрытаяСтраница="бла-бла" тогда ДелаемКу(2); иначе ДелаемКю(); ... ? |
|||
19
Масянька
26.06.19
✎
17:24
|
Выполнить не работает, поскольку не видит потом переменную, которую присваивает в выполнить.
|
|||
20
novichok79
26.06.19
✎
17:24
|
(17) да, есть справочник с туевой хучей колонок + характеристики, пользакам предоставляют большие объемы данных в xls, и надо это все загрузить в 1С более-менее универсально.
|
|||
21
Масянька
26.06.19
✎
17:25
|
(18) Ну, да... В серьезном языке - одна строчка, а в эске куча условий...
Но, главное, ляпнуть. И ляпнуть - уверенно. |
|||
22
Mikeware
26.06.19
✎
17:25
|
кстати, а вот "обратно" - это уже интересно.
Это типа приходит куда-то структура, а там поля с именами функций, которые эту структуру выродили, обработали.... |
|||
23
dka80
26.06.19
✎
17:28
|
(18) нет. все проще
ИмяТД = Сред(Элементы.Страницы.ТекущаяСтраница.Имя, 9); Выполнить("ЗагрузитьДанныеНаСервере" + ИмяТД); |
|||
24
Mikeware
26.06.19
✎
17:28
|
(21) каждому овощу - свой фрукт.
Я могу там где надо применять кучу условий, а там, где надо - применять вызов через вычислить. зы. я еще твой Объект Периодический не забыл... |
|||
25
novichok79
26.06.19
✎
17:31
|
(21) в эксе тоже есть "выполнить()"
|
|||
26
Asmody
26.06.19
✎
17:31
|
(0) Написать в 1С, чтобы реализовали в языке функции первого класса
|
|||
27
Масянька
26.06.19
✎
17:32
|
(24) И?
Там, вообще-то, был реквизит. Но для тебя - одно и тоже. |
|||
28
novichok79
26.06.19
✎
17:32
|
(19) я делал вот так
Результат = Неопределено выполнить("Результат = 4;"); Сообщить(Результат) дает 4. |
|||
29
Mikeware
26.06.19
✎
17:32
|
(23) такое надо только либо при автогенерации страниц (когда ты не знаешь, сколько и каких страниц будет сделано), либо при некоей же автоматической генерации процедур.
это плохо с той точки зрения, что нет статического контроля - т.е. ты можешь попытаться вызвать несуществующую функцию. в остальных случаях сокращение кода в ущерб надежности и читаемости - не есть хорошо... |
|||
30
Масянька
26.06.19
✎
17:32
|
(26) :(
|
|||
31
hhhh
26.06.19
✎
17:32
|
(19) видит она эту переменную
|
|||
32
Mikeware
26.06.19
✎
17:33
|
(27) и? неужели ты за прошедшее время не научилась отличать массив от функции?
|
|||
33
Масянька
26.06.19
✎
17:33
|
(31) У меня пишет: переменная не определена.
|
|||
34
Масянька
26.06.19
✎
17:33
|
(32) Не засоряй ветку бессмысленными сообщениями.
|
|||
35
hhhh
26.06.19
✎
17:34
|
(33) так ты определи ее перед выполнить.
|
|||
36
Mikeware
26.06.19
✎
17:34
|
(34) так бы и писала - "не научилась и не буду"
|
|||
37
Asmody
26.06.19
✎
17:38
|
Можно делать как "a la java": делать обработки, как бы "реализующие определенный интерфейс" с одним методом, например, "Запустить" (ибо ВЫполнить уже занято), и передавать в нужную функцию экземпляр обработки.
|
|||
38
Масянька
26.06.19
✎
17:39
|
(35) Спасибо большое!
|
|||
39
Mikeware
26.06.19
✎
17:39
|
(37) а почему бы и нет?
|
|||
40
Масянька
26.06.19
✎
17:39
|
Остальным (кроме, не будем показывать пальцем) тоже спасибо.
|
|||
41
Масянька
26.06.19
✎
17:40
|
(37) Мечтать не вредно. Ешьте, что дают. :(
|
|||
42
Mikeware
26.06.19
✎
17:41
|
(41) мы даже из того, что дают, умеем приготовить...
|
|||
43
Asmody
26.06.19
✎
17:41
|
(39) Ну так всякие ВПФ и др извращения в типовых так и работают
|
|||
44
Mikeware
26.06.19
✎
17:56
|
(43) прочитал "БПФ". задумался... :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |