Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 14:35

Создание вида цен, ошибка при вводе формулы расчета

Автор vinera, 09 авг 2014, 19:29

0 Пользователей и 1 гость просматривают эту тему.

vinera

Добрый день! При вводе формулы типа
?([Цена поступления]<=100, [Цена поступления]*(1+200/100),
?([Цена поступления]<=500, [Цена поступления]*(1+100/100),
?([Цена поступления]<=1000, [Цена поступления]*(1+50/100, [Цена поступления]*(1+10/100)))) 
программа пишет: в формуле  обнаружены ошибки
Подскажите, в каком месте ошибка?

Codokopatel

Добрый вечер!

Честно говоря я не очень силен в таких заковыристых формулах -я бы написал код проще и нагляднее:

РасчитаннаяЦена = 0;
Если (ЦенаПоступления <=100) тогда
РасчитаннаяЦена = ЦенаПоступления * (1+200/100);
ИначеЕсли (ЦенаПоступления > 100) И (ЦенаПоступления <=500) тогда
РасчитаннаяЦена = ЦенаПоступления * (1+100/100);
ИначеЕсли (ЦенаПоступления > 500) И (ЦенаПоступления <=1000) тогда
РасчитаннаяЦена = ЦенаПоступления * (1+50/100);
Иначе
РасчитаннаяЦена = ЦенаПоступления * (1+10/100);
КонецЕсли;

Я специально создал переменную РасчитаннаяЦена, чтобы не путаться в переменных. После выполнения вышеприведенной операции, значение из данной переменной можно использовать по вашему усмотрению.

Используйте условную конструкцию ?(<Логическое выражение>, <Выражение 1>, <Выражение 2>) только в простых случаях.

Потом, я не понимаю, что у вас в прямоугольных скобках. Если это переменная, то она пишется слитно (как в моем коде). Если так называется поле в форме, то в конфигураторе оно все равно будет писаться одним словом.

К тому же, мне не понятны ваши коэффициенты:
Ведь 200/100 = 2 и тогда (1+200/100) = 3.
Соответственно:
(1+100/100) = 2
(1+50/100) = 1,5
(1+10/100) = 1,1
то есть к чему эти выражения?
Добавлено: 09 авг 2014, 22:51


Если же вам очень хочется использовать оператор ?, то тогда формула будет иметь следующий вид:

РасчитаннаяЦена = ?((ЦенаПоступления <=100), (ЦенаПоступления * (1+200/100)),
(?(((ЦенаПоступления > 100) И (ЦенаПоступления <=500)), (ЦенаПоступления * (1+100/100)),
(?(((ЦенаПоступления > 500) И (ЦенаПоступления <=1000)), (ЦенаПоступления * (1+50/100)),
(ЦенаПоступления * (1+10/100)))))));

Предупреждение(РасчитаннаяЦена);


Я так и не понял - почему у вас используются квадратные скобки и почему выражение в квадратных скобках из двух слов.
Во всяком случае, вышеприведенный код во внешней обработке работает.

vinera

Спасибо за ответ, но проблема была элементарная - пропущена одна скобка. Формула эта была выложена на каком-то сайте, всё прекрасно работает.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск