Как пересчитывать количество товара по общей сумме в РМК?

1. Jemosta 12.03.22 16:54 Сейчас в теме
Добрый день, в базе Розницы 2.3 в РМК есть перерасчет общей суммы товара по ее количеству, но нет обратного процесса, когда по сумме считается количество. Как можно решить данную проблему? У меня есть мысль поменять код так, что при изменении общей суммы менялась не цена, а именно количество, но не представляю как это можно реализовать. Прикрепляю типовой код процедуры изменения суммы:
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
	
	СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах",
		ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаЦеныСкидкиВПродажахВТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС",
		ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаСуммыНДСВСтрокеТЧ(Объект));
	
	ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(
		Объект.Товары, СтрокаТабличнойЧасти, СтруктураДействий, КэшированныеЗначения);
		
	ОбработкаТабличнойЧастиТоварыКлиент.ВыделитьАгентскоеВознаграждение(Объект, ЭтотОбъект, СтруктураДействий, СтрокаТабличнойЧасти, КэшированныеЗначения);
		
	ОбработкаТабличнойЧастиТоварыКлиентСервер.ЗаполнитьСуммуВсегоВТаблице(Объект.Товары, Объект.ЦенаВключаетНДС);
	
	УменьшениеСуммыЧекаККМ = ПоследняяРедактируемаяСумма - СтрокаТабличнойЧасти.Сумма;
	УменьшениеСуммыЧекаККМ = ?(УменьшениеСуммыЧекаККМ > 0, УменьшениеСуммыЧекаККМ, 0);
	ЛогированиеИзмененийСтроки(
		"ИзменениеСуммы",
		ПоследняяРедактируемаяСумма,
		СтрокаТабличнойЧасти.Номенклатура,
		СтрокаТабличнойЧасти.Характеристика,
		СтрокаТабличнойЧасти.Сумма,
		Неопределено,
		УменьшениеСуммыЧекаККМ);
	
	ОбновитьФормуНаКлиенте();
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 12.03.22 17:19 Сейчас в теме
(1)
У меня есть мысль поменять код так, что при изменении общей суммы менялась не цена, а именно количество
Что-то мне это напоминает... ну конечно же, классика!
https://www.youtube.com/watch?v=ICqPUwOGnxw
3. uriah 18 12.03.22 18:07 Сейчас в теме
(1)
в базе Розницы 2.3 в РМК есть перерасчет общей суммы товара по ее количеству, но нет обратного процесса, когда по сумме считается количество. Как можно решить данную проблему? У меня есть мысль поменять код так, что при изменении общей суммы менялась не цена, а именно количество

Где логика?
4. Jemosta 12.03.22 18:26 Сейчас в теме
(3) проблема вся в том, что считают товар (топливо) не по литражу как обычно, а по сумме залива. Я посмотрел что с этим можно делать, но по типовому варианту можно только менять количество. Если поменять сумму, то меняется только цена за 1 литр. Например, 20 литров с ценой в 40 руб/литр в сумме 800 рублей. Если я поменяю сумму на 1200 рублей, то поменяется цена (60 руб/литр), а не количество.
5. uriah 18 12.03.22 18:33 Сейчас в теме
(4)
проблема вся в том, что считают товар (топливо) не по литражу как обычно, а по сумме залива. Я посмотрел что с этим можно делать, но по типовому варианту можно только менять количество. Если поменять сумму, то меняется только цена за 1 литр. Например, 20 литров с ценой в 40 руб/литр в сумме 800 рублей.

Теперь понятно для чего это нужно.
Розница базовая или проф?
6. Jemosta 12.03.22 20:29 Сейчас в теме
(5) проф. Мне нужно просто хотя бы логику сие действия понять, а то вообще без понятия в какую сторону копать
7. uriah 18 12.03.22 21:02 Сейчас в теме
(6)
проф. Мне нужно просто хотя бы логику сие действия понять, а то вообще без понятия в какую сторону копать

РМК - это обработка, можно сделать внешнюю обработку, но лучше через расширение дать возможность пересчитывать в строке количество, а
Это код по изменению цены.
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах",
        ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаЦеныСкидкиВПродажахВТЧ(Объект));
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС",
        ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаСуммыНДСВСтрокеТЧ(Объект));
8. namazi74 5 13.03.22 22:53 Сейчас в теме
(6)
проф. Мне нужно просто хотя бы логику сие действия понять, а то вообще без понятия в какую сторону копать


то есть надо разделить сумму товара на цену и вставить это в колонку количества?

там сразу вылезет проблема округления - если можно выставлять с точностью до 0,001 л, то этого может не хватить. если замечали, то на заправках бывает недолив/перелив на 5-10 копеек. то есть в конце программа всё равно округляет до грамма и пересчитывает конечную сумму.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот