Смена типа цен в Чеке ККМ в зависимости от суммы документа
Всем привет!
Задача такая - в инт.кассира если сумма чека ККМ больше 2000 руб., то меняем тип цен и пересчитываем чек.
Типа были розничные цены, стали оптовые.
Конечно я в курсе авто-скидок по сумме, но попросили сделать так.
Я сделал вот что:
1. повесил процедуру на событие редактирования количества или номенклатуры
2. выгружаю ТЧ в таблицу значений, приклеиваю запросом колонку с другим типом цен
3. загружаю в ТЧ таблицу с новой ценой, пересчитываю ТЧ.
4. меняю тип цен в чеке.
но если после всего добавить еще строку в ТЧ, цена встает по умолчанию (розничная), а не та, которую я только установил.
см. скриншот.
подскажите как реализовать?
Задача такая - в инт.кассира если сумма чека ККМ больше 2000 руб., то меняем тип цен и пересчитываем чек.
Типа были розничные цены, стали оптовые.
Конечно я в курсе авто-скидок по сумме, но попросили сделать так.
Я сделал вот что:
1. повесил процедуру на событие редактирования количества или номенклатуры
2. выгружаю ТЧ в таблицу значений, приклеиваю запросом колонку с другим типом цен
3. загружаю в ТЧ таблицу с новой ценой, пересчитываю ТЧ.
4. меняю тип цен в чеке.
но если после всего добавить еще строку в ТЧ, цена встает по умолчанию (розничная), а не та, которую я только установил.
см. скриншот.
подскажите как реализовать?
ПорогСменыТипаЦен = 2000;
НовыйТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая");
Если Товары.Итог("Сумма") > ПорогСменыТипаЦен И ТипЦен<>НовыйТипЦен Тогда
ТЗ = Товары.Выгрузить();
ТипЦен = НовыйТипЦен;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица",ТЗ);
Запрос.УстановитьПараметр("Дата",Дата);
Запрос.УстановитьПараметр("ТипЦен",ТипЦен);
Запрос.Текст = "ВЫБРАТЬ
| Таблица.Номенклатура,
| Таблица.Количество,
| Таблица.ЕдиницаИзмерения,
| Таблица.Коэффициент,
| Таблица.Цена,
| Таблица.ПроцентСкидкиНаценки,
| Таблица.Сумма,
| Таблица.ХарактеристикаНоменклатуры,
| Таблица.СерияНоменклатуры,
| Таблица.ПроцентАвтоматическихСкидок,
| Таблица.УсловиеАвтоматическойСкидки,
| Таблица.ЗначениеУсловияАвтоматическойСкидки,
| Таблица.Артикул,
| Таблица.Штрихкод,
| Таблица.КлючСвязи,
| Таблица.КлючСтроки
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| &Таблица КАК Таблица
|;
|
| //////////////////////////////////////////
|
|ВЫБРАТЬ
| ВременнаяТаблица.Номенклатура,
| ВременнаяТаблица.Количество,
| ВременнаяТаблица.ЕдиницаИзмерения,
| ВременнаяТаблица.Коэффициент,
| ВременнаяТаблица.ПроцентСкидкиНаценки,
| ВременнаяТаблица.Сумма,
| ВременнаяТаблица.ХарактеристикаНоменклатуры,
| ВременнаяТаблица.СерияНоменклатуры,
| ВременнаяТаблица.ПроцентАвтоматическихСкидок,
| ВременнаяТаблица.УсловиеАвтоматическойСкидки,
| ВременнаяТаблица.ЗначениеУсловияАвтоматическойСкидки,
| ВременнаяТаблица.Артикул,
| ВременнаяТаблица.Штрихкод,
| ВременнаяТаблица.КлючСвязи,
| ВременнаяТаблица.КлючСтроки,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
| ПО ВременнаяТаблица.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Товары.Загрузить(РезультатЗапроса);
Для каждого СтрокаТабличнойЧасти из Товары Цикл
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЦикла
КонецЕсли;
ПоказатьПо теме из базы знаний
- Многофункциональная выгрузка из 1С:УТ 11/ УТ 10 в 1С:БП2, БП3 (соответствия товаров, контрагентов, складов, статей ДДС)+Свёртка по НДС
- Бонусная система в 1С для УТ 10.3
- Обмен между 1С:Розница и Frontol 6 по организациям (Розница - Фронтол)
- Многофункциональная выгрузка из 1С: Альфа-Авто 5 и 6 в 1С:БП 3 (соответствия товаров, контрагентов, складов, статей ДДС)+Свёртка по НДС
- Обработка обслуживания Терминал системы быстрых платежей с поддержкой QR Display - оплата по QR коду платформа QRManager для УТ10.х, УПП 1.3.х, КА 1.х, Розница 1.х
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Еще надо подумать над тем, как и по какому критерию возвращать розничные цены при уменьшении сумы чека. Например, из-за удаления позиции или уменьшения количества.
Иначе открывается широкий простор для жульничества продавцов.
подскажите как реализовать?
Подсказать могу только вот что: реализовать надо не только поставленную задачу.
Еще надо подумать над тем, как и по какому критерию возвращать розничные цены при уменьшении сумы чека. Например, из-за удаления позиции или уменьшения количества.
Иначе открывается широкий простор для жульничества продавцов.
(2) Chameleon1980, нет, старые строки остаются прежними, разумеется.
(3) Cooler, меня это не волнует. мне нужно решить задачу, а не находить причины, почему ее решать не надо.
об уменьшении суммы я пока не думал, спасибо, это я учту.
но все же. я порылся в модуле формы инт.кассира - не нашел я там, откуда берется цена при вводе новой строки.
конечно, можно пересчет вставить перед закрытием чека или повесить его на отдельную кнопку. но это не совсем здорово.
(3) Cooler, меня это не волнует. мне нужно решить задачу, а не находить причины, почему ее решать не надо.
об уменьшении суммы я пока не думал, спасибо, это я учту.
но все же. я порылся в модуле формы инт.кассира - не нашел я там, откуда берется цена при вводе новой строки.
конечно, можно пересчет вставить перед закрытием чека или повесить его на отдельную кнопку. но это не совсем здорово.
(4) El_Loco, если вас это не волнует, то печально :( Вам никто не сказал, что решать задачу не надо. Наоборот - если решать, то сразу предусматривать варианты, которые предупредят мошенничество со стороны кассиров (а они будут всегда).
Каким образом добавляется новая позиция? Руками или при помощи сканера ШК?
Проверяли ли вы саму переменную ТипЦен? Изменяется она? Или при значении "Оптовая" в колонку цены встает "Розничная"? Это факт? Сравнивали цены в регистре? Может оптовая = розничной в каком-то случае?
Проверьте, что у вас со складом? Не является ли он розничным? В этом случае цена будет рассчитываться иначе, а именно:
P.S. Кстати, самый простой способ "возврата" к розничному типу цен - при изменении строк ТЧ или номенклатуры/количества в строке всегда проверять каков итог в розничных ценах (запрос у вас уже есть). Если он становится меньше порога и тип цены <> розничному - откатываемся. Т.е. добавить аналогичную проверку просто.
Правда если сеть большая и рабочих мест много - это не очень красивая проверка будет.
Каким образом добавляется новая позиция? Руками или при помощи сканера ШК?
Проверяли ли вы саму переменную ТипЦен? Изменяется она? Или при значении "Оптовая" в колонку цены встает "Розничная"? Это факт? Сравнивали цены в регистре? Может оптовая = розничной в каком-то случае?
Проверьте, что у вас со складом? Не является ли он розничным? В этом случае цена будет рассчитываться иначе, а именно:
Если Склад <> Неопределено И Склад.ВидСклада = Перечисления.ВидыСкладов.Розничный Тогда
Цена = УправлениеРозничнойТорговлей.ПолучитьПродажнуюЦену(ДатаЦен, Номенклатура,
Характеристика, Единица, Склад, УсловиеПродаж);
P.S. Кстати, самый простой способ "возврата" к розничному типу цен - при изменении строк ТЧ или номенклатуры/количества в строке всегда проверять каков итог в розничных ценах (запрос у вас уже есть). Если он становится меньше порога и тип цены <> розничному - откатываемся. Т.е. добавить аналогичную проверку просто.
Правда если сеть большая и рабочих мест много - это не очень красивая проверка будет.
(7) insurgut, товар планируется вводить сканером, но у себя я проверяю руками. Тут я понимаю, если сканируем, надо отслеживать событие по колонке ШК.
Для проверки типа цен я вывел на форму элемент управления соответствующим реквизитом. см. скриншот. При пересчете он меняется.
Склад розничный.
Цены я назначил, с ними все ок.
А в каком модуле вы нашли этот код?
Обратную проверку я сделаю - это несложно. Рабочих мест у меня будет одно-два. Ни о какой сети магазинов речи не идет ;)
Для проверки типа цен я вывел на форму элемент управления соответствующим реквизитом. см. скриншот. При пересчете он меняется.
Склад розничный.
Цены я назначил, с ними все ок.
А в каком модуле вы нашли этот код?
Обратную проверку я сделаю - это несложно. Рабочих мест у меня будет одно-два. Ни о какой сети магазинов речи не идет ;)
(8) El_Loco, в форме регистрации продаж в модуле СШКНоменклатура имеем:
В нем и осуществляется указанная выше проверка.
В любом случае - связано это именно с тем, что склад у вас розничный. И вы хотите изменить типовую схему продаж с этого склада (розничный склад торгует только по цене, указанной в качестве отпускной для этого склада).
СтруктураПодбора = РаботаСТорговымОборудованием.СформироватьСтруктуруПодбора(Дата, Номенклатура, Характеристика,
Серия, Качество, Единица,
Количество, мВалютаРегламентированногоУчета,
Неопределено, мУказаниеСкладовВТЧ,
ТипЦен, , , УсловиеПродаж, Склад);
В нем и осуществляется указанная выше проверка.
В любом случае - связано это именно с тем, что склад у вас розничный. И вы хотите изменить типовую схему продаж с этого склада (розничный склад торгует только по цене, указанной в качестве отпускной для этого склада).
Как бы мы не меняли типы цен в процессе редактирования документа - это все интерактив.
Основные проверки и установки значений надо делать в процедуре ПередЗаписью
Только там можно исключить все намеренные или случайные ошибки ввода.
Основные проверки и установки значений надо делать в процедуре ПередЗаписью
Только там можно исключить все намеренные или случайные ошибки ввода.
(10) CaptainMorgan, спасибо! это дельный совет.
я сделал по похожей схеме, только пересчет вставил в процедуру закрытия чека, а на форму вывел надпись для отображения текущей суммы в оптовых ценах.
но даже после нажатия на закрытие чека можно отказаться.
одно смущает: если подключен фискальник, что будет сделано первым - печать чека на ФР или запись (проведение чека).
т.е. если мы сделаем пересчет подпиской на событие ПередЗаписью, то может получиться так, что на ФР вылезет чек не в тех ценах, что нужно.
я сделал по похожей схеме, только пересчет вставил в процедуру закрытия чека, а на форму вывел надпись для отображения текущей суммы в оптовых ценах.
но даже после нажатия на закрытие чека можно отказаться.
одно смущает: если подключен фискальник, что будет сделано первым - печать чека на ФР или запись (проведение чека).
т.е. если мы сделаем пересчет подпиской на событие ПередЗаписью, то может получиться так, что на ФР вылезет чек не в тех ценах, что нужно.
(13) insurgut, вот меня радуют такие комментарии - мол, я то знаю как и где, но вы, батенька, дурень)
(12) вот для этого я и вывел на форму итог в оптовых ценах, чтобы кассир смог всегда знать итог.
пересчет скидок - это вы про смену типа цен или именно про пересчет скидок? потому как там есть одноименная процедура.
склад кстати был у клиента оптовый. я у себя тестил на розничном складе.
как бы там ни было - это не совсем оптимально, загружать/выгружать ТЧ в процессе. достаточно показывать итог, а смену делать в самом конце "перед" закрытием чека и так, чтобы кассир изменить тип цен уже не мог.
нажал "закрыть чек", его спросили "сумма выше порога. можем сменить цены. да/нет?". а дальше уже пересчитываем и закрываем или просто закрываем.
и не нужно никаких обратных пересчетов в случае изменения ТЧ.
(12) вот для этого я и вывел на форму итог в оптовых ценах, чтобы кассир смог всегда знать итог.
пересчет скидок - это вы про смену типа цен или именно про пересчет скидок? потому как там есть одноименная процедура.
склад кстати был у клиента оптовый. я у себя тестил на розничном складе.
как бы там ни было - это не совсем оптимально, загружать/выгружать ТЧ в процессе. достаточно показывать итог, а смену делать в самом конце "перед" закрытием чека и так, чтобы кассир изменить тип цен уже не мог.
нажал "закрыть чек", его спросили "сумма выше порога. можем сменить цены. да/нет?". а дальше уже пересчитываем и закрываем или просто закрываем.
и не нужно никаких обратных пересчетов в случае изменения ТЧ.
(14) El_Loco, не совсем правильно - я вам выше показал места, где надо копать и ставить проверки. Кассир сам ничего не сможет сменить и так, потому что на форме реквизита ТипЦен доступного для изменения быть не должно (вы его насколько помню выводили только для проверки). Я конечно могу доработать "как надо", но мне за это не заплатят, поэтому я подсказал где смотреть :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот