Вопрос СКД итоги объединение двух таблиц
Здравствуйте. УТ 10.3 Вопрос следующий:
Отчет на СКД, необходимо получить % возврата относительно продаж.
В первую таблицу собираю возвраты за период по табличной части документа "ВозвратТоваровОтПокупателя": номенклатура, ПричинаВозврата, количество, сумма. Группирую по Номенклатура и ПричинаВозврата.
Во вторую таблицу собираю Продажи за период: номенклатура, количество, сумма. Группирую по номенклатура.
В итоге, если несколько причин возврата номенклатуры, то % нужен по каждой (от общего количества продажи). Как правильно получить итог по количеству продаж (по номенклатура и общий итог по колонке) без задваивания, скрин прилагаю?
Отчет на СКД, необходимо получить % возврата относительно продаж.
В первую таблицу собираю возвраты за период по табличной части документа "ВозвратТоваровОтПокупателя": номенклатура, ПричинаВозврата, количество, сумма. Группирую по Номенклатура и ПричинаВозврата.
Во вторую таблицу собираю Продажи за период: номенклатура, количество, сумма. Группирую по номенклатура.
ВЫБРАТЬ
ВозвратТоваровОтПокупателяТовары.ПричинаВозврата,
ВозвратТоваровОтПокупателяТовары.Номенклатура,
СУММА(ВозвратТоваровОтПокупателяТовары.Сумма) КАК ВозвратСумма,
СУММА(ВозвратТоваровОтПокупателяТовары.Количество) КАК ВозвратКоличество
ПОМЕСТИТЬ Возврат
ИЗ
Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
ГДЕ
ВозвратТоваровОтПокупателяТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И ВозвратТоваровОтПокупателяТовары.Ссылка.Проведен
СГРУППИРОВАТЬ ПО
ВозвратТоваровОтПокупателяТовары.ПричинаВозврата,
ВозвратТоваровОтПокупателяТовары.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПродажиОбороты.Номенклатура,
СУММА(ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0)) КАК ПродажаКоличество,
СУММА(ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0)) КАК ПродажаСумма
ПОМЕСТИТЬ Продажа
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ПродажиОбороты
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Возврат.Номенклатура КАК Номенклатура,
Возврат.ПричинаВозврата,
Возврат.ВозвратСумма,
Возврат.ВозвратКоличество,
ЕСТЬNULL(Продажа.ПродажаКоличество, 0) КАК ПродажаКоличество,
ЕСТЬNULL(Продажа.ПродажаСумма, 0) КАК ПродажаСумма,
ВЫБОР
КОГДА Продажа.ПродажаКоличество <> 0
ТОГДА Возврат.ВозвратКоличество * 100 / Продажа.ПродажаКоличество
КОНЕЦ КАК ПроцентКоличество,
ВЫБОР
КОГДА Продажа.ПродажаСумма <> 0
ТОГДА Возврат.ВозвратСумма * 100 / Продажа.ПродажаСумма
КОНЕЦ КАК ПроцентСумма
ИЗ
Возврат КАК Возврат
ЛЕВОЕ СОЕДИНЕНИЕ Продажа КАК Продажа
ПО Возврат.Номенклатура = Продажа.Номенклатура
УПОРЯДОЧИТЬ ПО
Номенклатура
ПоказатьВ итоге, если несколько причин возврата номенклатуры, то % нужен по каждой (от общего количества продажи). Как правильно получить итог по количеству продаж (по номенклатура и общий итог по колонке) без задваивания, скрин прилагаю?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(1) На мой взгляд, самым простым и самым корректным способом является разбиение исходного запроса на два набора данных:
- основной с выборкой возвратов;
- дополнительный с выборкой продаж.
Далее необходимо связать эти наборы данных на закладке "Связи" СКД по полю "Номенклатура" и добавить вычисляемые поля для расчета процентов возврата.
- основной с выборкой возвратов;
- дополнительный с выборкой продаж.
Далее необходимо связать эти наборы данных на закладке "Связи" СКД по полю "Номенклатура" и добавить вычисляемые поля для расчета процентов возврата.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) На мой взгляд, самым простым и самым корректным способом является разбиение исходного запроса на два набора данных:
- основной с выборкой возвратов;
- дополнительный с выборкой продаж.
Далее необходимо связать эти наборы данных на закладке "Связи" СКД по полю "Номенклатура" и добавить вычисляемые поля для расчета процентов возврата.
- основной с выборкой возвратов;
- дополнительный с выборкой продаж.
Далее необходимо связать эти наборы данных на закладке "Связи" СКД по полю "Номенклатура" и добавить вычисляемые поля для расчета процентов возврата.
(1) вы используете скд, а процент пытаетесь посчитать в запросе - это не камильфо... посмотрите функцию вычислитьвыражение, используйте для процента вычисляемое поле
что-то типа такого должно быть : Сумма(Продажи.СуммаОборот)/Вычислить("Сумма(Продажи.СуммаОборот)", "Номенклатура")
что-то типа такого должно быть : Сумма(Продажи.СуммаОборот)/Вычислить("Сумма(Продажи.СуммаОборот)", "Номенклатура")
(19) Так ведь она и не должна. У Вас же продажи есть только в разрезе номенклатуры, но без детализации до причин возврата.
Смотрите сами. Пусть Вы продали 100 стульев. Из них 5 вернули бракованных, а от 10 отказались. В итоге в отчете должны быть 2 строки:
- причина - брак, возврат - 5, продано 100;
- причина - отказ, возврат - 10, продано 100.
Как видите в обоих строках стоит "продано 100", т.к. это одна и та же номенклатура. И в сумме это даст 200, но в общем итоге все равно должно быть число 100, т.к. продали то лишь 100 стульев, а не 200.
Смотрите сами. Пусть Вы продали 100 стульев. Из них 5 вернули бракованных, а от 10 отказались. В итоге в отчете должны быть 2 строки:
- причина - брак, возврат - 5, продано 100;
- причина - отказ, возврат - 10, продано 100.
Как видите в обоих строках стоит "продано 100", т.к. это одна и та же номенклатура. И в сумме это даст 200, но в общем итоге все равно должно быть число 100, т.к. продали то лишь 100 стульев, а не 200.
(14) Рекомендую в ресурсах выражение вычисления процентов записывать не как сумма процентов, а как отношение суммы возврата к сумме продажи. Т.е. аналогично тому, как это записано непосредственно в самом вычисляемом поле:
В этом случае не будет необходимости заполнять колонку "Рассчитывать по...", и в общем итоге, и в прочих других группировках процент будет рассчитан корректно.
Аналогично можно сделать и для количества, но тут камнем преткновения может стать единица измерения.
ВЫБОР
КОГДА ЕСТЬNULL(Сумма(ПродажаСумма), 0) <> 0
ТОГДА Сумма(ВозвратСумма) / Сумма(ПродажаСумма) * 100
ИНАЧЕ 0
КОНЕЦ
Аналогично можно сделать и для количества, но тут камнем преткновения может стать единица измерения.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот