![]() |
|
вопрос по оператору ВЫПОЛНИТЬ | ☑ | ||
---|---|---|---|---|
0
jurayed
07.08.18
✎
14:48
|
Выполнить("БонусПоДоговору = " + ФормулаРасчета);
формулуРасчета заполняет пользователь типа: Если ОбъемПродажПоМенеджеру > 10000000 Тогда МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ; Не проходит, пишет "Ожидается выражение" ... Помогите решить .... пользователь заполняет формулу расчета бонусов, а как ее выполнить ??? |
|||
1
FIXXXL
07.08.18
✎
14:50
|
ФормулаРасчета - текст?
|
|||
2
lucbak
07.08.18
✎
14:50
|
(0) Покажи форму расчета ...
|
|||
3
jurayed
07.08.18
✎
14:50
|
(1) да
|
|||
4
lucbak
07.08.18
✎
14:51
|
Если ОбъемПродажПоМенеджеру > 10000000 Тогда
БонусПоДоговору = МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ; |
|||
5
polosov
07.08.18
✎
14:51
|
БонусПоДоговору = Если ОбъемПродажПоМенеджеру > 10000000 Тогда........
Ну ну. |
|||
6
lucbak
07.08.18
✎
14:51
|
т.е. переменная должна быть внутри модуля сразу
|
|||
7
lucbak
07.08.18
✎
14:53
|
и будешь писАть просто
Выполнить(ФормулаРасчета); |
|||
8
jurayed
07.08.18
✎
14:54
|
(4) я пробовал так - все равно не проходит
|
|||
9
Михаил Козлов
07.08.18
✎
14:54
|
(6) Либо через оператор ?()
|
|||
10
jurayed
07.08.18
✎
14:55
|
есть где пример использования ВЫПОЛНИТЬ с ЕСЛИ ?
копался в интернете - не нашел |
|||
11
Михаил Козлов
07.08.18
✎
14:55
|
(8) Переменная БонусПоДоговору не видна.
|
|||
12
jurayed
07.08.18
✎
14:56
|
(9) вот это то идея - надо попробовать, но потом переучивать Менеджера переписывать формулу ... (((
|
|||
13
jurayed
07.08.18
✎
14:57
|
(11) я объявил ее в начале процедуры !
Перем БонусПоДоговору; ВСе равно не помогло |
|||
14
lucbak
07.08.18
✎
14:57
|
(8) (13) не помогло то, что? это работает 146%
|
|||
15
FIXXXL
07.08.18
✎
14:59
|
(10) а ты напиши этот код (5) в модуле и посмотри как это отработает
|
|||
16
jurayed
07.08.18
✎
15:00
|
(15) В коде отрабатывает - все ок
|
|||
17
FIXXXL
07.08.18
✎
15:01
|
(16) скопируй сюда код, котрый 100% работет без Выполнить()
|
|||
18
lucbak
07.08.18
✎
15:02
|
(17) Ты ведь не думаешь, что тебе сейчас скопируют
БонусПоДоговору = Если ОбъемПродажПоМенеджеру > 10000000 Тогда МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ; )))) тебе скопируют Если ОбъемПродажПоМенеджеру > 10000000 Тогда МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ; |
|||
19
jurayed
07.08.18
✎
15:03
|
(17) Если МаржаПоДоговору > 10000000 Тогда
БонусПоДоговору = МаржаПоДоговору / 2; ИначеЕсли МаржаПоДоговору > 5000000 Тогда БонусПоДоговору = МаржаПоДоговору; КонецЕсли; |
|||
20
jurayed
07.08.18
✎
15:04
|
(17) Выполнить("Если МаржаПоДоговору > 10000000 Тогда
БонусПоДоговору = МаржаПоДоговору / 2; ИначеЕсли МаржаПоДоговору > 5000000 Тогда БонусПоДоговору = МаржаПоДоговору; КонецЕсли;) дает ошибку |
|||
21
lucbak
07.08.18
✎
15:04
|
(19) А теперь посмотри (4) а потом сразу (7)
|
|||
22
jurayed
07.08.18
✎
15:04
|
даже переменные объевил в процедуре
Перем БонусПоДоговору, МаржаЗаПериод, МаржаПоДоговору, ОбъемЗаПериод, ОбъемПоДоговору; |
|||
23
lucbak
07.08.18
✎
15:08
|
Покажи ошибку целиком
|
|||
24
Волшебник
07.08.18
✎
15:09
|
вместо Выполнить надо Вычислить
|
|||
25
Волшебник
07.08.18
✎
15:10
|
БонусПоДоговору = Вычислить(ФормулаРасчета);
|
|||
26
jurayed
07.08.18
✎
15:11
|
(23) тупо через Shift+F9 пробую Выполнить("ЕСЛИ 1=1 Тогда БонусПоДоговору = 2; Иначе БонусПоДоговору = 3; КОНЕЦЕСЛИ;") {(1,1)}: Ожидается выражение
|
|||
27
jurayed
07.08.18
✎
15:13
|
(25) Вычислить("ЕСЛИ 1=1 Тогда 2; Иначе 3; КОНЕЦЕСЛИ;") {(1)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
|
|||
28
lucbak
07.08.18
✎
15:13
|
(26) убил...
|
|||
29
lucbak
07.08.18
✎
15:14
|
(26) Как ты думаешь, что отладка тебе должна вернуть при выполнение кода по Shift+F9 ?
|
|||
30
jurayed
07.08.18
✎
15:14
|
(28) может в этом и есть моя проблема, опиши ...
|
|||
31
Deon
07.08.18
✎
15:14
|
(26) Ты же вычисляешь в (0) не это. Ты вычисляешь присвоение переменной. И пытаешься ей присвоить Если.
Тут уж замени Если на ?(,,), либо используй правильный оператор Вычислить() |
|||
32
Волшебник
07.08.18
✎
15:14
|
(26) слишком много точек с запятой
|
|||
33
lucbak
07.08.18
✎
15:16
|
(30) просто сделай то, что я тебе сказал и запусти предприятие (а не в отладке смотри..."Выполнить" это не функция, что бы она тебе в отладке значение возвращала)
|
|||
34
Deon
07.08.18
✎
15:18
|
(32) Нормально там всё с точками и с запятыми. Он в отладчике пытается выполнить код
|
|||
35
jurayed
07.08.18
✎
15:20
|
Удалил объявление переменных, просто перед циклом БонусПоДоговору = 0 присвоил ... и вот заработал такой код:
Выполнить("Если МаржаПоДоговору > 10000000 Тогда БонусПоДоговору = МаржаПоДоговору / 2; Иначе БонусПоДоговору = МаржаПоДоговору; КонецЕсли;"); |
|||
36
jurayed
07.08.18
✎
15:21
|
Всем спасибо , придали уверенности в том, что это должно работать ...
|
|||
37
Deon
07.08.18
✎
15:23
|
(36) Осталось сделать как в (25) и вообще счастье будет
|
|||
38
jurayed
07.08.18
✎
15:26
|
(37) Так и сделал ... уже взлетело
|
|||
39
Eiffil123
07.08.18
✎
15:53
|
Делай как в нормальных системах:
Результат = 0; Выполнить(ФормулаРасчета); БонусПоДоговору = Результат; // А в формуле расчета пользователь должен присвоить нужное значение переменной результат |
|||
40
polosov
07.08.18
✎
20:18
|
(15) Написал. Синтаксическая ошибка.
Это юмор у тебя какой-то? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |