|   |   | 
| 
 | Нарастающий итог и ВычислитьВыражение в СКД | ☑ | ||
|---|---|---|---|---|
| 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 иначе Лимит конец" или другой | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |