|
СКД: проблема с отчетом | ☑ | ||
---|---|---|---|---|
0
slafor
22.12.21
✎
18:37
|
Я уже писал вопросы на эту тему: Проблема с запросом по остаткам . Но тут возникли новые, и их ничуть не меньше.
Общая задача такая. Есть отчет по регистру Партии на складах, у регистра есть измерения Номенклатура и Партия, Партия - это документ поступления, либо Оприходования, либо Перемещения и т.д. Пользователь выбирает период поступлений (допустим, 01.01.2020-31.12.2021), и период продаж (скажем, 01.01.2021-31-12-2021). Это могут быть разные периоды, как вы поняли. В отчет должны попадать только та номенклатура, по которой были поступления за выбранный период (КоличествоПриход). В начальных остатках должны быть остатки только по ной номенклатуре, по которой были поступления за выбранный период поступлений (при этом, понятно, там будут партии, которых нет в главном запросе, на который мы ориентируемся - в запросе по приходам). В конечный остаток тоже попадают только та номенклатура, кпо которой были поступления. Интересный вопрос про расходы - в расход попадает та номенклатура, по которой были приходы, но при этом партии могут быть как до начала выбранного периода поступлений, так и из начального остатка - по партиям, которых в приходе еще нет. Тут более-менее понятно, надо будет выводить какую-то строку с "пустой" партией, которая была до начала периода поступлений, и по ней суммировать все приходы отдельно. Как вы думаете, возможно все это реализовать с помощью СКД, или ну его на фиг, лучше сделать вручную? |
|||
1
azernot
22.12.21
✎
18:43
|
На первый взгляд ничего сложно.
Первым пакетом запроса выбираем номенклатуру, у которой есть "поступления" за указаный период поступлений, складываем во временную таблицу. Вторым пакетом запроса выбираем собственно нужные данные отчёта по номенклатуре из временной таблицы за период продаж. Вуаля. |
|||
2
slafor
22.12.21
✎
18:54
|
(1) ) Я тоже так думал. Но продажи нам нужно показывать не просто за период продаж, и не просто по той номенклатуре, по который есть приходы за период поступлений, но и учитывать при этом начальные остатки на начало периода поступлений, причем делать это разрезе партий - так, если партия входит в период прихода, то и расход показываем по этой партии, а если она стоит в начальных остатках - то мы ее должны написать в какую-то "пустую" партию, потому что она в период поступлений-то не входит (и суммировать их потом?).
|
|||
3
azernot
22.12.21
✎
19:05
|
(2) Звучит как бред какой-то. Это какая-то учебная задача или прикладная? Если прикладная, может лучше саму задачу описать, а не предполагаемый способ решения?
>учитывать при этом начальные остатки на начало периода поступлений Ну и учитывайте, не очень понимаю к чему это обязывает. >а если она стоит в начальных остатках - то мы ее должны написать в какую-то "пустую" партию, потому что она в период поступлений-то не входит Ну во втором запросе проверяйте "дату партии" на вхождение в период поступлений и вместо партии выводите текст "Это не партия, а херня какая-то", с соответсвующей агрегацией. |
|||
4
slafor
22.12.21
✎
19:20
|
(3) Это не бред, а прикладная задача. Всю схему я описал в самом первом сообщении. Мне пока непонятно, как это реализовать.
|
|||
5
azernot
22.12.21
✎
19:28
|
(4) это не сама прикладная задача, это предполагаемый способ её решения, причем описанный очень невнятно. Собственно из-за нечеткого понимантя задачи и происходит непонимние того, как её решать.
|
|||
6
azernot
22.12.21
✎
20:19
|
Выбрать
Номенклатура, Партия Поместить ДанныеОПоступлении Из РегистрНакопления.ПартииНаСкладах.Обороты(&НачалоПериодаПриход, &КонецПериодаПриход) Где КоличествоПриход<>0 ; Выбрать ДанныеОПродажах.Номенклатура, Isnull(ДанныеОПоступлении.Партия, "Это не партия из периода поступления") как Партия Сумма( ДанныеОПродажах.КоличествоРасход) как КоличествоРасход .... Из РегистрНакопления.ПартииНаСкладах.ОстаткиИОбороты(&НачалоПериодаПродажа, &КонецПериодаПродажа, , , Номенклатура в (выбрать различные ДанныеОПоступлении.номенклатура из ДанныеОПоступлении)) КАК ДанныеОПродажах Левое соединение ДанныеОПоступлении По ДанныеОПродажах.номенклатура = ДанныеОПоступлении.Номенклатура И ДанныеОПродажах.Партия =ДанныеОПоступлении.Партия Сгруппировать по ДанныеОПродажах.Номенклатура, Isnull(ДанныеОПоступлении.Партия, "Это не партия из периода поступления") |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |