|
УПП. Скидки и сумма на основании заказа | ☑ | ||
---|---|---|---|---|
0
MAPATNK2
naïve
11.11.20
✎
16:00
|
Всем доброго дня. Есть заказ в котором нельзя редактировать цены. Корректирую сумму, получаю ручную скидку, далее Делаю Реализацию на основании заказа покупателя. И вот счастье, совсем другая сумма. Я понимаю, это все из за округлений, но это ж бред. Все менеджеры теперь должны постоянно перепроверять совпадают ли суммы реализации с заказом.
Есть ли какой метод решения. Хотел залезть, убрать пересчет сумм, вместо него вставить сумму из заказа, но запутался, так наворочено все. ППц просто. |
|||
1
MAPATNK2
naïve
12.11.20
✎
10:31
|
UP
|
|||
2
MAPATNK2
naïve
12.11.20
✎
10:33
|
Убрал пересчет сумм, поставил заполнение на основании заказа. Вот только проблема появилась. Если делать заказ с 2 одинаковыми позициями и, например, разными ценами или размещением, то в сумму реализации попадет сумма не 1 позиции, а двух. Видимо идет свертка тупо по номенклатур с суммой цен. ППц.
|
|||
3
MAPATNK2
naïve
12.11.20
✎
10:35
|
Как я понял, если хочешь, чтобы все было красиво, нужно стандартный запрос переделывать. Не силен я в запросах конечно, беда.
Может какие то стандартные решения есть, методы? Механизм типовой, значит проблема с ручными скидками и пересчетом сумм есть у всех. Кто как решал? |
|||
4
Черников
12.11.20
✎
14:29
|
Лучше не трогай! Кто только не пытался это переделать, но сделать лучше не удалось! По мне так, проблема с округлениями не разрешима.
|
|||
5
MAPATNK2
naïve
12.11.20
✎
14:39
|
(4) XD. Да, вот сижу и думаю о том же.
|
|||
6
Михаил Козлов
13.11.20
✎
10:10
|
В КА 2.4 коллега пилил.
|
|||
7
MAPATNK2
naïve
14.11.20
✎
22:31
|
(6) и как?
|
|||
8
Михаил Козлов
14.11.20
✎
22:42
|
Завтра спрошу.
|
|||
9
MAPATNK2
naïve
14.11.20
✎
22:48
|
(8) спасибо
|
|||
10
Михаил Козлов
15.11.20
✎
12:30
|
Вот нашел в расширении, вызывается в событии формы ПередЗаписьюПосле.
Процедура НайтиИИсправитьРасхожденияСумм() КэшированныеЗначения =неопределено; Запрос =Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, | ЗаказКлиентаТовары.СуммаСНДС КАК СуммаСНДС, | ЗаказКлиентаТовары.Количество КАК Количество |ПОМЕСТИТЬ ЗК |ИЗ | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары |ГДЕ | ЗаказКлиентаТовары.Ссылка = &Заказ | И ЗаказКлиентаТовары.Отменено = ЛОЖЬ | И ЗаказКлиентаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РН.Номенклатура КАК Номенклатура, | РН.СуммаСНДС КАК СуммаСНДС, | РН.Количество КАК Количество |ПОМЕСТИТЬ РН |ИЗ | &РН КАК РН |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗК.Номенклатура КАК Номенклатура, | ЗК.Количество КАК КоличествоЗаказа, | ЗК.СуммаСНДС КАК СуммаЗаказа, | ЕСТЬNULL(РН.Количество, 0) КАК КоличествоРеализации, | ЕСТЬNULL(РН.СуммаСНДС, 0) КАК СуммаРеализации, | ЕСТЬNULL(РН.СуммаСНДС, 0) -ЗК.СуммаСНДС КАК Разница |ИЗ | ЗК КАК ЗК | ЛЕВОЕ СОЕДИНЕНИЕ РН КАК РН | ПО ЗК.Номенклатура = РН.Номенклатура И ЗК.Количество = РН.Количество"; Запрос.УстановитьПараметр("Заказ", Объект.ЗаказКлиента); Запрос.УстановитьПараметр("РН", Объект.Товары.Выгрузить()); ТЗ =Запрос.Выполнить().Выгрузить(); Для каждого стр из ТЗ Цикл Если стр.Разница<>0 Тогда СП =Новый Структура; СП.Вставить("Номенклатура", стр.Номенклатура); СП.Вставить("Количество", стр.КоличествоЗаказа); мс =Объект.Товары.НайтиСтроки(СП); Для каждого эл из мс Цикл эл.СуммаРучнойСкидки = эл.СуммаРучнойСкидки+стр.Разница; СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект); СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки"); СтруктураДействий.Вставить("ПересчитатьСумму"); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь)); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь)); СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов"); СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты()); СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару", Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару)); ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(эл, СтруктураДействий, КэшированныеЗначения); ПродажиКлиентСервер.РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры Не знаю, подойдет ли. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |