|
Партийный учет, помогите разобраться, суммирует партии | ☑ | ||
---|---|---|---|---|
0
nickname1c
16.10.14
✎
09:51
|
В регистре накоплений продажи 34000 за брюки это за все 3 партии, по идее в отчете должно быть тоже 34000 но выдает 102000 очевидно тут происходит суммирование, сколько не искал не могу решить эту проблему, день 3=)
КОД В РАСХОДНИКЕ Процедура ОбработкаПроведения(Отказ, РежимПроведения) МетодСписания = РегистрыСведений.МетодСписанияТоваров.ПолучитьПоследнее(Дата).МетодСписания; Если МетодСписания.Пустая()Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не указан метод списания! Проведение не возможно"; Сообщение.Сообщить(); Отказ = Истина; Возврат; КонецЕсли; Движения.Продажи.Записывать = Истина; Движения.Остатки.Записывать = Истина; Движения.Остатки.Записать(); Движения.Продажи.Записать(); Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Остатки"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.ИсточникДанных = Продажи; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); Блокировка.Заблокировать(); ФИФО = МетодСписания = Перечисления.УчетнаяПолитика.ФИФО; ЛИФО = МетодСписания = Перечисления.УчетнаяПолитика.ЛИФО; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяПродажи.Номенклатура КАК Номенклатура, | СУММА(РасходнаяНакладнаяПродажи.Количество) КАК Количество, | МИНИМУМ(РасходнаяНакладнаяПродажи.Сумма) КАК Сумма, | МИНИМУМ(РасходнаяНакладнаяПродажи.НомерСтроки) КАК НомерСтроки, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РасходнаяНакладнаяПродажи.Номенклатура.Услуга) КАК НоменклатураУслуга |ПОМЕСТИТЬ ДокТЧ |ИЗ | Документ.РасходнаяНакладная.Продажи КАК РасходнаяНакладнаяПродажи |ГДЕ | РасходнаяНакладнаяПродажи.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяПродажи.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(ОстаткиОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ОстаткиОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ОстаткиОстатки.Партия КАК Партия, | ДокТЧ.Номенклатура КАК Номенклатура, | ДокТЧ.Количество КАК Количество, | ДокТЧ.Сумма КАК Сумма, | ДокТЧ.НомерСтроки КАК НомерСтроки |ИЗ | ДокТЧ КАК ДокТЧ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ | ДокТЧ.Номенклатура | ИЗ | ДокТЧ КАК ДокТЧ)) КАК ОстаткиОстатки | ПО ДокТЧ.Номенклатура = ОстаткиОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | ОстаткиОстатки.Партия.МоментВремени |ИТОГИ | СУММА(КоличествоОстаток), | МИНИМУМ(СуммаОстаток), | МАКСИМУМ(Количество), | МИНИМУМ(Сумма), | МИНИМУМ(НомерСтроки) |ПО | Номенклатура, | Партия"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени() ); Запрос.УстановитьПараметр("Ссылка", Ссылка); Если МетодСписания = Перечисления.УчетнаяПолитика.ЛИФО Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВОЗР","УБЫВ" ); // если лифо – сортируем по УБЫВанию КонецЕсли; Если МетодСписания = Перечисления.УчетнаяПолитика.ФИФО Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"УБЫВ","ВОЗР" ); // если фифо – сортируем по ВОЗРастанию КонецЕсли; //ФИФО = МетодСписания = Перечисления.УчетнаяПолитика.ФИФО; //ЛИФО = МетодСписания = Перечисления.УчетнаяПолитика.ЛИФО; //// Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток И Выборка.Номенклатура.Услуга = ЛОЖЬ Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает товара """ + Выборка.Номенклатура + """, из необходимых " + Выборка.Количество + " в наличии осталось только " + Выборка.КоличествоОстаток; Сообщение.Поле = "Товары[" + (Выборка.НомерСтроки-1) + "].Количество"; //Товары[3].Количество Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; Движения.Остатки.Записывать = Ложь; КонецЕсли; КонецЦикла; Если Отказ Тогда Возврат; КонецЕсли; Выборка.Сбросить(); Пока Выборка.Следующий() Цикл ОсталосьСписать = Выборка.Количество; ВыборкаПартии = Выборка.Выбрать(); Пока ВыборкаПартии.Следующий() И ОсталосьСписать <> 0 Цикл Списать = Мин(ОсталосьСписать, ВыборкаПартии.КоличествоОстаток); СуммаСписания = ?( ВыборкаПартии.КоличествоОстаток = Списать, ВыборкаПартии.СуммаОстаток, Списать/ ВыборкаПартии.КоличествоОстаток * ВыборкаПартии.СуммаОстаток ); Движения.Остатки.Записывать = Истина; Движение = Движения.Остатки.ДобавитьРасход(); Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Списать; Движение.Сумма = СуммаСписания; Движение.Партия = ВыборкаПартии.Партия; ОсталосьСписать = ОсталосьСписать - Списать; //Движение = Движения.Продажи.Добавить(); //Движение.Период = Дата; //Движение.Номенклатура = Выборка.Номенклатура; //Если Движение.Номенклатура.Услуга = Ложь Тогда //Движение.Количество = Списать; //Движение.Сумма = Выборка.ВыручкаОтПродаж; //Движение.Себестоимость = СуммаСписания; // //Иначе //Движение.Себестоимость = 0; //Движение.Количество = Выборка.Количество; //Движение.Сумма = Выборка.ВыручкаОтПродаж; Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Если Движение.Номенклатура.Услуга = Ложь Тогда Движение.Количество = Списать; Движение.Сумма = Выборка.Сумма; Движение.Себестоимость = СуммаСписания; Иначе Движение.Себестоимость = 0; Движение.Количество = Выборка.Количество; Движение.Сумма = Выборка.Сумма; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Отчет строю по оборотам. ПРОСЬБА писать только по решению проблемы, заранее благодарю |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |