Имя: Пароль:
1C
 
Объеденить два одинаковых запроса в один
0 Дебет
 
12.10.15
12:01
Весь день пытаюсь сделать то на что у профессионалов уходит минут 5. Прошу помощи профессионалов...
получаю одним запросом данные  на начало и этим же запросом  на конец периода, в итоге 2 запроса =(  как в одном запросе объединить эти 2 , и еще разницу между ними сделать?

ВЫБРАТЬ
    ПервоначальныеСведенияОССрезПоследних.Организация,
    ПервоначальныеСведенияОССрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
    ЕСТЬNULL(ХозрасчетныйОстаткиСтоимость.СуммаОстатокДт, 0) КАК ТекущаяСтоимость,
    ЕСТЬNULL(ХозрасчетныйОстаткиАмортизация.СуммаОстатокКт, 0) КАК ТекущаяАмортизация,
    ЕСТЬNULL(ХозрасчетныйОстаткиСтоимость.СуммаОстатокДт, 0) - ЕСТЬNULL(ХозрасчетныйОстаткиАмортизация.СуммаОстатокКт, 0) КАК ОстаточнаяСтоимость,
    ВЫБОР
        КОГДА ЕСТЬNULL(ХозрасчетныйОстаткиСтоимость.СуммаОстатокДт, 0) <> 0
                ИЛИ ЕСТЬNULL(ХозрасчетныйОстаткиАмортизация.СуммаОстатокКт, 0) <> 0
                ИЛИ ЕСТЬNULL(ХозрасчетныйОстаткиСтоимость.СуммаОстатокДт, 0) - ЕСТЬNULL(ХозрасчетныйОстаткиАмортизация.СуммаОстатокКт, 0) <> 0
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЕстьПоказатели,
    СостоянияОСОрганизацийСрезПоследних.ДатаСостояния,
    СостоянияОСОрганизацийСрезПоследних.Состояние
ИЗ
    РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&ДатаОтчета, ) КАК ПервоначальныеСведенияОССрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СчетаБухгалтерскогоУчетаОС.СрезПоследних(&ДатаОтчета, ) КАК СчетаБухгалтерскогоУчетаОССрезПоследних
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , &ВидСубконтоОС, ) КАК ХозрасчетныйОстаткиСтоимость
            ПО СчетаБухгалтерскогоУчетаОССрезПоследних.СчетУчета = ХозрасчетныйОстаткиСтоимость.Счет
                И СчетаБухгалтерскогоУчетаОССрезПоследних.ОсновноеСредство = ХозрасчетныйОстаткиСтоимость.Субконто1
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , &ВидСубконтоОС, ) КАК ХозрасчетныйОстаткиАмортизация
            ПО СчетаБухгалтерскогоУчетаОССрезПоследних.СчетНачисленияАмортизации = ХозрасчетныйОстаткиАмортизация.Счет
                И СчетаБухгалтерскогоУчетаОССрезПоследних.ОсновноеСредство = ХозрасчетныйОстаткиАмортизация.Субконто1
        ПО ПервоначальныеСведенияОССрезПоследних.ОсновноеСредство = СчетаБухгалтерскогоУчетаОССрезПоследних.ОсновноеСредство
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОСОрганизаций.СрезПоследних(&ДатаОтчета, ) КАК СостоянияОСОрганизацийСрезПоследних
        ПО ПервоначальныеСведенияОССрезПоследних.ОсновноеСредство = СостоянияОСОрганизацийСрезПоследних.ОсновноеСредство
ГДЕ
    СостоянияОСОрганизацийСрезПоследних.Состояние = &Состояние
{ГДЕ
    ПервоначальныеСведенияОССрезПоследних.Организация.*}
1 Ёпрст
 
12.10.15
12:04
union all
2 Ёпрст
 
12.10.15
12:05
А разницу получишь, если в одном из запросов на минус один помножишь суммируемое поле.
3 Ёпрст
 
12.10.15
12:09
будет так
select
   Сумма(ЭтоХреньИзПервогоЗапроса),
   Сумма(ЭтоХреньИзВторогоЗапроса),
   Сумма(ЭтоХреньДляРазницы)
from
(
select
  Показатель Как ЭтоХреньИзПервогоЗапроса,
  0 как ЭтоХреньИзВторогоЗапроса,
  Показатель ЭтоХреньДляРазницы
from табличка_регистр_четамещеутебяестьНаДату

union all
select
  0,
  Показатель,
  -Показатель
from табличка_регистр_четамещеутебяестьНаДатуВторогоЗапроса
)
Ошибка? Это не ошибка, это системная функция.