Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

вопрос по оператору ВЫПОЛНИТЬ

вопрос по оператору ВЫПОЛНИТЬ
Я
   jurayed
 
07.08.18 - 14:48
Выполнить("БонусПоДоговору = " + ФормулаРасчета);
формулуРасчета заполняет пользователь типа:
Если ОбъемПродажПоМенеджеру > 10000000 Тогда
МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ;
Не проходит, пишет "Ожидается выражение" ...
Помогите решить .... пользователь заполняет формулу расчета бонусов, а как ее выполнить ???
 
 
   FIXXXL
 
1 - 07.08.18 - 14:50
ФормулаРасчета - текст?
   lucbak
 
2 - 07.08.18 - 14:50
(0) Покажи форму расчета ...
   jurayed
 
3 - 07.08.18 - 14:50
(1) да
   lucbak
 
4 - 07.08.18 - 14:51
Если ОбъемПродажПоМенеджеру > 10000000 Тогда
БонусПоДоговору = МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ;
   polosov
 
5 - 07.08.18 - 14:51
БонусПоДоговору = Если ОбъемПродажПоМенеджеру > 10000000 Тогда........


Ну ну.
   lucbak
 
6 - 07.08.18 - 14:51
т.е. переменная должна быть внутри модуля сразу
   lucbak
 
7 - 07.08.18 - 14:53
и будешь писАть просто
Выполнить(ФормулаРасчета);
   jurayed
 
8 - 07.08.18 - 14:54
(4) я пробовал так - все равно не проходит
   Михаил Козлов
 
9 - 07.08.18 - 14:54
(6) Либо через оператор ?()
   jurayed
 
10 - 07.08.18 - 14:55
есть где пример использования ВЫПОЛНИТЬ с ЕСЛИ ?
копался в интернете - не нашел
 
 Рекламное место пустует
   Михаил Козлов
 
11 - 07.08.18 - 14:55
(8) Переменная БонусПоДоговору не видна.
   jurayed
 
12 - 07.08.18 - 14:56
(9) вот это то идея - надо попробовать, но потом переучивать Менеджера переписывать формулу ... (((
   jurayed
 
13 - 07.08.18 - 14:57
(11) я объявил ее в начале процедуры !
Перем БонусПоДоговору;
ВСе равно не помогло
   lucbak
 
14 - 07.08.18 - 14:57
(8) (13) не помогло то, что? это работает 146%
   FIXXXL
 
15 - 07.08.18 - 14:59
(10) а ты напиши этот код (5) в модуле и посмотри как это отработает
   jurayed
 
16 - 07.08.18 - 15:00
(15) В коде отрабатывает - все ок
   FIXXXL
 
17 - 07.08.18 - 15:01
(16) скопируй сюда код, котрый 100% работет без Выполнить()
   lucbak
 
18 - 07.08.18 - 15:02
(17) Ты ведь не думаешь, что тебе сейчас скопируют

БонусПоДоговору = Если ОбъемПродажПоМенеджеру > 10000000 Тогда
МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ;

))))

тебе скопируют

Если ОбъемПродажПоМенеджеру > 10000000 Тогда
МаржаПоДоговору * 0,2 Иначе .... КонецЕслИ;
   jurayed
 
19 - 07.08.18 - 15:03
(17) Если МаржаПоДоговору  > 10000000 Тогда 
        БонусПоДоговору = МаржаПоДоговору / 2;
    ИначеЕсли МаржаПоДоговору  > 5000000 Тогда 
        БонусПоДоговору = МаржаПоДоговору; 
    КонецЕсли;
   jurayed
 
20 - 07.08.18 - 15:04
(17) Выполнить("Если МаржаПоДоговору  > 10000000 Тогда 
        БонусПоДоговору = МаржаПоДоговору / 2;
    ИначеЕсли МаржаПоДоговору  > 5000000 Тогда 
        БонусПоДоговору = МаржаПоДоговору; 
    КонецЕсли;)
дает ошибку
   lucbak
 
21 - 07.08.18 - 15:04
(19) А теперь посмотри (4) а потом сразу (7)
   jurayed
 
22 - 07.08.18 - 15:04
даже переменные объевил в процедуре
Перем БонусПоДоговору, МаржаЗаПериод, МаржаПоДоговору, ОбъемЗаПериод, ОбъемПоДоговору;
   lucbak
 
23 - 07.08.18 - 15:08
Покажи ошибку целиком
   Волшебник
 
24 - 07.08.18 - 15:09
вместо Выполнить надо Вычислить
   Волшебник
 
25 - 07.08.18 - 15:10
БонусПоДоговору = Вычислить(ФормулаРасчета);
   jurayed
 
26 - 07.08.18 - 15:11
(23) тупо через Shift+F9 пробую Выполнить("ЕСЛИ 1=1 Тогда БонусПоДоговору = 2; Иначе БонусПоДоговору = 3; КОНЕЦЕСЛИ;")    {(1,1)}: Ожидается выражение
   jurayed
 
27 - 07.08.18 - 15:13
(25) Вычислить("ЕСЛИ 1=1 Тогда 2; Иначе 3; КОНЕЦЕСЛИ;")    {(1)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
   lucbak
 
28 - 07.08.18 - 15:13
(26) убил...
   lucbak
 
29 - 07.08.18 - 15:14
(26) Как ты думаешь, что отладка тебе должна вернуть при выполнение кода по Shift+F9 ?
   jurayed
 
30 - 07.08.18 - 15:14
(28) может в этом и есть моя проблема, опиши ...
   Deon
 
31 - 07.08.18 - 15:14
(26) Ты же вычисляешь в (0) не это. Ты вычисляешь присвоение переменной. И пытаешься ей присвоить Если.

Тут уж замени Если на ?(,,), либо используй правильный оператор Вычислить()
   Волшебник
 
32 - 07.08.18 - 15:14
(26) слишком много точек с запятой
   lucbak
 
33 - 07.08.18 - 15:16
(30) просто сделай то, что я тебе сказал и запусти предприятие (а не в отладке смотри..."Выполнить" это не функция, что бы она тебе в отладке значение возвращала)
 
 
   Deon
 
34 - 07.08.18 - 15:18
(32) Нормально там всё с точками и с запятыми. Он в отладчике пытается выполнить код
   jurayed
 
35 - 07.08.18 - 15:20
Удалил объявление переменных, просто перед циклом БонусПоДоговору = 0 присвоил ... и вот заработал такой код:
Выполнить("Если МаржаПоДоговору  > 10000000 Тогда БонусПоДоговору = МаржаПоДоговору / 2; Иначе БонусПоДоговору = МаржаПоДоговору; КонецЕсли;");
   jurayed
 
36 - 07.08.18 - 15:21
Всем спасибо , придали уверенности в том, что это должно работать ...
   Deon
 
37 - 07.08.18 - 15:23
(36) Осталось сделать как в (25) и вообще счастье будет
   jurayed
 
38 - 07.08.18 - 15:26
(37) Так и сделал ... уже взлетело
   Eiffil123
 
39 - 07.08.18 - 15:53
Делай как в нормальных системах:

Результат = 0;
Выполнить(ФормулаРасчета);
БонусПоДоговору = Результат;

// А в формуле расчета пользователь должен присвоить нужное значение переменной результат
   polosov
 
40 - 07.08.18 - 20:18
(15) Написал. Синтаксическая ошибка.
Это юмор у тебя какой-то?


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