Версия для печати темы (https://pro1c.org.ua/index.php?s=f02827eab723fb01bf97dd4305b6cd71&showtopic=56885)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Остальные конфигурации 1С 8 _ Помогите пожалуйста написать формулу цены в 1с 8.3!

Автор: Штас 06.02.20, 16:39

помогите написать формулу наценки товара от его цены, конфигурация Элементарная торговля, в 7ке вроде было так ?([ЦенаПоступления]>=100 и [ЦенаПоступления]=200 и [ЦенаПоступления]=300 и [ЦенаПоступления]<400,[ЦенаПоступления]*1.3,
[ЦенаПоступления]*1.2)))
так я понял что так было, синтаксиса не знаю ни того ни этого.
в 8.3 пробую пробую, читал смотрел ничего не понял и не нашел!
заранее спасибо!

Автор: Vofka 06.02.20, 17:18

Штас, было бы не плохо указать конфигурацию.

Автор: fly 06.02.20, 18:26

Vofka @ Сегодня, 17:18 * ,
По ходу эта
Конфигурация "Элементарная торговля"

https://pro1c.org.ua/redirect.php?https://sites.google.com/site/elementarytrade/

Автор: Штас 07.02.20, 8:08

Добрый день! да это Элементарная торговля

Автор: volodya1122 07.02.20, 10:02

Штас @ Вчера, 16:39 * ,

Кто написал вам эту формулу? В ней наценка 30% никогда небудет. Там в условии написано что цена поступления одновременно должна быть и 200 и 300. А этио никак невозможно.
Переведу Вам эту формулу на человеческий язык. Если Цена поступления будет от 100 до 400 и кроме того одновременно еще она будет и 200 и 300 то наценка 30%, иначе наценка 20%. У вас в любом случае по этой формуле всегда будет наценка 20%

Автор: Штас 07.02.20, 12:48

добрый день, кто писал не знаю, просто нашел в инете такой пример, в конфигурации Элементарная торговля совсем другой синтаксис написания формул она не то что не так считает она просто дает ошибку

Автор: Штас 07.02.20, 15:51

нашел рабочую формулу
?(Цена <10 ,
?((Цена*1.4 / 1) = Цел(Цена*1.4 / 1), Цена*1.4, 1 * (Цел(Цена*1.4 / 1) + 1)),
?(Цена <50 ,
?((Цена*1.4 / 5) = Цел(Цена*1.4 / 5), Цена*1.4, 5 * (Цел(Цена*1.4 / 5) + 1)),
?( Цена <140 ,
?((Цена*1.4 / 10) = Цел(Цена*1.4 / 10), Цена*1.4, 10 * (Цел(Цена*1.4 / 10) + 1)),
?((Цена *1.4/ 50) = Цел(Цена*1.4 / 50), Цена*1.4, 50 * (Цел(Цена*1.4 / 50) + 1))
)))
возникли новые вопросы!!!
как она работает не могу понять
можно ли написать её более просто
подскажите пожалуйста

Автор: fly 07.02.20, 16:11

Штас @ Сегодня, 15:51 * ,

Работает примерно так:
если Цена <10 тогда
если (Цена*1.4 / 1) = Целое число от (Цена*1.4 / 1) тогда Цена*1.4 иначе 1 * (Целое число от (Цена*1.4 / 1) + 1)
если цена Цена <50 и т.д.

какая именно вам нужна формула, она так и не написана вами - вашими словами.

Автор: Штас 07.02.20, 16:22

простите
вот
от 1-5 200%
от 5-10 150%
от 10-50 100%
от 50-100 70%
от 100-300 50%
от 300-600 40%
от 600-2000 30%
от 2000- 20000 25%


можете мне помочь такое написать?


от 1-5 200%
от 6-10 150%
от 11-50 100%
от 51-100 70%
от 101-300 50%
от 301-600 40%
от 601-2000 30%
от 2001- 20000 25%
так наверное правильнее написать

Автор: volodya1122 07.02.20, 17:25

Цитата(Штас @ 07.02.20, 16:22) *
от 1-5 200%
от 6-10 150%
от 11-50 100%
от 51-100 70%
от 101-300 50%
от 301-600 40%
от 601-2000 30%
от 2001- 20000 25%

Если  ЦенаПоступления <= 5 Тогда
ЦенаПродаж=ЦенаПоступления*2;
ИначеЕсли  ЦенаПоступления <= 10 Тогда
ЦенаПродаж=ЦенаПоступления*1.5;
ИначеЕсли  ЦенаПоступления <= 50 Тогда
ЦенаПродаж=ЦенаПоступления*1;
ИначеЕсли  ЦенаПоступления <= 100 Тогда
ЦенаПродаж=ЦенаПоступления*0.7;
ИначеЕсли  ЦенаПоступления <= 300 Тогда
ЦенаПродаж=ЦенаПоступления*0.5;
.....................
Иначе  // для очень больших цен
ЦенаПродаж= ЦенаПоступления;
КонецЕсли;

Автор: fly 07.02.20, 18:18

volodya1122 @ Сегодня, 17:25 * ,

речь шла о наценке

Цитата(volodya1122 @ 07.02.20, 17:25) *
от 1-5 200%
от 6-10 150%
от 11-50 100%
от 51-100 70%
от 101-300 50%
от 301-600 40%
от 601-2000 30%
от 2001- 20000 25%


получается что примерно так:
Если  ЦенаПоступления <= 5 Тогда
ЦенаПродаж=ЦенаПоступления+ЦенаПоступления*2;
ИначеЕсли  ЦенаПоступления <= 10 Тогда
ЦенаПродаж=ЦенаПоступления+ЦенаПоступления*1.5;
ИначеЕсли  ЦенаПоступления <= 50 Тогда
ЦенаПродаж=ЦенаПоступления+ЦенаПоступления*1;
ИначеЕсли  ЦенаПоступления <= 100 Тогда
ЦенаПродаж=ЦенаПоступления+ЦенаПоступления*0.7;
ИначеЕсли  ЦенаПоступления <= 300 Тогда
ЦенаПродаж=ЦенаПоступления+ЦенаПоступления*0.5;
.....................
Иначе  // для очень больших цен
ЦенаПродаж= ЦенаПоступления+ЦенаПоступления*0.25;
КонецЕсли;



ну или все оборачивать в
?(Цена<=5, Цена+Цена*2, ?(Цена<=10, Цена+Цена*1,5, ?(Цена<=50, Цена+Цена*1, .......)))


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

Автор: Штас 08.02.20, 9:44

добрый день
благодарю Вас за ответ и помощь!!
смысл и синтаксис понял, работает только 2й вариант через ? через если не работает, буду побывать теперь сам!


?(Цена<=5, Цена+Цена*2, ?(Цена<=10, Цена+Цена*1,5)) работает
?(Цена<=5, Цена+Цена*2, ?(Цена<=10, Цена+Цена*1,5, ?(Цена<=50, Цена+Цена*1))) пишу так не работает, что не так то?

Ошибка в формуле: {ОбщийМодуль.ОбщееНаСервере.Модуль(5784)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,58)}: Ожидается символ ')'

вообще ничего не получается((((((!!

Автор: Штас 08.02.20, 12:15

получилось, понял! Спасибо Вам!
можете ещё подсказать а как в формуле указать диапазон, например ?(Цена от 1 до 10, Цена....
как такое написать языком таким?

Автор: sava1 08.02.20, 13:28

?(Цена<=5 И Цена>25 , 10, 12)

Автор: Штас 10.02.20, 9:06

Добрый день!
спасибо за ответ!!
подскажите если знаете, а можно как то просто округлять цену после расчетов наценки например 143 округлить до 145 а 148 до 150, то есть в большую сторону и в пределах 5грн., чтоб цены были 10, 15, 55, 60. как это можно реализовать и желательно не сильно сложно, боюсь сложно могу не понять) СПАСИБО БОЛЬШОЕ ЗАРАНЕЕ!

Автор: volodya1122 10.02.20, 10:17

Штас @ Сегодня, 9:06 * ,

ОкругленнаяЦена=5*Окр((Цена+2.49)/5,0,РежимОкругления.Окр15как20)

Вам нужно округлить до чисел кратным 5. Поэтому делим число на 5, Округляем до нулевого разряда и округленное умножаем на 5.

Исправил, так как нужно в любом случае округлять вверх то добавляем до цены 2,49

Автор: Штас 10.02.20, 13:25

да уж, почти понял но в таком формате в конфигурации Элементарная торговля не работает , думаю что нужно писать как писали ?цена .... или что то я опять не првильно пишу
вот ошибка
Ошибка в формуле: {ОбщийМодуль.ОбщееНаСервере.Модуль(5784)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,9)}: Переменная не определена (ОкругленнаяЦена)

я изучаю 1с всего несколько месяце, извините, но я поэтому могу что то говорить, формулировать или спрашивать не совсем правильно или даже глупо.

Автор: volodya1122 11.02.20, 9:45

Откройте личные сообщения (вверху страницы)

Автор: fly 11.02.20, 10:13

Цитата(Штас @ 10.02.20, 13:25) *
Переменная не определена (ОкругленнаяЦена)


в данном случае в коде ссылается на ОкругленнаяЦена, а она нигде до этого не определена/не объявлена (или определена, только если выполнены условия, а условия не выполнились).

по факту надо смотреть код программы, чтоб сказать однозначно.

Автор: Штас 12.02.20, 15:15

спасибо Вам за ответы, написал сам и даже работает, скорее всего не очень красиво и правильно но:

?(Цена<=15, (окр(((((цена+цена/100*150))+2.49)/5))*5), (?(Ц

Автор: fly 12.02.20, 16:12

работает - это хорошо! smile.gif
со скобками точно не поленились и постарались от души smile.gif

Цитата(fly @ 11.02.20, 10:13) *
окр(((((цена+цена/100*150))+2.49)/5))*5


окр(((цена+цена/100*150)+2.49)/5)*5

Автор: volodya1122 13.02.20, 9:15


Цитата(Штас @ 12.02.20, 15:15) *
спасибо Вам за ответы, написал сам и даже работает, скорее всего не очень красиво и правильно но:

?(Цена<=15, (окр(((((цена+цена/100*150))+2.49)/5))*5), (?(Ц

Скопируйте сюда полностью эту Функцию и или Процедуру где делали свои правки (От слов Функция до КонецФункции, (Или КонецПроцедуры))

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua