|
Нарастающий итог и ВычислитьВыражение в СКД | ☑ | ||
---|---|---|---|---|
0
pessok
06.07.12
✎
16:05
|
Всем доброго времени суток. Рисую простенький отчетик, в котором надо потребность на производство и фактическое списане под него. Нужно вывести нарастающие итоги по периодичности неделя. Усмотрел в СКД прекрасную функцию ВычислитьВыражение, раскурил, попробовал, все отлично, за одним маленьким исключением... Она не суммирует, если в текущем периоде вычисляемое выражение = 0.
Запрос: ВЫБРАТЬ ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, СУММА(ЕСТЬNULL(ВложенныйЗапрос.Лимит, 0)) КАК Лимит, СУММА(ЕСТЬNULL(ВложенныйЗапрос.Отпущено, 0)) КАК Отпущено ИЗ (ВЫБРАТЬ МатериалыВПроизводствеОстаткиИОбороты.Период КАК Период, МатериалыВПроизводствеОстаткиИОбороты.Затрата КАК Номенклатура, МатериалыВПроизводствеОстаткиИОбороты.ХарактеристикаЗатраты КАК ХарактеристикаНоменклатуры, 0 КАК Лимит, СУММА(ЕСТЬNULL(МатериалыВПроизводствеОстаткиИОбороты.КоличествоПриход, 0)) КАК Отпущено ИЗ РегистрНакопления.МатериалыВПроизводстве.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Неделя, , ) КАК МатериалыВПроизводствеОстаткиИОбороты СГРУППИРОВАТЬ ПО МатериалыВПроизводствеОстаткиИОбороты.Затрата, МатериалыВПроизводствеОстаткиИОбороты.ХарактеристикаЗатраты, МатериалыВПроизводствеОстаткиИОбороты.Период ОБЪЕДИНИТЬ ВЫБРАТЬ ПотребностиЗаказовНаПроизводствоОстаткиИОбороты.Период, ПотребностиЗаказовНаПроизводствоОстаткиИОбороты.Номенклатура, ПотребностиЗаказовНаПроизводствоОстаткиИОбороты.ХарактеристикаНоменклатуры, ПотребностиЗаказовНаПроизводствоОстаткиИОбороты.КоличествоПриход, 0 ИЗ РегистрНакопления.ПотребностиЗаказовНаПроизводство.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Неделя, , ) КАК ПотребностиЗаказовНаПроизводствоОстаткиИОбороты) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Период, ВложенныйЗапрос.ХарактеристикаНоменклатуры, ВложенныйЗапрос.Номенклатура УПОРЯДОЧИТЬ ПО Период, Номенклатура, ХарактеристикаНоменклатуры В самой СКД делаю вычисляемое поле КонечныйОстаток ВычислитьВыражение("Сумма(Лимит-Отпущено)", "Период" , ,"Первая", "Текущая") делаю его ресурсом. Все по классике. В отчет вывожу таблицу - в строках Номенклатура/Характеристика, в колонках - Период. По тем периодам, где движение было - прекрасно суммирует, где движения не было - NULL, проверки на NULL вроде быб есть... По логике, я думал, что она возьмет значение предыдущей группировки и прибавит к нему 0, но не тут то было. Куда копать? Заранее спасибо! |
|||
1
pessok
06.07.12
✎
16:19
|
вовремя я, да :) пятница, вечер :)
отложим до понедельника :) |
|||
2
pessok
09.07.12
✎
09:32
|
ну вот и утро понедельника. апну :)
|
|||
3
ChAlex
09.07.12
✎
10:05
|
Попробуй задать явно тип значения функции "число" и значимость
|
|||
4
ChAlex
09.07.12
✎
10:07
|
+(3) Можно еще EСТЬNULL(ВычислитьВыражение("Сумма(Лимит-Отпущено)", "Период" , ,"Первая", "Текущая"),0)
|
|||
5
pessok
09.07.12
✎
10:09
|
(3), (4) пробовал, не взлетает. на этот период совсем нет оборота, и не считает таким образом...
|
|||
6
pessok
09.07.12
✎
10:16
|
(4) даже больше скажу:
EСТЬNULL(ВычислитьВыражение("Сумма(Лимит-Отпущено)", "Период" , ,"Первая", "Текущая"),"ФФФФФФФ") эти самые ФФФФФФФ не выводит. Т.е. в колонке даже не нулл, а хз что... |
|||
7
Bober
09.07.12
✎
11:51
|
попробуй тогда такую вещь как дополнение периода
|
|||
8
IVT_2009
09.07.12
✎
12:13
|
Проблема аналогичная , есть взаиморасчеты . Если нет движения в периоде - то почему то начинает начальный остаток терять. Как решить ? (Дополнение - Движение и граница периода)
|
|||
9
acsent
09.07.12
✎
12:17
|
ВычислитьВыражение("Сумма(EСТЬNULL(Лимит-Отпущено, 0))", "Период" , ,"Первая", "Текущая")
|
|||
10
pessok
09.07.12
✎
12:46
|
(7), (8) не помогло :(
(8) тоже не помогло З.Ы. Пробовал прицеплять к производственному календарю обороты и, проверяя на нулл, писать нули, но тоже не выводит |
|||
11
pessok
09.07.12
✎
13:24
|
разобрался. идея такая:
берем таблицу с периодами, например производственный календарь. к ней по периоду, левым соединением, цепляем таблицу номенклатуры (без оборотов!) из виртуальной таблицы ОстаткиИОбороты. Все это запихиваем во вложенный запрос. Второй вложенный запрос - все тоже самое, но уже добавляем обороты по периодам. К первому вложенному запросу присоединяем левым соединением второй, по номенклатуре, характеристике, периоду. У меня взлетело! |
|||
12
Bober
09.07.12
✎
13:38
|
(11) попробуй тогда такой вариант
|
|||
13
Bober
10.07.12
✎
20:10
|
(11) как вариант:
закрой пользовательский доступ к полю-ресурс из набора и создай свое вычисляемое поле с выражением "ВЫБОР КОГДА Лимит есть null тогда 0 иначе Лимит конец" или другой |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |