Имя: Пароль:
1C
1С v8
Пробитие суммы скидки в чеке (Штрих-М)
,
0 Ivan Bezdomnyi
 
03.02.21
07:04
1С 8.2 Конфигурация самописная
В программе есть бонусная система, т.е. клиент может часть чека оплачивать бонусами. Это надо как-то пробивать. Возникла идея пробивать эти бонусы как скидку.
Полдня вчера гуглил, внятного ответа на свой вопрос так и не нашел.
В общем виде пробитие выглядит так:

Для Каждого Стр Из Товары Цикл
    FR.PaymentItemSign = 1; //Товар
    FR.PaymentTypeSign = 4; //Полный расчет
    FR.Quantity = Стр.Количество;
    FR.Price = Стр.Цена;
    FR.Department = 1; //Секция
    FR.StringForPrinting = Стр.Номенклатура.Наименование;
    FR.CheckType = 0;
    FR.FNOperation();
КонецЦикла;
FR.Summ1 = СуммаНал;
FR.Summ4 = СуммаБезнал;
FR.FNCloseCheckEx();

Пробовал использовать Discount()
FR.Summ1 = СуммаСкидкаБонусы;
FR.Tax1 = 0;
FR.Tax2 = 0;
FR.Tax3 = 0;
FR.Tax4 = 0;
FR.Discount();

Пробовал FNDiscountOperation() вместо FR.FNOperation() (распределив бонусы пропорционально).
FR.DiscountValue = СкидкаСтр;
FR.FNDiscountOperation();

Но в итоге после пробития - в чеке ОФД ни слова о скидках.
Помогите кто чем может, люди добрые.
1 serpentt
 
03.02.21
09:13
А фактически скидка на чек применилась?
2 serpentt
 
03.02.21
09:14
Если ПРИМЕНИЛАСЬ, то выводите информацию о скидке произвольной строкой в чеке(так делают в АТОЛе)
3 Ivan Bezdomnyi
 
03.02.21
10:49
(1) ну я так понимаю что нет, потому что например
Берем один товар, сумма товара 10, оплата наличными 1, бонусами 9.
Пишу
FR.Price = 10;
FR.DiscountValue = 9;
FR.Summ1 = 1;

Выдает ошибку "Сумма всех типов оплаты меньше итога чека"...
4 Исновая
 
03.02.21
11:11
Нету скидки в фр уже давно, сумму скидки высчитываете в программе, пропорционально уменьшаете цену и с помощью сьроки после закрытия чека " СУММА со скидкой бла бла или скидка блабла...
5 Ivan Bezdomnyi
 
08.02.21
07:58
(4) Хорошо, но вот пример, первый что пришел в голову

Товар1 / Количество 3 / Цена 4 / Сумма 12
Товар2 / Количество 3 / Цена 3 / Сумма 9
Итого 21
Оплата: наличными 11, бонусами 10

Как эти бонусы распределить пропорционально, чтобы цена уложилась в копейки?
6 hhhh
 
08.02.21
08:12
Товар1 / Количество 3 / Цена 2 / Сумма 6
Товар2 / Количество 2 / Цена 2 / Сумма 4
Товар2 / Количество 1 / Цена 1 / Сумма 1
7 Kigo_Kigo
 
08.02.21
08:46
Через коэффициент участия
  СуммаВсего = Итог("Сумма");
            ВыбратьСтроки();
            Пока ПолучитьСтроку() = 1  Цикл
                Сумма = Сумма - Сумма/СуммаВсего*100 * СуммаСкидкиБаллами/100;
            КонецЦикла;
8 d4rkmesa
 
08.02.21
09:12
(0)(5) Посмотрите как в типовой УТ 10. Там цены давно уже с учетом всех скидок указываются, а несоответствия между ценой*количество и суммой выравниваются настройкой форматно-логического контроля.
9 Ivan Bezdomnyi
 
08.02.21
10:05
(6) как вариант, но как-то не красиво)

(7) сразу с первой строки: Сумма = 12 - 12/21 * 100 * 10/100 = 6,285714... и тут хоть округляй хоть нет, в итоге у цены тоже точность будет за пределами копеек и получим "Сумма всех типов оплаты меньше итога чека"

(8) хорошо, попробую там поискать
10 Ivan Bezdomnyi
 
08.02.21
10:34
(8) Можно поподробнее про форматно-логический контроль и про выравнивание несоответствия между ценой*количество и суммой?
Потому что сейчас проблема именно в этом.
11 Kigo_Kigo
 
08.02.21
11:07
(10) Просто в полученно наличными всегда суй 1 рубль, все что лишнее будет попадать тупо в сдачу