Имя: Пароль:
1C
 
скидки ... уф
,
0 lamme
 
11.09.19
16:15
Логика работы документа по НАШИМ скидкам.
(нашим - имеется в виду - что , не типовые механизмы)
Есть реквизит товара = процент постоянной скидки.
На этот реквизит завязана куча расчетов. Причем такая афигенная куча расчетов - что просто пиндыр (((
Руководство решило - что этой скидки - мало и давай добавлять дохринилон ступенчатых скидок на этот товар (те еще ХЗ сколько скидок - и выражается это в виде табличной части карточки товара )
Для понимания. Есть товар ХХХХХХХ. У него основная скидка = 7%. Но, в этих 7% заложены 2 скидки ... Например, 5 и 2.
В итоге - в товаре вместо 7 (в поле основная скидка) будет написано 5 и в новом поле = 2.

По математике тут логично
1 000 - 7% <> (1000-5%)-2%
930 <> 931
-----------------------------
Это предистория.
Чтобы все мильен мест не переделывать под новую логику пришла идея ..

1000 = 100%
931 = Х%
итого Х = 6,9
т.е. 1000 - 6,9% = (1000-5%)-2%
т.е. сделать скрытое поле = которое будет зхаполняться автоматом - и все расчеты перерулить на это новое одно поле .


Собственно- а как математически можно выйти на это 6,9%, если известны только начальные значения скидок в 5 и 2 .

(пока писал подумал .. так и расчитывать = как описал .. т.е. берем  сумму дохринилон и с ней работаем, чтобы определить эту скидку. Число знаков после зпт ставим 256 )

Написал .. че написал - не понял
и чего спросить у вас, уважаемые , тоже ..

я хоть все верно рассуждаю ?
1 lamme
 
11.09.19
16:19
перечитал .. ах*ренел .. пошел чай выпью ..
2 Про100Филя
 
11.09.19
16:20
(0) Очень сложно... Тебе нужно складывать проценты(2 + 5 = 7)?
3 lamme
 
11.09.19
16:22
мне очень сильно не хочется передлывать мильен строк кода - еще и в универсальных модулях - в которых этот процент скидки мелькает как одно значение.

по факту=  в итоге
если есть сумма товара 1000, то после скидки в 5 и 2 - сумма со скидкой должна встать как 931
4 Про100Филя
 
11.09.19
16:22
Я допер кажись.
В четыре хода все делается:
Вычесть 5% из числа 1000 = 950
Вычесть 2% из числа 950 = 931
Число 931 от числа 1000 = 93.1%
И из 100% вычесть 93.1% = 6.9%
5 aleks_default
 
11.09.19
16:24
"Чтобы все мильен мест не переделывать под новую логику пришла идея .. " - так в посте ты описал новую логику или старую?
6 lamme
 
11.09.19
16:24
(4)
это по документу так ..
но для того чтобы 6,9 получить
надо его в карточке товара рассчитать (при записи) - чтобы потом уже 6,9 подставлялось одним значением
)

но в приницпе = тоже математика нормальная
7 lamme
 
11.09.19
16:24
те в карточке товара у меня нет 1000р
есть новое значение скидки 5 и доп скидка 2
8 aleks_default
 
11.09.19
16:24
(4)Поздравляю!
9 hhhh
 
11.09.19
16:28
(6) фигня какая-то, а не математика. должно получиться 5+2 = 7. По любой логике. Потому что 2% нужно брать от 1000, а вы берете от 950. Это неправильно. И покупатеря на рубль надули.
10 lamme
 
11.09.19
16:30
(9)
да нету 7%
есть скидки 5 и 2
и сначала берется скидка 5, потом уже 2 от того что получено

так что все правильно.
11 _Дайвер_
 
11.09.19
16:32
(10) сложи 2 и 5 и получишь 7
12 hhhh
 
11.09.19
16:33
(10) ну, хозяин-барин, если решили делать через ж.пу, то делайте
13 lamme
 
11.09.19
16:35
(11)
1000 - 7% и (1000-5)-2 - почему то разнятся.


(12)
это не через Ж
это исторически в одно поле скидки записывали сумму нескольких скидок по разным условиям
14 Про100Филя
 
11.09.19
16:37
(10) Математику прогуливал?
ЦенаБезСкидки   = 1000;
НачальнаяСкидка = 0.05;
ДопСкидочка     = 0.02;
ПолученныйПроцент=(1-((ЦенаБезСкидки-(ЦенаБезСкидки*НачальнаяСкидка)-(ЦенаБезСкидки-(ЦенаБезСкидки*НачальнаяСкидка))*ДопСкидочка)/ЦенаБезСкидки))*100; //6.9
15 Chum
 
11.09.19
16:39
Для маркетологов в аду уже давно есть отдельный котел.
Додумались же разложить 7% скидки на 5% и 2%. И в результате имеет итоговую скидку в 6.9%. А главное, что и не обманули и обманули одновременно.

Хоть копеечку, но в плюс.
16 lamme
 
11.09.19
16:40
(15)
зачет .. поржали
17 lamme
 
11.09.19
16:40
(14)
спасибо  )
18 Про100Филя
 
11.09.19
16:42
(14) + это от руки не проверял, лучше сделать через рекурсию процедуру ВычестьПроцетыИзСуммы(Сумма, МассивПроцентов) глазу по приятнее воспринимать будет.
19 lamme
 
11.09.19
16:44
вот с рекурсией и проблема )

т.к. ДопСкидочка - это табличная часть с реквизитомТЧ = Скидка
20 Про100Филя
 
11.09.19
16:53
(19) Она будет перебирать массив процентов, вычитая из суммы процент (Сумма-(Сумма*Процент)) и возвращать сумму с учетом вычета процента. Таким образом когда кончится массив, получиться сумма с учетом вычета всех процентов. Эту сумму от вычти от начальной чтобы получить процент (1-СуммаСУчетомВычетаПроцентов/НачальнаяСумма)*100
21 lamme
 
11.09.19
16:56
(20)
я логически это и пытаюсь сделать )
но , как обычно, не с первого раза
22 Про100Филя
 
11.09.19
16:58
(21) Ну как то так получиться

....
СуммаСУчетомВычетаПроцентов = ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов);
СуммаСУчетомВычетаПроцентов = (1-СуммаСУчетомВычетаПроцентов/НачальнаяСумма)*100;
....

Функция ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов)
//обходим массив вычитая процент из НачальнаяСумма
//можно через рекурсию удаляя вычитаемый процент из массива, ну или например в цикле сделать...
//Возврат Сумма которую получили
КонецФункции
23 Kigo_Kigo
 
11.09.19
17:01
У нас сегодня ация 5% скидки и у вас по карте 2%
что 7% -?
нет 5 % и 2%
это как?
это 6.9!
вот на эту копейку и живем с вас вместо 930 рублей, 931!

отлично!

и потом еже надо это все дело будет завернуть на ККТ, куда цена = СуммаСоВсемиСкидками/количество, а количество 3, тут начинается пляски с копейкой, веселуха! :)))
24 lamme
 
11.09.19
17:02
Функция ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов)

для D=0 по МассивПроцентов.Количество()-1 цикл
РасчитаннаяСумма = НачальнаяСумма - НачальнаяСумма*МассивПроцентов[D].Скидка/100;
конеццикла;


КонецФункции

вот тут туплю
т.к. не НачальнаяСумма надо подставлять. а уже рассчитанное значение
25 Chum
 
11.09.19
17:04
(16) Чувак, я тут для ваших маркетологов придумал простенькую схему предоставления скидки, а для тебя не менее простую схему подсчета итоговой цены.

Смотри, разделять 7% на 2% и 5% это прикольно, но не круто. Круто любую скидку давать с шагом в 1%. И тогда контора экономит не 1 рубль с тысячи (как в примере в (0)), а 2 (ДВА) рубля и 7 копеек! Зацени:

    1 000,00 (розница)
1%    990,00
1%    980,10
1%    970,30
1%    960,60
1%    950,99
1%    941,48
1%    932,07 (с учетом скидки в 7%)
____
7%

А считать скидку вообще элементарно - в цикле уменьшаешь цену от предыдущей на 1%.
26 aleks_default
 
11.09.19
17:22
(24)Там сумма вообще не нужна
27 Salimbek
 
11.09.19
17:22
(24) Смешно...

РасчитаннаяСумма = НачальнаяСумма;
для D=0 по МассивПроцентов.Количество()-1 цикл
   РасчитаннаяСумма = РасчитаннаяСумма - РасчитаннаяСумма*МассивПроцентов[D].Скидка/100;
конеццикла;
28 Сияющий в темноте
 
11.09.19
17:51
обычно,если на товар скидка по акции,то скидка по карте и т.п. уже не действуют.
если у вас скидка на товар фиксированная,то просто храните цену со скидкой и ее же покупателю показывайте.
во всех магазинах пишут на желтый ценник новую цену,часто и старую цену и реальный процент скидки,а как там оно расчитывается,покупателю не важно.
29 _Дайвер_
 
11.09.19
17:55
(28) + выбирают максимальную скидку из нескольких вариантов скидок, а не суммируют их
30 Salimbek
 
11.09.19
21:19
(28) У нас есть одни такие - 10% скидка по спец.коду на телефон, и 10% скидка при оплате банковской картой. Т.е как раз случай из (0). При покупке товара за 100 руб. - после скидки по коду остается 90 руб. А потом, при оплате по карте, стоимость товара становится 81 руб.
31 antgrom
 
11.09.19
21:43
(0) одно из решений вашей проблемы - одна процедура получения цены и одна процедура получения скидки.
На вход процедур - параметры (номенклатура, клиент магазин и по) и параметры влияющие на скидку (день , клиент и по) на выходе - цена и её скидка.
32 Михаил Козлов
 
11.09.19
22:14
Все не дочитал: скидка = 1-0,95*0,98 = 0,069.
В общем случае: скидка = 1-ПРОИЗВЕДЕНИЕ(по I) (1-строка скидки[i])
33 тарам пам пам
 
12.09.19
10:08
(25) Надо сразу брать предел при бескончено малом приращении скидки. Там тогда e  (~2,71) рублей получится, если не ошибаюсь.
34 Chum
 
12.09.19
10:14
(33) высшая математика и современный одинэсник - понятия несовместимые