Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с отчетом на СКД
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Страницы: 1, 2
kosalex
Цитата(sava1 @ 17.04.15, 14:02) необходимо зарегистрироваться для просмотра ссылки
типа так


Параметры ВТ надо уточнить (я копипастил)


А как убрать строки в которых СуммаВзаиморасчет = 0? Выделил красным


Запрос:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    *_ДанныеДляПереоценкиПоФьючерсам.Регистратор КАК Регистратор,
    *_ДанныеДляПереоценкиПоФьючерсам.Документ КАК Документ,
    *_ДанныеДляПереоценкиПоФьючерсам.Контрагент,
    ВЫБОР
        КОГДА *_ДанныеДляПереоценкиПоФьючерсам.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ТОГДА *_ДанныеДляПереоценкиПоФьючерсам.СуммаВзаиморасчетов
        ИНАЧЕ *_ДанныеДляПереоценкиПоФьючерсам.СуммаВзаиморасчетов * -1
    КОНЕЦ КАК СуммаВзаиморасчетов,
    ВЫБОР
        КОГДА *_ДанныеДляПереоценкиПоФьючерсам.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ТОГДА *_ДанныеДляПереоценкиПоФьючерсам.СуммаУпр
        ИНАЧЕ *_ДанныеДляПереоценкиПоФьючерсам.СуммаУпр * -1
    КОНЕЦ КАК СуммаУпр,
    ВЫБОР
        КОГДА *_ДанныеДляПереоценкиПоФьючерсам.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ТОГДА *_ДанныеДляПереоценкиПоФьючерсам.СуммаПереоценкиУпр
        ИНАЧЕ *_ДанныеДляПереоценкиПоФьючерсам.СуммаПереоценкиУпр * -1
    КОНЕЦ КАК СуммаПереоценкиУпр,
    NULL КАК Поле1,
    NULL КАК Поле2,
    NULL КАК Поле3
ИЗ
    РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам КАК *_ДанныеДляПереоценкиПоФьючерсам
ГДЕ
    НЕ *_ДанныеДляПереоценкиПоФьючерсам.Регистратор ССЫЛКА Документ.ПереоценкаВалютныхСредств
    И *_ДанныеДляПереоценкиПоФьючерсам.Период МЕЖДУ &НачалоПериода И &КонецПериода
    И *_ДанныеДляПереоценкиПоФьючерсам.СуммаВзаиморасчетов > 0

ОБЪЕДИНИТЬ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Контрагент,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрНачальныйОстаток,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрНачальныйОстаток,
    NULL,
    NULL,
    NULL
ИЗ
    РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты
ГДЕ
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовОборот <> 0
    И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрОборот <> 0
    И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрОборот <> 0
    И НЕ *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств

ОБЪЕДИНИТЬ

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

УПОРЯДОЧИТЬ ПО
    Документ
sava1
Я вообче-то писал ВТ.Обороты(...) - там нет лишних документов

Различные - это для 3го объединения
kosalex
Цитата(sava1 @ 17.04.15, 14:21) необходимо зарегистрироваться для просмотра ссылки
Я вообче-то писал ВТ.Обороты(...) - там нет лишних документов

Различные - это для 3го объединения



Лучший icon_beer17.gif

sava1, Есть момент


Начальный остаток для этой группировки это 420608,81 , а не ноль, в других группировках выводит правильно. Как избавиться от этого нуля?

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Контрагент,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрНачальныйОстаток,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрНачальныйОстаток
ИЗ
    РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты
ГДЕ
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовОборот <> 0
    И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрОборот <> 0
    И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрОборот <> 0
    И НЕ *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОбороты.Контрагент,
    0,
    0,
    0
ИЗ
    РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.Обороты(&НачалоПериода, &КонецПериода, Период, НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОбороты
ГДЕ
    НЕ *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств


УПОРЯДОЧИТЬ ПО
    Документ

sava1
2й и 3й подзапросы сначала объдинить, сгруппировать и только потом объединить с первым
kosalex
Цитата(sava1 @ 17.04.15, 14:59) необходимо зарегистрироваться для просмотра ссылки
2й и 3й подзапросы сначала объдинить, сгруппировать и только потом объединить с первым


Вы имеете ввиду 2й и 3й запросы, написать в одном запросе и связать, а потом объеденить с 1м?
sava1
Выбрать....

объдинить все

Выбрать....поля
из
(2й подзапрос
объединить все
3й подзапрос
) как ЗапросХ
Сгруппировать .....поля группировки
kosalex
Цитата(sava1 @ 17.04.15, 15:31) необходимо зарегистрироваться для просмотра ссылки
Выбрать....

объдинить все

Выбрать....поля
из
(2й подзапрос
объединить все
3й подзапрос
) как ЗапросХ
Сгруппировать .....поля группировки


Это через пакеты запросов?
sava1
Цитата(kosalex @ 17.04.15, 14:54) необходимо зарегистрироваться для просмотра ссылки
// первый подзапрос

ОБЪЕДИНИТЬ ВСЕ

Выбрать // тут поля
из (

ВЫБРАТЬ
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Контрагент,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрНачальныйОстаток,
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрНачальныйОстаток
ИЗ
    РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты
ГДЕ
    *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовОборот <> 0
    И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрОборот <> 0
    И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрОборот <> 0
    И НЕ *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ,
    *_ДанныеДляПереоценкиПоФьючерсамОбороты.Контрагент,
    0,
    0,
    0
ИЗ
    РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.Обороты(&НачалоПериода, &КонецПериода, Период, НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОбороты
ГДЕ
    НЕ *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств

) как ВложЗапрос
Сгруппировать по ....// поля запроса


УПОРЯДОЧИТЬ ПО
    Документ



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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВторойИТретийЗапросы.Документ,
    ВторойИТретийЗапросы.Документ1,
    ВторойИТретийЗапросы.Контрагент,
    СУММА(ВторойИТретийЗапросы.СуммаВзаиморасчетовНачальныйОстаток),
    СУММА(ВторойИТретийЗапросы.СуммаУпрНачальныйОстаток),
    СУММА(ВторойИТретийЗапросы.СуммаПереоценкиУпрНачальныйОстаток)
ИЗ
    (ВЫБРАТЬ
        *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ КАК Документ,
        *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ КАК Документ1,
        *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Контрагент КАК Контрагент,
        *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток,
        *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрНачальныйОстаток КАК СуммаУпрНачальныйОстаток,
        *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрНачальныйОстаток КАК СуммаПереоценкиУпрНачальныйОстаток
    ИЗ
        РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты
    ГДЕ
        НЕ *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств
        И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаВзаиморасчетовОборот <> 0
        И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаУпрОборот <> 0
        И *_ДанныеДляПереоценкиПоФьючерсамОстаткиИОбороты.СуммаПереоценкиУпрОборот <> 0
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ,
        *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ,
        *_ДанныеДляПереоценкиПоФьючерсамОбороты.Контрагент,
        0,
        0,
        0
    ИЗ
        РегистрНакопления.*_ДанныеДляПереоценкиПоФьючерсам.Обороты(&НачалоПериода, &КонецПериода, Период, НЕ Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК *_ДанныеДляПереоценкиПоФьючерсамОбороты
    ГДЕ
        НЕ *_ДанныеДляПереоценкиПоФьючерсамОбороты.Документ ССЫЛКА Документ.ПереоценкаВалютныхСредств) КАК ВторойИТретийЗапросы
ГДЕ
    ВторойИТретийЗапросы.СуммаВзаиморасчетовНачальныйОстаток <> 0
    И ВторойИТретийЗапросы.СуммаУпрНачальныйОстаток <> 0
    И ВторойИТретийЗапросы.СуммаПереоценкиУпрНачальныйОстаток <> 0

СГРУППИРОВАТЬ ПО
    ВторойИТретийЗапросы.Документ,
    ВторойИТретийЗапросы.Документ1,
    ВторойИТретийЗапросы.Контрагент


Результат:


Перестали выводиться начальные остатки....
sava1
Зачем последний ГДЕ ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.