Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В отчете вывести нули при отсуствии даных
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
candrey
Добрый день 1с 8.2 УТП

Есть запрос в СКД далее формируется сам отчет.
Сама проблема если есть данные в РегистрНакопления.ДвиженияДенежныхСредств то отчет формируется отлично Типа такой таблицы

Дата Организация ГСМР

05.08.2016 0:00:00 Вася )
02.08.2016 0:00:00 Вася ) 1 000,00

Если нету данных то отчета нету. Нужно что бы выводило нули вместо пустых ячеек и эти нули имели тип число, что бы можно было с ними работать (При добавлении колонок рядом). Как я понимаю проблема в строке кода "ИНАЧЕ 0" пробовал на "ИНАЧЕ NULL" тот же результат нули не выводятся.

Как быть помогите советом.

ВЫБРАТЬ
   Даты.ДатаДляОтчета КАК Дата,
   ДвиженияДенежныхСредствОбороты.Организация КАК Организация,
   СУММА(ВЫБОР
         КОГДА ДвиженияДенежныхСредствОбороты.Период = Даты.ДатаДляОтчета
            ТОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот
         ИНАЧЕ 0
      КОНЕЦ) КАК ГСМП
ИЗ
   РегистрНакопления.ДвиженияДенежныхСредств.Обороты(
         &НачалоПериода,
         &КонецПериода,
         День,
         ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
            И СтатьяДвиженияДенежныхСредств.Код = "00016") КАК ДвиженияДенежныхСредствОбороты,
   РегистрСведений.ДатыДляОтчета КАК Даты
ГДЕ
   Даты.ДатаДляОтчета МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
   ДвиженияДенежныхСредствОбороты.Организация,
   Даты.ДатаДляОтчета



 ! 

необходимо зарегистрироваться для просмотра ссылки: 3
 


candrey @ Сегодня, 12:43 необходимо зарегистрироваться для просмотра ссылки,

В оформлении настроить ЧН=0 не выход. т.к я потом отнимаю эту колонку и пустоту этих строк(Нули) формула не воспринимает. А нужно что бы понимало что это число
Petre
Цитата(candrey @ 05.08.16, 13:30) необходимо зарегистрироваться для просмотра ссылки
т.к я потом отнимаю эту колонку и пустоту этих строк(Нули) формула не воспринимает.

Как вы это делаете. Т. е. "какие ваши доказательства"?
sava1
Сделать вычисляемое поле
Нонна
Еще можно настроить это поле : колонка оформление , формат ЧН=0.
XBrut
В віртуальній таблиці регістру є параметр "мєтод дополнєнія" який саме керує поведінкою запиту, коли нема даних за період.
Окрім того, в потрібні місця у запиту ставите вираз
ЕСТЬNULL(ВЫРАЖЕНИЕ,0) і отримуєте свої нулі.

XBrut @ Сегодня, 9:09 необходимо зарегистрироваться для просмотра ссылки,
а також подивіться вираз формування підсумків ПЕРИОДАМИ(ДЕНЬ, НачДата, КонДата)
Нонна
Приведу пример простенького запроса, который решает вашу проблему, т.к разобраться в вашем мне непросто, то попытайтесь понять мой.
Это прайс-лист: Номенклатура и цена. Данные выводятся по всей номенклатуре, если цены нет в регистре сведений, выводится 0.
Здесь используется вложенный запрос к справочнику Номенклатура.
ВЫБРАТЬ
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
    ВлЗапросСпрНоменклатура.Ссылка КАК Номенклатура
ИЗ
    (ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка
    ИЗ
        Справочник.Номенклатура КАК Номенклатура) КАК ВлЗапросСпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = ВлЗапросСпрНоменклатура.Ссылка)

СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыСрезПоследних.Цена,
    ВлЗапросСпрНоменклатура.Ссылка

candrey
Всем спасибо за подсказки и предложения. icon_beer17.gif
Пойду испытывать новые изменения.

Цитата(Petre @ 05.08.16, 14:16) необходимо зарегистрироваться для просмотра ссылки
Цитата(candrey @ 05.08.16, 13:30) *
т.к я потом отнимаю эту колонку и пустоту этих строк(Нули) формула не воспринимает.

Как вы это делаете. Т. е. "какие ваши доказательства"?



Сама проблема не вычисляет поле ГСМ когда поле ГСМР равно нулю или ГСМП равно нулю. Когда оба значения ГСМР и ГСМП >0 то поле ГСМ все работает отлично. Сам код. Если вы Petre в курсе подскажите где проблема сидит..


ВЫБРАТЬ
    Ост.Дата,
    Ост.Организация,
    Прих.ГСМП,
    Расх.ГСМР,
    Расх.ГСМР - Прих.ГСМП КАК ГСМ
ИЗ
    (ВЫБРАТЬ
        Даты.ДатаДляОтчета КАК Дата,
        ПартииТоваровНаСкладахОстаткиИОбороты.Склад.Подразделение.ОрганизацияДляОтчета КАК Организация,
        СУММА(ВЫБОР
                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = &НачалоПериода
                    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
                ИНАЧЕ ВЫБОР
                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период <= Даты.ДатаДляОтчета
                            ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоОборот
                        ИНАЧЕ 0
                    КОНЕЦ
            КОНЕЦ) КАК КоличествоКонечныйОстаток,
        СУММА(ВЫБОР
                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = &НачалоПериода
                    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток
                ИНАЧЕ ВЫБОР
                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период <= Даты.ДатаДляОтчета
                            ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьОборот
                        ИНАЧЕ 0
                    КОНЕЦ
            КОНЕЦ) КАК СтоимостьКонечныйОстаток,
        СУММА(ВЫБОР
                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = Даты.ДатаДляОтчета
                    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход
                ИНАЧЕ 0
            КОНЕЦ) КАК СтоимостьПриход
    ИЗ
        РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты,
        РегистрСведений.ДатыДляОтчета КАК Даты
    ГДЕ
        Даты.ДатаДляОтчета МЕЖДУ &НачалоПериода И &КонецПериода
    
    СГРУППИРОВАТЬ ПО
        Даты.ДатаДляОтчета,
        ПартииТоваровНаСкладахОстаткиИОбороты.Склад.Подразделение.ОрганизацияДляОтчета) КАК Ост
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Даты.ДатаДляОтчета КАК Дата,
            ДвиженияДенежныхСредствОбороты.Организация КАК Организация,
            СУММА(ВЫБОР
                    КОГДА ДвиженияДенежныхСредствОбороты.Период = Даты.ДатаДляОтчета
                        ТОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот
                КОНЕЦ) КАК ГСМР
        ИЗ
            РегистрНакопления.ДвиженияДенежныхСредств.Обороты(
                    &НачалоПериода,
                    &КонецПериода,
                    День,
                    ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Расход)
                        И СтатьяДвиженияДенежныхСредств.Код = "00016") КАК ДвиженияДенежныхСредствОбороты,
            РегистрСведений.ДатыДляОтчета КАК Даты
        ГДЕ
            Даты.ДатаДляОтчета МЕЖДУ &НачалоПериода И &КонецПериода
        
        СГРУППИРОВАТЬ ПО
            ДвиженияДенежныхСредствОбороты.Организация,
            Даты.ДатаДляОтчета) КАК Расх
        ПО Ост.Дата = Расх.Дата
            И Ост.Организация = Расх.Организация
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Даты.ДатаДляОтчета КАК Дата,
            ДвиженияДенежныхСредствОбороты.Организация КАК Организация,
            СУММА(ВЫБОР
                    КОГДА ДвиженияДенежныхСредствОбороты.Период = Даты.ДатаДляОтчета
                        ТОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот
                КОНЕЦ) КАК ГСМП
        ИЗ
            РегистрНакопления.ДвиженияДенежныхСредств.Обороты(
                    &НачалоПериода,
                    &КонецПериода,
                    День,
                    ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
                        И СтатьяДвиженияДенежныхСредств.Код = "00016") КАК ДвиженияДенежныхСредствОбороты,
            РегистрСведений.ДатыДляОтчета КАК Даты
        ГДЕ
            Даты.ДатаДляОтчета МЕЖДУ &НачалоПериода И &КонецПериода
        
        СГРУППИРОВАТЬ ПО
            ДвиженияДенежныхСредствОбороты.Организация,
            Даты.ДатаДляОтчета) КАК Прих
        ПО Ост.Дата = Прих.Дата
            И Ост.Организация = Прих.Организация


Есть мысль соединить две строки кода в одну. Подскажите возможно это или нет? И прямо в нем произвести вычисление т.е

ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Расход)-ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)


т.е 1 код

 ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Расход)
                        И СтатьяДвиженияДенежныхСредств.Код = "00016") КАК ДвиженияДенежныхСредствОбороты,
            РегистрСведений.ДатыДляОтчета КАК Даты


2 код

 ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
                        И СтатьяДвиженияДенежныхСредств.Код = "00016") КАК ДвиженияДенежныхСредствОбороты,
            РегистрСведений.ДатыДляОтчета КАК Даты


Спасибо за подсказку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.