Имя: Пароль:
1C
1С v8
Запрос (соединение не дает нужный результат)
0 katerinaUniv
 
16.09.14
15:22
Текст запроса ниже:
ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо,
    СУММА(ЕСТЬNULL(ОсновныеНачисленияРаботниковОрганизаций.Результат, 0)) КАК Результат,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия КАК ПериодДействия
ПОМЕСТИТЬ Начисления
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &Физлицо
    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия МЕЖДУ &ДатаПараметрС И &ДатаПараметрПо

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия
ПОМЕСТИТЬ Периоды
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия МЕЖДУ &ДатаС И &ДатаПо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Периоды.ПериодДействия,
    Начисления.ПериодДействия КАК ПериодДействия1,
    Начисления.ФизЛицо,
    Начисления.Результат
ИЗ
    Периоды КАК Периоды
        ПОЛНОЕ СОЕДИНЕНИЕ Начисления КАК Начисления
        ПО Периоды.ПериодДействия = Начисления.ПериодДействия
ГДЕ
    Начисления.ФизЛицо = &ФизЛицо
    И Периоды.ПериодДействия МЕЖДУ &ДатаС И &ДатаПо
    И Начисления.ПериодДействия МЕЖДУ &ДатаС И &ДатаПо

по условию параметры стоят с начала года по октябрь. Таблица периоды - это список месяцев, а из начислений берутся суммы зп. В итоге показываются только те месяцы, когда есть начисления. В чем моя ошибка?
1 Балоун
 
16.09.14
15:24
ГДЕ
    Начисления.ФизЛицо = &ФизЛицо
2 katerinaUniv
 
16.09.14
15:27
(1)убрала отбор внизу, не получилось ничего, все те же 6 месяцев
3 katerinaUniv
 
16.09.14
15:27
мне нужно получить за заданный период все начисления по сотруднику, если они были
4 Килограмм
 
16.09.14
15:30
(0) тут можно вместо СОЕДИНЕНИЕ сделать ОБЪЕДИНИТЬ, где поле объединия будет ПериодДействия, тогда и от не нужного ПериодДействия1 избавишься
5 katerinaUniv
 
16.09.14
15:31
(4)как это делается?
6 Килограмм
 
16.09.14
15:32
(0) и в последней таблице второй раз отбор по физ лицу не нужен, он уже есть при создании вт Начисления
7 Килограмм
 
16.09.14
15:32
8 Крошка Ру
 
16.09.14
15:33
(4)(5) Не надо

Просто убрать последнее ГДЕ(все отборы уже сделаны во временных таблицах) и сделать левое соединение
9 Крошка Ру
 
16.09.14
15:34
+(8) и ПериодДействия1 не нужен. По периоду идет соединение и там будет то же, что и в ПериодДействия
10 katerinaUniv
 
16.09.14
15:34
(8) (9) Спасибо! заработало!!!
11 katerinaUniv
 
16.09.14
15:35
вот итоговый вариант:

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия
ПОМЕСТИТЬ Периоды
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия МЕЖДУ &ДатаС И &ДатаПо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Периоды.ПериодДействия,
    Начисления.ПериодДействия КАК ПериодДействия1,
    Начисления.Результат
ИЗ
    Периоды КАК Периоды
        ЛЕВОЕ СОЕДИНЕНИЕ Начисления КАК Начисления
        ПО Периоды.ПериодДействия = Начисления.ПериодДействия
//ГДЕ
//    Периоды.ПериодДействия МЕЖДУ &ДатаС И &ДатаПо
//    И Начисления.ПериодДействия МЕЖДУ &ДатаС И &ДатаПо
12 Крошка Ру
 
16.09.14
15:36
И ещё совет: т.к. соединение левое, то

ЕстьNull(Начисления.Результат,0)
13 katerinaUniv
 
16.09.14
15:38
ок