| 
    
        
     
     | 
    
  | 
УПП. Скидки и сумма на основании заказа | ☑ | ||
|---|---|---|---|---|
| 
    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 Тогда СП =Новый Структура; СП.Вставить("Номенклатура", стр.Номенклатура); СП.Вставить("Количество", стр.КоличествоЗаказа); мс =Объект.Товары.НайтиСтроки(СП); Для каждого эл из мс Цикл эл.СуммаРучнойСкидки = эл.СуммаРучнойСкидки+стр.Разница; СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект); СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки"); СтруктураДействий.Вставить("ПересчитатьСумму"); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь)); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь)); СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов"); СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты()); СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару", Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару)); ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(эл, СтруктураДействий, КэшированныеЗначения); ПродажиКлиентСервер.РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры Не знаю, подойдет ли.  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |