Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите пожалуйста написать формулу цены в 1с 8.3!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Пользователю 1С 8.3, 8.2, 8.1, 8.0 > Остальные конфигурации 1С 8
Штас
помогите написать формулу наценки товара от его цены, конфигурация Элементарная торговля, в 7ке вроде было так ?([ЦенаПоступления]>=100 и [ЦенаПоступления]=200 и [ЦенаПоступления]=300 и [ЦенаПоступления]<400,[ЦенаПоступления]*1.3,
[ЦенаПоступления]*1.2)))
так я понял что так было, синтаксиса не знаю ни того ни этого.
в 8.3 пробую пробую, читал смотрел ничего не понял и не нашел!
заранее спасибо!
Vofka
Штас, было бы не плохо указать конфигурацию.
fly
Vofka @ Сегодня, 17:18 необходимо зарегистрироваться для просмотра ссылки ,
По ходу эта
Конфигурация "Элементарная торговля"

необходимо зарегистрироваться для просмотра ссылки
Штас
Добрый день! да это Элементарная торговля
volodya1122
Штас @ Вчера, 16:39 необходимо зарегистрироваться для просмотра ссылки ,

Кто написал вам эту формулу? В ней наценка 30% никогда небудет. Там в условии написано что цена поступления одновременно должна быть и 200 и 300. А этио никак невозможно.
Переведу Вам эту формулу на человеческий язык. Если Цена поступления будет от 100 до 400 и кроме того одновременно еще она будет и 200 и 300 то наценка 30%, иначе наценка 20%. У вас в любом случае по этой формуле всегда будет наценка 20%
Штас
добрый день, кто писал не знаю, просто нашел в инете такой пример, в конфигурации Элементарная торговля совсем другой синтаксис написания формул она не то что не так считает она просто дает ошибку
Штас
нашел рабочую формулу
?(Цена <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
Штас @ Сегодня, 15:51 необходимо зарегистрироваться для просмотра ссылки ,

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

какая именно вам нужна формула, она так и не написана вами - вашими словами.
Штас
простите
вот
от 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, 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
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, .......)))


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


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

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

вообще ничего не получается((((((!!
Штас
получилось, понял! Спасибо Вам!
можете ещё подсказать а как в формуле указать диапазон, например ?(Цена от 1 до 10, Цена....
как такое написать языком таким?
sava1
?(Цена<=5 И Цена>25 , 10, 12)
Штас
Добрый день!
спасибо за ответ!!
подскажите если знаете, а можно как то просто округлять цену после расчетов наценки например 143 округлить до 145 а 148 до 150, то есть в большую сторону и в пределах 5грн., чтоб цены были 10, 15, 55, 60. как это можно реализовать и желательно не сильно сложно, боюсь сложно могу не понять) СПАСИБО БОЛЬШОЕ ЗАРАНЕЕ!
volodya1122
Штас @ Сегодня, 9:06 необходимо зарегистрироваться для просмотра ссылки ,
ОкругленнаяЦена=5*Окр((Цена+2.49)/5,0,РежимОкругления.Окр15как20)

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

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

я изучаю 1с всего несколько месяце, извините, но я поэтому могу что то говорить, формулировать или спрашивать не совсем правильно или даже глупо.
volodya1122
Откройте личные сообщения (вверху страницы)
fly
Цитата(Штас @ 10.02.20, 13:25) необходимо зарегистрироваться для просмотра ссылки
Переменная не определена (ОкругленнаяЦена)


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

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

?(Цена<=15, (окр(((((цена+цена/100*150))+2.49)/5))*5), (?(Ц
fly
работает - это хорошо! smile.gif
со скобками точно не поленились и постарались от души smile.gif

Цитата(fly @ 11.02.20, 10:13) необходимо зарегистрироваться для просмотра ссылки
окр(((((цена+цена/100*150))+2.49)/5))*5


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

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

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

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