1с округление в пользу покупателя

1с округление в пользу покупателя thumbnail

1.

wt2
09.02.13 11:46
Сейчас в теме

Приветствую всех, кому не безразличен данный вопрос!

Проблема банальна,но вот решить ее ни как не получается. Я применяю округление цен до 1 рубля, после применения скидки у меня получается цена с копейками, чего очень мне не нравится – как сделать, что бы скидка тоже округлялась?

Я думаю проблема не нова, но вот решение ее я ни как не могу найти, подскажите что делать?

Ответы


В избранное


Подписаться на ответы

Сортировка:

Древо развёрнутое

  • Дата
  • Дата
  • Рейтинг всех уровней
  • Рейтинг 1-го уровня
  • Древо развёрнутое
  • Древо свернутое

Свернуть все

2.

DragonAgo
11
09.02.13 12:55
Сейчас в теме

ВЫ используете округление, которое в настройках магазина? У меня оно тоже в Рознице 1.0 не работает применяю стандартное округление Окр(Число, 0)

3.

rgrisha
1
09.02.13 15:40
Сейчас в теме

Суммаскидки = Цел(СуммаСкидки)+1

4.

wt2
09.02.13 15:53
Сейчас в теме

В настройках магазина стоит цена “Розничная” В Маркетинг->Виды цен->”Розничная” настроено округление до рубля.

Теперь отвечаю на свой вопрос

Нормативно справочная документация->Магазин и там в настройках->Порядок округления суммы чека в пользу покупателя я установил 1

Теперь при продаже все работает и округляет до рубля!!! Розница 2.0.5.5

Так из любопытства спрошу, а можно сделать округление в пользу магазина и как?

Papilion; Averst; SpideRus; vasili4;
+4

Ответить

5.

SpideRus
16.02.13 07:52
Сейчас в теме

(4) wt2,

Так-то оно так, но что делать, если:

Нормативно справочная документация->Магазин и там в настройках->Порядок округления суммы чека в пользу покупателя я установил 1

Эта опция в созданном магазине не активна. Создавать новый или можно как-то все-таки включить?

6.

SpideRus
16.02.13 10:11
Сейчас в теме

Нашёл – “Нормативно-справочная информация” – “Магазин” – перейти в настройки магазина, выбрать – “все действия” – “разрешить редактирование реквизитов объекта”, поставить разрешить редактирование нужного поля.

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

7.

wt2
16.02.13 13:45
Сейчас в теме

SpideRus Как я Вас понял у Вас заблокированы поля ценообразование. Значит делаем следующее:

В верхнем правом углу нажимаем “Все действия” и выберем “Разрешить редактирование реквизитов объекта” ну а потом меняйте что хотите в заблокированных полях. Удачи!

8.

wt2
16.02.13 13:49
Сейчас в теме

Но, там как бы есть предупреждение, что редактировать после введения документов по магазину не рекомендуется. Если вопрос стоит только по округлению, то делается при закрытой кассовой смене, даные изменения не на что более не влияют.

9.

Dowson
27.03.14 08:35
Сейчас в теме

Друзья, а как насчет Розница 2.1?

В настройках магазина нет такой опции, как “Порядок округления суммы чека..”.

Как округлить сумму чека в релизе 2.1 ?

10.

Dowson
27.03.14 10:30
Сейчас в теме

Извиняюсь, есть, не увидел сразу))

11.

Dowson
27.03.14 10:39
Сейчас в теме

Главное, не забыть поставить галочку Настрока и администрирование-Маркетинг-Скидки, наценки, ограничения продаж

12.

boombri
06.06.15 21:56
Сейчас в теме

Всем привет!

У меня тоже вопрос по скидкам…

подскажите как сделать так чтобы скидка округлялась до 100 и 50ти рублей?

например: изделие стоит 2200 руб, после скидки в 20% оно стоит 1760 руб… я немного поковырялся в настройках, а точнее Нормативно-Справочная Информация/Магазины/Порядок округления суммы в пользу покупателя – 50, и теперь мое изделие округляется до 1750 – это почти как я хотел. А я хочу чтобы округлялось в пользу магазина т.е. если после скидки 1770 округлялось до 1800, 1730 округлялось до 1750 и так далее… Можно ли так сделать?

Еще вот где ковырялся Маркетинг/Виды Цен/Цена Реализации(так у меня называется вид цены которая используется при продаже)/Правило Округления Цен… вот там я делал настройки и проверял округление через конструктор, там все работает, но при продаже эта система не работает…

Читайте также:  Ушастый нянь польза или вред

надеюсь понятно изложил свой вопрос =)

Заранее спасибо!

Предприятие 8

розница 2.0

Ювелирный Магазин

14.

wt2
07.06.15 10:06
Сейчас в теме

(12) boombri, Еще вот где ковырялся Маркетинг/Виды Цен/Цена Реализации(так у меня называется вид цены которая используется при продаже)/Правило Округления Цен… вот там я делал настройки и проверял округление через конструктор, там все работает, но при продаже эта система не работает…

После того как поработали с конструктором, необходимо произвести переоценку товара по данному виду цен. Маркетинг/цены номенклатуры. После этого все должно заработать.

По поводу скидок по магазину тоже мучался, вопрос так и не решил, нашел для себя выход при помощи установки минимальной цены продажи, там вручную правлю цены и когда происходит маркетинговая акция, товар ниже установленной цены не продается. Скандалов не разу не было, на дисконтной карте у меня написано скидки от 5% до 15%, а на товар я вешаю лейбл акция. Потребитель может возмущаться если цена в чеке выше чем цены на ценнике, в нашем слачаи цена всегда ниже чем на ценнике. Помните скидка это подарок от магазина, а не повод для скандала.

13.

sancho86
1
06.06.15 22:43
Сейчас в теме

В рознице два округления: для розничной цены при выполнении переоценки и округление итога чека скидкой.

Если итог чека можно было бы округлять в пользу магазина то первый же внимательный покупатель устроил бы вам скандал…

В рознице такого нет. и, на сколько я знаю, это не законно…

15.

boombri
09.06.15 14:38
Сейчас в теме

Спасибо вам люди добрые за оперативные ответы!

скажу работодателю чтобы мелочь держали в магазине для сдачи. и наверно сделаю округление до 10 (десяток).

16.

Alexander2015
22.09.15 15:49
Сейчас в теме

А как округлить цену именно после скидки.

1) У нас цены уже округлены до 10.

2) После применения скидки, появляются рубли с копейками.

3) Если поставить округление на чек(в настройках магазина), то для одной позиции все гуд.

А вот если их несколько, то один рубль дробится на все позиции чека.

Вопросы с вознаграждением

Источник

   егаис

28.10.15 – 14:03

Впервые столкнулся с розницей, нужен  хелп. Настроил скидки, необходимо настроить округление после применения скидок

Правило – от 0 коп до 49 копеек – в меньшую сторону до целого рубля

от 50 копеек до 99 копеек – в большую строну до целого рубля.

Как сделать это?

Нижняя граница 0,5 Точность 100 Психологическое 1?

   cw014

1 – 28.10.15 – 14:12

Математическое округление? Вроде там такое настраивается

   егаис

2 – 28.10.15 – 14:16

я не понял логику в Рознице
Что такое Нижняя граница, Точность?

И второй вопрос – как в Рознице при продаже свыше 1000 р. выдавать сообщение о выдаче карты для новых клиентов?

   lenochka-semicova

3 – 28.10.15 – 14:21

Граница и точность – это для расчета цен в установке цен.

Чтобы округлять итоговый чек после скидок – в карточке магазина есть параметр – округлять чек в пользу покупателя – можно поставить до рубля.

Но округлять он будет всегда в меньшую сторону….

Потому как если предоставить скидку 2%, например, на товар в 20 рублей (предположим, 1 товар в чеке жевательная резинка), а потом округлить по математическим правилам до рубля, то получится снова 20 рублей. т.е. покупателю дали скидку и тут же ее отняли.

Кроме прочего на это покупатель может пожаловаться в компетентный орган – ибо нарушение прав потребителя и иже с ними.

P.S.

Ну и все нормальные магазины в этой стране округляют чек всегда в пользу покупателя.

   егаис

4 – 28.10.15 – 14:22

сделал так во 2-му вопросу
скидка за разовый объем продаж
Выводить сообщение
условие накопительная скидка не более 0 руб
   lenochka-semicova

5 – 28.10.15 – 14:23

(2) Делается два условия:

1. сумма чека > 1000

2. по типу получателя – тип – дисконтная карта – а в списке карт добавить одну пустую строку, в которой выбрать “Карта не предъявлена”.

Читайте также:  Протеины для роста мышц вред и польза для мужчин
   lenochka-semicova

6 – 28.10.15 – 14:24

(4) можно и так – просто условие накопления – будет все равно делать запрос к накоплениям, что менее производительно.

   егаис

7 – 28.10.15 – 14:25

спасибо большое

   егаис

8 – 28.10.15 – 14:29

еще, не срабатывает регистрация новых карт в РМК, у пользователя в правах есть.

   lenochka-semicova

9 – 28.10.15 – 14:47

(8) надо же еще и настроить шаблон регистрации

   егаис

10 – 28.10.15 – 14:47

(5) 2. по типу получателя – тип – дисконтная карта – а в списке карт добавить одну пустую строку, в которой выбрать “Карта не предъявлена”.

Что значит не предъявлена?

   lenochka-semicova

11 – 28.10.15 – 14:49

(10) просто пустое значение в строке будет так подписано.

   егаис

12 – 28.10.15 – 14:49

(11) программа просит либо ввести ШК либо магнитную

   lenochka-semicova

13 – 28.10.15 – 14:57

   lenochka-semicova

14 – 28.10.15 – 15:01

   егаис

15 – 28.10.15 – 15:03

Что хранится в Карта не предъявлена?

   егаис

16 – 28.10.15 – 15:04

у меня версия 2.1.5.9

   lenochka-semicova

17 – 28.10.15 – 15:10

в карта не предъявлена – пустое значение. возможно, в 2.1.5.9 такого не было

   егаис

18 – 28.10.15 – 15:16

https://savepic.su/6320433.jpg

это шаблон, нифига не работает

   lenochka-semicova

19 – 28.10.15 – 15:16

   lenochka-semicova

20 – 28.10.15 – 15:17

шаблоны точно работают – каждый день генерю.

   егаис

21 – 28.10.15 – 15:18

может Вам дорабатывали? нет у меня Карта не предъявлена в предопределенных (я так понимаю это предопределенный элемент)

   lenochka-semicova

22 – 28.10.15 – 15:18

но 2.1.5.9 – давно уже обновили.

   lenochka-semicova

23 – 28.10.15 – 15:19

это не предопределенный. скрин с демо установленной с шаблона только что.

   lenochka-semicova

24 – 28.10.15 – 15:19

просто добавить строку в список. и закончить редактирование.

   егаис

25 – 28.10.15 – 15:19

(20) считываю в РМК новую карту – сообщение карта не найдена и все ((

   lenochka-semicova

26 – 28.10.15 – 15:20

(25) Тогда только отладчик в руки…

   lenochka-semicova

27 – 28.10.15 – 15:21

может, шаблон не совсем подходит. может, еще что.

   егаис

28 – 28.10.15 – 15:22

(23) все разобрался )

   егаис

29 – 28.10.15 – 15:23

а сам шаблон настраивается еще где-нибудь? Префикс ШК например?

   lenochka-semicova

30 – 28.10.15 – 15:25

если считывается сканером – то не надо такого.

Кстати – может быть, что для сканера и не работает.

У нас во-первых считыватель магнитных карт, а во-вторых релиз последний.

 
 Рекламное место пустует

   егаис

31 – 28.10.15 – 15:26

(30) спасибо Ленусик 😉

Обновим, проверим,не поможет – залезем в конфигуратор

   lenochka-semicova

32 – 28.10.15 – 15:27

пожалуйста.

Источник

Часто, к примеру, при оформлении заказа покупателя или создании чека ККМ сумма документа получается не целой, с копейками. Если товара не много и есть позиции с количеством товара равном 1-2, то проблема округления копеек тут не стоит. А что делать если количество товара в каждой позиции огромно и лишние копейки никак не делятся на это количество? Предлагаю ряд функций для решения этой проблемы.

У меня эта проблема возникла в конфигурации 1С:Комплексная автоматизация 8 на платформе 8.2. Для решения я создал свой общий модуль и прописал в нем следующие функции:

Функция РасчетНОД (Число1, Число2) Экспорт
  Если Число1 >= Число2 Тогда
    Первое = Число1;
    Второе = Число2;
  Иначе
    Первое = Число2;
    Второе = Число1;
  КонецЕсли;
  Остаток = Первое % Второе;
  Если Остаток > 0 Тогда
    Первое = Второе;
    Второе = Остаток;
    НОД = РасчетНОД(Первое, Второе);
  Иначе
    НОД = Второе;
  КонецЕсли;
  Возврат НОД;
КонецФункции

Функция

Эйлера (Число) Экспорт
  ЧислаЭйлера = Новый Массив;
  Количество =0;
  ЧислаЭйлера.Добавить(Количество);
  Для Номер = 1 По Число Цикл
    Если РасчетНОД(Число, Номер) = 1 Тогда
      Количество = Количество + 1;
      ЧислаЭйлера.Добавить(?(Номер>Число/2, Номер-Число, Номер));
    КонецЕсли;
  КонецЦикла;
  ЧислаЭйлера[0] = Количество;
  Возврат ЧислаЭйлера;
КонецФункции

Функция

СтепеньПоМодулю (Основание, Степень, Модуль) Экспорт
  Основание = Основание % Модуль;
  Число = Основание;
  Для Индекс = 2 По Степень Цикл
    Число = Основание * Число;
    Число = Число % Модуль;
  КонецЦикла;
  Возврат Число;
КонецФункции

Функция

РешениеСравнения (Коэффициент, Сравнение, Модуль) Экспорт
  НОД = РасчетНОД(Коэффициент, Модуль);
  Если Сравнение%НОД = 0 Тогда
    СравнениеНОД = Цел(Сравнение/НОД);
    КоэффициентНОД = Цел(Коэффициент/НОД);
    МодульНОД = Цел(Модуль/НОД);
    Степень = Эйлера(МодульНОД)[0] – 1;
    Решение = СравнениеНОД * СтепеньПоМодулю(КоэффициентНОД, Степень, МодульНОД);
    Решение = Решение % МодульНОД;
  КонецЕсли;
  Возврат Решение;
КонецФункции

Функция

РешениеСравненияЛинейное (Коэффициент1, Коэффициент2, Сравнение, НОД, Модуль) Экспорт
  МГлавный = Новый Массив;
  МОсновной = Новый Массив;
  Коэффициент1НОД = Цел(Коэффициент1/НОД);
  Коэффициент2НОД = Цел(Коэффициент2/НОД);
  МодульНОД = Цел(Модуль/НОД);
  СравнениеНОД = Цел(Сравнение/НОД);
  НОД1 = РасчетНОД(Коэффициент1НОД, МодульНОД);
  НОД2 = РасчетНОД(Коэффициент2НОД, МодульНОД);
  МГлавный = Эйлера(МодульНОД);
  Если НОД2 > 1 Тогда
    Коэф = РешениеСравнения(НОД1, СравнениеНОД, НОД2);
  Иначе
    Коэф = 1;
  КонецЕсли;
  Счетчик = Цел(МодульНОД/НОД2);
  Для Номер = 0 ПО Счетчик-1 Цикл
    Коэф2 = МГлавный.Найти(?((Коэф + Номер*НОД2)>МодульНОД/2, (Коэф + Номер*НОД2)-МодульНОД, (Коэф + Номер*НОД2)));
    Если ТипЗнч(Коэф2)<>Тип(“Неопределено”) Тогда
      МОсновной.Добавить(МГлавный[Коэф2]);
    КонецЕсли;
  КонецЦикла;
  Ответ = Новый Массив(2);
  Первый = Новый Массив;
  Второй = Новый Массив;
  Результат = Новый Массив;
  Модуль1 = Цел(МодульНОД/НОД1);
  Модуль2 = Цел(МодульНОД/НОД2);
  Степень1 = Эйлера(Модуль1)[0]-1;
  Степень2 = Эйлера(Модуль2)[0]-1;
  Коэффициент1НОД1 = Цел(Коэффициент1НОД/НОД1);
  Коэффициент2НОД2 = Цел(Коэффициент2НОД/НОД2);
  Для Номер = 0 ПО МОсновной.Количество()-1 Цикл
    Решение1 = СтепеньПоМодулю(Коэффициент1НОД1, Степень1, Модуль1) * МОсновной.Получить(Номер) % Модуль1;
    Решение2 = СтепеньПоМодулю(Коэффициент2НОД2, Степень2, Модуль2) * Цел((СравнениеНОД-НОД1*МОсновной.Получить(Номер))/НОД2) % Модуль2;
    Первый.Добавить(?(Решение1>Модуль/2, Решение1-Модуль, Решение1));
    Второй.Добавить(?(Решение2>Модуль/2, Решение2-Модуль, Решение2));
    Результат.Добавить(Коэффициент1*Первый[Номер] + Коэффициент2*Второй[Номер]);
  КонецЦикла;
  Ответ[0] = Первый[0];
  Ответ[1] = Второй[0];
  Для Номер = 1 ПО Результат.Количество()-1 Цикл
    Если Pow(Результат[Номер-1], 2) > Pow(Результат[Номер], 2) Тогда
      Ответ[0] = Первый[Номер];
      Ответ[1] = Второй[Номер];
    КонецЕсли;
  КонецЦикла;
  Возврат Ответ;
КонецФункции

Читайте также:  Перец свежий польза и вред для организма человека

Пояснения:

1. Функция РасчетНОД (Число1, Число2).

  • возвращает Наибольший Общий Делитель двух чисел.

2. Функция Эйлера (Число).

  • возвращает функцию Эйлера (количество чисел взаимопростых с данным и меньших его) для числа в следующем виде: Массив[КоличествоЧиселВзаимопростыхСДанным, МножествоЭтихСамыхЧиселВзаимопростыхСДанным], причем эти числа представляются в виде ?(Номер>Число/2, Номер-Число, Номер), где Номер – эти самые числа.

3. Функция СтепеньПоМодулю (Основание, Степень, Модуль).

  • возвращает остаток от деления степени основания на текущий модуль.

4. Функция РешениеСравнения (Коэффициент, Сравнение, Модуль).

  • возвращает решение линейного сравнения с одной переменнойКоэффициент*Решение = Сравнение (mod Модуль).

5. Функция РешениеСравненияЛинейное (Коэффициент1, Коэффициент2, Сравнение, НОД, Модуль).

  • возвращает решение линейного сравнения с двумя переменнымиКоэффициент1*Ответ1+Коэффициент2*Ответ2 = Сравнение (mod Модуль), при этом НОД = НОД(Коэффициент1, Коэффициент2, Модуль) (общий делитель трех чисел).

Далее идут процедуры которые вставляются непосредственно в объект, где надо округлять. Первая процедура вешается на созданую кнопку на форме объекта, а вторая – прописывается в модуле объекта (в моем случае это документ ЗаказПокупателя). Выделенное жирным заменяется согласно Вашему объекту.

//Получаем общую сумму и если в ней есть копейки, то будем округлять их до рублей.
//
Процедура КоманднаяПанельТоварыДействиеОкруглитьСтоимость(Кнопка)
  Сумма = Товары.Итог(“Сумма”);
  Если Сумма*100%100 <> 0 Тогда
    Ответ = Вопрос(“Перед округлением цен надо записать документ! Записать?”, РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Да Тогда
      ЭтотОбъект.Записать();
      ОкруглитьСуммуЗаказа();
    КонецЕсли;
  КонецЕсли;
КонецПроцедуры

//Для округления будем стараться выбирать товары с наибольшей ценой для уменьшения погрешности разницы округленной цены и текущей.
//Наценку будем брать так, чтобы она по модулю не превышала 50 копеек, опять же для уменьшения погрешности.
//
Процедура ОкруглитьСуммуЗаказа() Экспорт
  Массив = Новый Массив(2);
  Результаты = Новый Массив;
  Запрос = Новый Запрос;
  Текст = “ВЫБРАТЬ
      | ЗаказПокупателяТовары.НомерСтроки КАК НомерСтроки,
      | ЗаказПокупателяТовары.Количество,
      | ЗаказПокупателяТовары.Цена КАК Цена,
      | ЗаказПокупателяТовары.Сумма КАК Сумма
      |ИЗ
      | Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
      |ГДЕ
      | ЗаказПокупателяТовары.Ссылка = &Ссылка
      |
      |УПОРЯДОЧИТЬ ПО
      | Цена УБЫВ
      |ИТОГИ
      | КОЛИЧЕСТВО(НомерСтроки),
      | СУММА(Сумма)
      |ПО
      | ОБЩИЕ”;
  Запрос.Текст = Текст;
  Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
  Выборка = Запрос.Выполнить().Выбрать(); //Вытаскиваем список всех товаров упорядоченых по убыванию цены
  Если Выборка.Следующий() Тогда
    СуммаИтого = Выборка.Сумма*100%100; //Получаем общую сумму и количество товаров
    КоличествоИтого = Выборка.НомерСтроки;
  КонецЕсли;
  Если Выборка.Следующий() Тогда
    Количество1 = Выборка.Количество%100; //Получаем первый, то есть самый дорогой товар
    Цена1 = Выборка.Цена*100;
    Строка1 = Выборка.НомерСтроки;
  КонецЕсли;
  НОД1 = АналитическийМодуль.РасчетНОД(Количество1, 100);
  Если СуммаИтого%НОД1=0 Тогда
    Наценка = АналитическийМодуль.РешениеСравнения(Количество1, СуммаИтого, 100);
    Наценка1 = -(?(Наценка>50, Наценка-100, Наценка));
    //Если количество самого дорогого товара подходит для решения сравнения,
    //то есть его цену можно исправить так, чтобы исчезли копейки в сумме,
    //то нам больше ничего и не надо, иначе – ищем второй подходящий товар
    //(не трудно понять, что такой товар найдется для решения сравнения с двумя переменными,
    //еслиб не нашлось, то текущей суммы бы не получилось при таких данных параметрах позиций товаров):
  Иначе
    Пока Выборка.Следующий() Цикл
      Количество2 = Выборка.Количество%100;
      НОД2 = АналитическийМодуль.РасчетНОД(Количество2, НОД1);
      Если (СуммаИтого%НОД2=0) Тогда
        Массив = АналитическийМодуль.РешениеСравненияЛинейное(Количество1, Количество2, СуммаИтого, НОД2, 100);
        Строка2 = Выборка.НомерСтроки;
        Наценка1 = -(?(Массив[0]>50, Массив[0]-100, Массив[0]));
        Наценка2 = -(?(Массив[1]>50, Массив[1]-100, Массив[1]));
        Прервать;
      КонецЕсли;
    КонецЦикла;
  КонецЕсли;
  ТекСтрока = Товары.Получить(Строка1-1);
  ТекСтрока.Цена = ТекСтрока.Цена + Наценка1/100;
  ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ТекСтрока, ЭтотОбъект);
  Если ТипЗнч(Строка2) <> Тип(“Неопределено”) Тогда
    ТекСтрока = Товары.Получить(Строка2-1);
    ТекСтрока.Цена = ТекСтрока.Цена + Наценка2/100;
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ТекСтрока, ЭтотОбъект);
  КонецЕсли;
КонецПроцедуры

При проверки погрешность разницы колебалась в пределах не больше чем 1-2% от объщей суммы.

Минусы:

  • данная система округления работает с “чистыми” ценами, без учета ручных и автоматических скидок, проставляемых отдельно в виде %, поэтому если на некоторые товары действует скидка, то приходится в ручную расчитывать цену со скидкой и прописывать её в колонку “Цена“, а колонку “Скидка” не трогать.

Источник