Распределение суммы по суммам со скидкой. УНФ 1.6

Клиент обратился с проблемой, что при попытке распределить сумму на позиции в заказе покупателя сумма не увеличивается, а уменьшается.

Пример: 8 штук по 5.000 тысяч, скидка 30%. Сумма без скидки 40.000, сумма со скидкой 28.000:

При распределении 10.000 рублей должна получиться сумма 38.000.

Нажимаем Еще — Изменить, вводим сумму, нажимаем Выполнить:

Получаем сумму 26.600 и цену 4750:

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

Потому что сумма получается 50.000 (40.000 + 10.000) — 30% = 35.000.

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

Доработка в модуль ГрупповоеИзменениеСтрокСервер выглядит так:


&Перед("ОбработатьТаблицу")
Процедура ТР_ОбработатьТаблицу(ЭтаФорма, Таблица, Действие, ОбъектДействия, Значение, ИмяЭлементаНоменклатура, ПараметрыОтбора)
	
	//Корректируем распределение сумм
	Если Значение <> Неопределено 
		И Действие = ПредопределенноеЗначение("Перечисление.ДействияГрупповогоИзмененияСтрок.РаспределитьСуммуПоСуммам")
		Тогда
		Для каждого Строка Из Таблица Цикл
			
			Если НЕ Строка.Пометка Тогда
				Продолжить;
			КонецЕсли;        
			
			Попытка
				СуммаСкидкиНаценки = Строка.СуммаСкидкиНаценки;
				СуммаВсего = Строка.Всего
			Исключение
				СуммаСкидкиНаценки = Неопределено;
			КонецПопытки;     
			
			//Если есть колонка заказ покупателя
			Если СуммаСкидкиНаценки = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			
			Строка.Сумма = СуммаВсего + СуммаСкидкиНаценки; //Чтобы распределялось относительно ВСЕГО
			
		КонецЦикла;
	КонецЕсли;        
КонецПроцедуры

Среда: УНФ 1.6.26.172. Объем: 1 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *