Имя: Пароль:
1C
1С v8
отчет по начислениям
0 Johney20
 
13.05.16
16:49
Необходимо создать отчет, который отображает общую сумму осн и доп начислений по каждому сотруднику. Запросом создаю две временные таблицы, в первой "сотрудник", "период регистрации", "Результат" по осн.начислениям, во второй выбираю те же поля, только из доп.начислений. в 3м пакете запросов, выбираю первые два поля из осн.таблицы, естественно связанные с полями по доп.начислениям, а результат рассчитываю, как сумму результатов двух регистров. Период и Сотрудника в итоге я получаю, а колонка с результатом пустая((( Уже голову себе сломала, подскажите, как исправить??(
1 Nuobu
 
13.05.16
16:53
Покажи запросы.
2 Johney20
 
13.05.16
17:02
Nuobu, Не нашла, как прикрепить файл, это внешний отчет.

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Осн.ПериодРегистрации,
    Осн.Сотрудник КАК Сотрудник,
    СУММА(Осн.Результат + Доп.Результат) КАК Поле1
ИЗ
    Осн КАК Осн
        ЛЕВОЕ СОЕДИНЕНИЕ Доп КАК Доп
        ПО Осн.ПериодРегистрации = Доп.ПериодРегистрации
            И Осн.Сотрудник = Доп.Сотрудник

СГРУППИРОВАТЬ ПО
    Осн.ПериодРегистрации,
    Осн.Сотрудник

УПОРЯДОЧИТЬ ПО
    Сотрудник
3 Johney20
 
13.05.16
17:08
(1)
4 Sabbath
 
13.05.16
17:09
(2) таки предположу что период регистрации разный и возможно его надо привести к одному значению. Насколько я помню у основных начислений начало месяца вообще, а у доп. когда угодно. Но ЗУП я не помню, это вариант. При суммировании не забудь ЕСТЬNULL
5 Генератор
 
13.05.16
17:09
а если вдруг есть доп начисление а нет основного? и проверку на null не помешало бы, а то значение + null = null
6 Генератор
 
13.05.16
17:10
возможно лучше объединить + сгруппировать
7 Nuobu
 
13.05.16
17:11
(2) Нужно пользоваться виртуальными таблицами.
8 Johney20
 
13.05.16
17:14
(7) а можно поподробней? я еще стажер просто..(
9 Генератор
 
13.05.16
17:14
(7) при выборке из 2-х разных регистров чем они помогут, а из регистров расчета итоговые данные обычно из физических таблиц берут
10 Alexandr_U1982
 
13.05.16
17:15
(0)
ВЫБРАТЬ
    Начисления.Сотрудник,
    СУММА(Начисления.Результат) КАК Результат
ИЗ
    (ВЫБРАТЬ
        ОсновныеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник,
        ОсновныеНачисленияРаботниковОрганизаций.Результат КАК Результат
    ИЗ
        РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
        ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
        И ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
        ДополнительныеНачисленияРаботниковОрганизаций.Результат
    ИЗ
        РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    ГДЕ
        ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
        И ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания) КАК Начисления

СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник
11 Alexandr_U1982
 
13.05.16
17:16
(2) Левое соединение здесь совершенно не нужно. Нужно использовать объединить
12 Генератор
 
13.05.16
17:17
(10) да, но это надо во вложенный или в вт и потом сгруппировать, по задумке тс
13 Sabbath
 
13.05.16
17:17
(8) твоей проблеме это в данный момент не поможет :)
Проверь отдельно значения полей, по которым соединяешь, и увидишь, что они различаются

(10) а вдруг ей надо с периодами?
14 Генератор
 
13.05.16
17:19
если уж соединение то полное, но на null каждое поле надо проверять
15 Alexandr_U1982
 
13.05.16
17:19
(13) Добавить периоды, убрать отборы если надо
16 Alexandr_U1982
 
13.05.16
17:20
(14) Посмотрите как подобные запросы делаются в типовых. Полное соединение никогда не используется. Оно будет работать медленнее чем объединить, да еще и проверку на Null надо добавлять.
17 Генератор
 
13.05.16
17:21
(16) я изначально так и предложил
18 Johney20
 
13.05.16
17:21
(10) уфф, сейчас попробую
19 Sabbath
 
13.05.16
17:24
(15) И еще периоды надо привести к началу месяца, например. Я о том и пишу. А зачем ей соединение, это не знаю. Вдруг так и задумано
20 Генератор
 
13.05.16
17:25
(19) а период регистрации вроде изначально к началу месяца приведен
21 Sabbath
 
13.05.16
17:26
(20) В доп начислениях, вроде, нет, ЗУПа нет под рукой
22 Johney20
 
13.05.16
17:26
(13) Нет же( одинаковые
23 Генератор
 
13.05.16
17:29
(21) ну может быть...
24 Alexandr_U1982
 
13.05.16
17:31
(20)(21)
В регистре "ОсновныеНачисленияРаботниковОрганизаций" период регистрации приведен к началу месяца, в регистре "ДополнительныеНачисленияРаботниковОрганизаций" - нет.
Если в качестве "ДатаНачала" использовать Дату начала месяца, а в качестве "ДатаОкончания" использовать Дату окончания месяца, то периоды не нужно приводить к началу месяца.
Лучше один раз задать правильно параметры запроса, чем выполнять функцию преобразования периода для каждой записи регистра. Будет быстрее работать.
25 Alexandr_U1982
 
13.05.16
17:32
(19)Соединение там используется по "не знанию".
26 Johney20
 
13.05.16
17:33
Мне по сути просто сказали сделать так, чтобы были след колонки:

Период регистрации/ Сотрудник/ Результат/

где результат это сумма осн и доп начислений. Может это можно вообще как-то проще реализовать??
27 Генератор
 
13.05.16
17:33
(24) если надо сгруппировать в разрезе периодов а параметры за несколько периодов, то все равно преобразовывать
28 Alexandr_U1982
 
13.05.16
17:35
(27) Согласен
29 Alexandr_U1982
 
13.05.16
17:37
(26)
ВЫБРАТЬ
    Начисления.ПериодРегистрации,
    Начисления.Сотрудник,
    СУММА(Начисления.Результат) КАК Результат
ИЗ
    (ВЫБРАТЬ
        ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации КАК ПериодРегистрации,
        ОсновныеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник,
        ОсновныеНачисленияРаботниковОрганизаций.Результат КАК Результат
    ИЗ
        РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
        ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
        И ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
        ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
        ДополнительныеНачисленияРаботниковОрганизаций.Результат
    ИЗ
        РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    ГДЕ
        ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
        И ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания) КАК Начисления

СГРУППИРОВАТЬ ПО
    Начисления.Сотрудник,
    Начисления.ПериодРегистрации

УПОРЯДОЧИТЬ ПО
    Начисления.ПериодРегистрации,
    Начисления.Сотрудник.Наименование

Проще некуда
30 GANR
 
13.05.16
19:30
(0) Создать? А уверена, что типового нет с нужным функционалом?
31 Johney20
 
14.05.16
00:56
(30) Ну это мне заданька, я стажеруюсь) даже если и есть типовая, мне в любом случае надо самой написать)
32 igni1
 
14.05.16
09:52
а запрос из Расчетного листка посмотреть?
33 hhhh
 
14.05.16
12:24
(32) убил