Помогите пожалуйста с отчетом , хотелось бы сделать его на СКД , с сожалению я не очень хорошо умею делать отчеты в СКД
Тут надо в одной строке показать заказ , это я смогу, но в этой же строке надо расположить и номенклатуру к этому заказу.
Cделать в СКД просто выбрать документы Документ.ЗаказКлиента тут представляю, как выбрать Документ.ЗаказКлиента.Товары тоже понятно. А вот как соединить эти две выборки красиво так как это показано в описании , не представляю :(
Вот пример , файл в EXCEL
(18) это настраивается отдельно формой расчета на закладке ресурса. Для каждого разреза можно свою формулу использовать. Для общего итога тоже.
Но цену суммировать... Обычно цену не суммируют, ибо цифра бессмысленная.
(19)
Только что получилось!
просто переделала сам запрос :) и цена за доставку попадает правильно и суммируется теперь прекрасно
Если в самом начале данные выбрать правильно , потом не придется в СКД возится.
Вам огромное спасибо научили с СКД красиво строить отчеты.
ВЫБРАТЬ
ЗаказКлиентаТовары.Ссылка.Дата КАК Период,
ЗаказКлиентаТовары.Ссылка КАК ЗаказКлиента,
ЗаказКлиентаТовары.Ссылка.Склад КАК Склад,
ЗаказКлиентаТовары.Ссылка.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки,
ЗаказКлиентаТовары.Номенклатура.Код КАК НоменклатураКод,
ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
ЗаказКлиентаТовары.Количество КАК Количество,
ЗаказКлиентаТовары.Цена КАК Цена,
ЗаказКлиентаТовары.CV_ЦенаYM КАК ЦенаYM,
0 КАК Вознаграждение,
ВЫБОР
КОГДА ВТ_ПродажиТовары.НомерСтроки = 1 ///// ПО КАЖДОМУ ЗАКАЗУ ЦЕНА По доставке одна
ТОГДА &ЦенаДоставки * 1
ИНАЧЕ 0
КОНЕЦ КАК РасходыПоДоставке,
ЗаказКлиентаТовары.yz_ЦенаYandexMarket / 100 * &БанковскаяКомиссия * 1 КАК Комиссия,
ЗаказКлиентаТовары.yz_ЦенаYandexMarket / 100 * &ПроцентРазмещение * 1 КАК Размещение
ПОМЕСТИТЬ ВТ_ПродажиТовары
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
ЗаказКлиентаТовары.Ссылка.Проведен = ИСТИНА
И ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И ЗаказКлиентаТовары.Ссылка.Склад В(&Склады)
И ЗаказКлиентаТовары.Ссылка.Менеджер = &Менеджер
И ЗаказКлиентаТовары.Номенклатура.Наименование <> "Доставка заказа из магазина"
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВложенныйЗапрос.Период КАК Период,
ВложенныйЗапрос.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыПоставщиков.Цена КАК ЦенаЗакупки
ПОМЕСТИТЬ ВТ_Цены
ИЗ
(ВЫБРАТЬ
ВТ_ПродажиТовары.Период КАК Период,
ВТ_ПродажиТовары.Номенклатура КАК Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыПоставщиков.Период) КАК Период1
ИЗ
ВТ_ПродажиТовары КАК ВТ_ПродажиТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ПО ВТ_ПродажиТовары.Период > ЦеныНоменклатурыПоставщиков.Период
И ВТ_ПродажиТовары.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
И (ЦеныНоменклатурыПоставщиков.Партнер = &Франчайзер)
И (ЦеныНоменклатурыПоставщиков.ВидЦеныПоставщика = &ВидЦеныФранчайзера)
СГРУППИРОВАТЬ ПО
ВТ_ПродажиТовары.Период,
ВТ_ПродажиТовары.Номенклатура) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ПО ВложенныйЗапрос.Период1 = ЦеныНоменклатурыПоставщиков.Период
И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
И (ЦеныНоменклатурыПоставщиков.Партнер = &Франчайзер)
И (ЦеныНоменклатурыПоставщиков.ВидЦеныПоставщика = &ВидЦеныФранчайзера)
ИНДЕКСИРОВАТЬ ПО
Период,
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПродажиТовары.Период КАК Период,
ВТ_ПродажиТовары.ЗаказКлиента КАК ЗаказКлиента,
ВТ_ПродажиТовары.Склад КАК Склад,
ВТ_ПродажиТовары.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ВТ_ПродажиТовары.НоменклатураКод КАК НоменклатураКод,
ВТ_ПродажиТовары.Номенклатура КАК Номенклатура,
ВТ_ПродажиТовары.Количество КАК Количество,
ВТ_ПродажиТовары.Цена КАК Цена,
ВТ_ПродажиТовары.ЦенаYM КАК ЦенаYM,
ВТ_Цены.ЦенаЗакупки КАК ЦенаЗакупки,
ВТ_ПродажиТовары.РасходыПоДоставке КАК РасходыПоДоставке,
ВТ_ПродажиТовары.ЦенаYM * ВТ_ПродажиТовары.Количество - ВТ_Цены.ЦенаЗакупки * ВТ_ПродажиТовары.Количество КАК Вознаграждение,
ВТ_ПродажиТовары.Комиссия КАК Комиссия,
ВТ_ПродажиТовары.Размещение КАК Размещение
ИЗ
ВТ_ПродажиТовары КАК ВТ_ПродажиТовары
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
ПО ВТ_ПродажиТовары.Период = ВТ_Цены.Период
И ВТ_ПродажиТовары.Номенклатура = ВТ_Цены.Номенклатура
(8) да - внешне получилось - но с расчетами не получается. Ячейки делает невидимыми но значения в ячейках остаются и например за доставку 125 суммируется как 250, потому что ячейка скрыта только визуально.
И кроме того прибыль надо считать как описала на скриншоте в сообщении 9.
(7) Внешне все получилось красиво, но вот с расчетами проблема.
В моем примере видно что доставка по одному заказу должна быть 125
Я все сделала по примеру с видео, но в случае когда в заказе две позиции суммирует как 250 , если три 375 и так далее.
Пример на скриншоте видно, что 125 визуально ушла , но в данных видно осталась и сумма по столбцу идет как 250 , хотя должна быть один раз 125, при этом строка прибыли для строк где более чем 1 позиция считается не верно :(
мне надо суммировать строки с вознаграждением.
Видимо нужно писать постобработку ? с постобработками тоже работала.
(11) Да да, верно спасибо, остается теперь разобраться как это сделать согласно моего 6 поста т е по каждому заказу только один раз по 125 , при этом в выборке 125 фигурирует не по количеству заказов а по количеству номенклатуры. Конечно идеально на уровне запроса отбросить
(18) это настраивается отдельно формой расчета на закладке ресурса. Для каждого разреза можно свою формулу использовать. Для общего итога тоже.
Но цену суммировать... Обычно цену не суммируют, ибо цифра бессмысленная.
(19) Цена за доставку , просто назвали неудачно , по сути это расходы по доставке и менеджеру нужно видеть расходы за период.
Тут придется в любом случае.
(19) Просто неверный термин ЦенаДоставки правильней назвать РасходыПоДоставке , постановщик задачи просит это поле суммировать, так как хочет видеть расходы по доставке за периоды и в разрезе складов. Благодаря вам и другим коллегам погрузилась в мир СКД :-) , спасибо большое.
Получилось посчитать прибыль верно :
Вычисляемые поля
Путь К данным: Прибыль Выражение: ВычислитьВыражение("Сумма(Вознаграждение)-(Сумма(Комиссия)+Сумма(Размещение))", "ЗаказКлиента")-ЦенаДоставки
тут Затраты на доставку т е (ЦенаДоставки) при такой формуле берется один раз теперь
в ресурсах:
Поле: (fx) Прибыль Выражение: Сумма(Прибыль)
Остается только правильно просуммировать Затраты на доставку т.е. поле (ЦенаДоставки)
(19)
Только что получилось!
просто переделала сам запрос :) и цена за доставку попадает правильно и суммируется теперь прекрасно
Если в самом начале данные выбрать правильно , потом не придется в СКД возится.
Вам огромное спасибо научили с СКД красиво строить отчеты.
ВЫБРАТЬ
ЗаказКлиентаТовары.Ссылка.Дата КАК Период,
ЗаказКлиентаТовары.Ссылка КАК ЗаказКлиента,
ЗаказКлиентаТовары.Ссылка.Склад КАК Склад,
ЗаказКлиентаТовары.Ссылка.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки,
ЗаказКлиентаТовары.Номенклатура.Код КАК НоменклатураКод,
ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
ЗаказКлиентаТовары.Количество КАК Количество,
ЗаказКлиентаТовары.Цена КАК Цена,
ЗаказКлиентаТовары.CV_ЦенаYM КАК ЦенаYM,
0 КАК Вознаграждение,
ВЫБОР
КОГДА ВТ_ПродажиТовары.НомерСтроки = 1 ///// ПО КАЖДОМУ ЗАКАЗУ ЦЕНА По доставке одна
ТОГДА &ЦенаДоставки * 1
ИНАЧЕ 0
КОНЕЦ КАК РасходыПоДоставке,
ЗаказКлиентаТовары.yz_ЦенаYandexMarket / 100 * &БанковскаяКомиссия * 1 КАК Комиссия,
ЗаказКлиентаТовары.yz_ЦенаYandexMarket / 100 * &ПроцентРазмещение * 1 КАК Размещение
ПОМЕСТИТЬ ВТ_ПродажиТовары
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
ЗаказКлиентаТовары.Ссылка.Проведен = ИСТИНА
И ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И ЗаказКлиентаТовары.Ссылка.Склад В(&Склады)
И ЗаказКлиентаТовары.Ссылка.Менеджер = &Менеджер
И ЗаказКлиентаТовары.Номенклатура.Наименование <> "Доставка заказа из магазина"
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВложенныйЗапрос.Период КАК Период,
ВложенныйЗапрос.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыПоставщиков.Цена КАК ЦенаЗакупки
ПОМЕСТИТЬ ВТ_Цены
ИЗ
(ВЫБРАТЬ
ВТ_ПродажиТовары.Период КАК Период,
ВТ_ПродажиТовары.Номенклатура КАК Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыПоставщиков.Период) КАК Период1
ИЗ
ВТ_ПродажиТовары КАК ВТ_ПродажиТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ПО ВТ_ПродажиТовары.Период > ЦеныНоменклатурыПоставщиков.Период
И ВТ_ПродажиТовары.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
И (ЦеныНоменклатурыПоставщиков.Партнер = &Франчайзер)
И (ЦеныНоменклатурыПоставщиков.ВидЦеныПоставщика = &ВидЦеныФранчайзера)
СГРУППИРОВАТЬ ПО
ВТ_ПродажиТовары.Период,
ВТ_ПродажиТовары.Номенклатура) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ПО ВложенныйЗапрос.Период1 = ЦеныНоменклатурыПоставщиков.Период
И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
И (ЦеныНоменклатурыПоставщиков.Партнер = &Франчайзер)
И (ЦеныНоменклатурыПоставщиков.ВидЦеныПоставщика = &ВидЦеныФранчайзера)
ИНДЕКСИРОВАТЬ ПО
Период,
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПродажиТовары.Период КАК Период,
ВТ_ПродажиТовары.ЗаказКлиента КАК ЗаказКлиента,
ВТ_ПродажиТовары.Склад КАК Склад,
ВТ_ПродажиТовары.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ВТ_ПродажиТовары.НоменклатураКод КАК НоменклатураКод,
ВТ_ПродажиТовары.Номенклатура КАК Номенклатура,
ВТ_ПродажиТовары.Количество КАК Количество,
ВТ_ПродажиТовары.Цена КАК Цена,
ВТ_ПродажиТовары.ЦенаYM КАК ЦенаYM,
ВТ_Цены.ЦенаЗакупки КАК ЦенаЗакупки,
ВТ_ПродажиТовары.РасходыПоДоставке КАК РасходыПоДоставке,
ВТ_ПродажиТовары.ЦенаYM * ВТ_ПродажиТовары.Количество - ВТ_Цены.ЦенаЗакупки * ВТ_ПродажиТовары.Количество КАК Вознаграждение,
ВТ_ПродажиТовары.Комиссия КАК Комиссия,
ВТ_ПродажиТовары.Размещение КАК Размещение
ИЗ
ВТ_ПродажиТовары КАК ВТ_ПродажиТовары
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
ПО ВТ_ПродажиТовары.Период = ВТ_Цены.Период
И ВТ_ПродажиТовары.Номенклатура = ВТ_Цены.Номенклатура
(5)
Извините , наверно плохо оформила вопрос.
Все верно, сам запрос к товарам понятно как написать, вопрос в том как в СКД вывести так как показано на второй части скриншота
Первая таблица это собственно результаты запроса к таблице товаров, чуть ниже второй , то как нужно его показать в отчете.
Вот именно это я не знаю как реализовать на СКД.
(6)
Теперь понял. А почему не группировкой по документам, а именно объединением ячеек?
А если в документе полторы тысячи строк - будет одна БООЛЬШАЯ ЯЧЕИЩА?
Плюсики же гораздо функциональнее, как мне кажется.
(12) На практике в заказе позиций в основном 1 иногда 2 - 3 , даже если 100 тогда да , большая ячеица :)
Меня полностью не спасло решение п.7 от spacecraft :( хотя оно красивое, .
Мне нужно еще итоги правильно считать и ячейку с прибылью собирать корректно.
Группировкой ?
вот сам запрос - результаты которого в посте 6 верхняя часть таблицы, мне надо показать по номенклатуре все позиции и цены.
ВЫБРАТЬ
ЗаказКлиентаТовары.Ссылка КАК СсылкаЗаказКлиента,
ЗаказКлиентаТовары.Ссылка.Дата КАК Период,
ЗаказКлиентаТовары.Ссылка.Склад КАК Склад,
ЗаказКлиентаТовары.Ссылка.СуммаДокумента КАК СуммаДокумента,
ЗаказКлиентаТовары.Ссылка.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки,
ЗаказКлиентаТовары.Номенклатура.Код КАК НоменклатураКод,
ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
ЗаказКлиентаТовары.Количество КАК Количество,
ЗаказКлиентаТовары.Цена КАК Цена,
ЗаказКлиентаТовары.ЦенаYandexMarket КАК ЦенаYM,
&ЦенаДоставки*1 КАК ЦенаДоставки,
(ЗаказКлиентаТовары.Ссылка.СуммаДокумента / 100) * &ПроцентБанковскаяКомиссия*1 КАК Банковскаякомиссия,
(ЗаказКлиентаТовары.Ссылка.СуммаДокумента / 100) * &ПроцентРазмещение*1 КАК Размещение
ПОМЕСТИТЬ ВТ_ПродажиТовары
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
ЗаказКлиентаТовары.Ссылка.Проведен = ИСТИНА
И ЗаказКлиентаТовары.Ссылка.Дата >= &НачалоПериода
И ЗаказКлиентаТовары.Ссылка.Дата <= &КонецПериода
И ЗаказКлиентаТовары.Ссылка.Склад В(&Склады)
И ЗаказКлиентаТовары.Ссылка.Менеджер = &YMМенеджкр
И ЗаказКлиентаТовары.Номенклатура.Наименование <> "Доставка заказа из магазина"
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВложенныйЗапрос.Период КАК Период,
ВложенныйЗапрос.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыПоставщиков.ЦенаП КАК ЦенаП
ПОМЕСТИТЬ ВТ_Цены
ИЗ
(ВЫБРАТЬ
ВТ_ПродажиТовары.Период КАК Период,
ВТ_ПродажиТовары.Номенклатура КАК Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыПоставщиков.Период) КАК Период1
ИЗ
ВТ_ПродажиТовары КАК ВТ_ПродажиТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ПО ВТ_ПродажиТовары.Период > ЦеныНоменклатурыПоставщиков.Период
И ВТ_ПродажиТовары.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
И (ЦеныНоменклатурыПоставщиков.Партнер = &Франчайзер)
И (ЦеныНоменклатурыПоставщиков.ВидЦеныПоставщика = &ВидЦеныФранчайзера)
СГРУППИРОВАТЬ ПО
ВТ_ПродажиТовары.Период,
ВТ_ПродажиТовары.Номенклатура) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ПО ВложенныйЗапрос.Период1 = ЦеныНоменклатурыПоставщиков.Период
И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
И (ЦеныНоменклатурыПоставщиков.Партнер = &Франчайзер)
И (ЦеныНоменклатурыПоставщиков.ВидЦеныПоставщика = &ВидЦеныФранчайзера)
ИНДЕКСИРОВАТЬ ПО
Период,
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПродажиТовары.Период КАК День,
ВТ_ПродажиТовары.СсылкаЗаказКлиента КАК СсылкаЗаказКлиента,
ВТ_ПродажиТовары.Склад КАК Склад,
ВТ_ПродажиТовары.СуммаДокумента КАК СуммаДокумента,
ВТ_ПродажиТовары.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ВТ_ПродажиТовары.НоменклатураКод КАК НоменклатураКод,
ВТ_ПродажиТовары.Номенклатура КАК Номенклатура,
ВТ_ПродажиТовары.Количество КАК Количество,
ВТ_ПродажиТовары.Цена КАК Цена,
ВТ_ПродажиТовары.ЦенаYM КАК ЦенаYM,
ВТ_Цены.ЦенаП КАК ЦенаЗакупки,
ВТ_ПродажиТовары.ЦенаYM * ВТ_ПродажиТовары.Количество - ВТ_Цены.ЦенаП * ВТ_ПродажиТовары.Количество КАК Вознаграждение,
ВТ_ПродажиТовары.ЦенаДоставки КАК ЦенаДоставки,
ВТ_ПродажиТовары.Банковскаякомиссия КАК Банковскаякомиссия,
ВТ_ПродажиТовары.Размещение КАК Размещение,
(ВТ_ПродажиТовары.ЦенаYM * ВТ_ПродажиТовары.Количество - ВТ_Цены.ЦенаП * ВТ_ПродажиТовары.Количество)-ВТ_ПродажиТовары.ЦенаДоставки-ВТ_ПродажиТовары.Банковскаякомиссия-ВТ_ПродажиТовары.Размещение КАК Прибыль
ИЗ
ВТ_ПродажиТовары КАК ВТ_ПродажиТовары
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
ПО ВТ_ПродажиТовары.Период = ВТ_Цены.Период
И ВТ_ПродажиТовары.Номенклатура = ВТ_Цены.Номенклатура