Имя: Пароль:
1C
1С v8
Запрос изменения ЗП
0 skupidom
 
30.11.18
15:38
Нужно чтобы соблюдалась хронология и документы не повторялись, если не устанавливать отбор:
ВЫБРАТЬ
    ПлановыеНачисленияРаботников.Период,
    ПлановыеНачисленияРаботников.ВидРасчета КАК ВидРасчета,
    ПлановыеНачисленияРаботников.ФизЛицо КАК ФизЛицо,
    ПлановыеНачисленияРаботников.Регистратор КАК ПрошлыйДокумент,
    ПлановыеНачисленияРаботников.Показатель1 КАК ПрошлыйРезультат
ПОМЕСТИТЬ ВТПланТекущая
ИЗ
    РегистрСведений.ПлановыеНачисленияРаботников КАК ПлановыеНачисленияРаботников
ГДЕ
    ПлановыеНачисленияРаботников.Период МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВТПланТекущая.ФизЛицо,
    ВТПланТекущая.ВидРасчета,
    ВТПланТекущая.Период КАК ПериодСтарый,
    ВТПланТекущая.ПрошлыйДокумент,
    ВТПланТекущая.ПрошлыйРезультат,
    МИНИМУМ(ПлановыеНачисленияРаботников.Период) КАК ПериодНовый
ПОМЕСТИТЬ ВТ_Итог
{ВЫБРАТЬ
    ПериодНовый,
    ПериодСтарый}
ИЗ
    ВТПланТекущая КАК ВТПланТекущая
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботников КАК ПлановыеНачисленияРаботников
        ПО ВТПланТекущая.Период < ПлановыеНачисленияРаботников.Период
            И ВТПланТекущая.ФизЛицо = ПлановыеНачисленияРаботников.ФизЛицо
            И ВТПланТекущая.ВидРасчета = ПлановыеНачисленияРаботников.ВидРасчета
            И ВТПланТекущая.ПрошлыйРезультат <> ПлановыеНачисленияРаботников.Показатель1
ГДЕ
    ПлановыеНачисленияРаботников.Период МЕЖДУ &НачалоПериода И &КонецПериода
{ГДЕ
    ВТПланТекущая.Период,
    ВТПланТекущая.ВидРасчета.*,
    ВТПланТекущая.ФизЛицо.*,
    ПлановыеНачисленияРаботников.Период,
    ПлановыеНачисленияРаботников.ВидРасчета.*,
    ПлановыеНачисленияРаботников.ФизЛицо.*,
    ПлановыеНачисленияРаботников.Показатель1,
    ПлановыеНачисленияРаботников.Регистратор.*}

СГРУППИРОВАТЬ ПО
    ВТПланТекущая.ФизЛицо,
    ВТПланТекущая.ВидРасчета,
    ВТПланТекущая.Период,
    ВТПланТекущая.ПрошлыйДокумент,
    ВТПланТекущая.ПрошлыйРезультат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТПланПрошлая.ФизЛицо,
    ВТПланПрошлая.ВидРасчета,
    ВТ_Итог.ПериодСтарый,
    ВТ_Итог.ПрошлыйДокумент КАК ПрошлыйДокумент,
    ВТ_Итог.ПрошлыйРезультат КАК ПрошлыйРезультат,
    ВТ_Итог.ПериодНовый,
    ВТПланПрошлая.ПрошлыйДокумент КАК НовыйДокумент,
    ВТПланПрошлая.ПрошлыйРезультат КАК НовыйРезультат
ПОМЕСТИТЬ ВТПлановыеНачисления
ИЗ
    ВТ_Итог КАК ВТ_Итог
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПланТекущая КАК ВТПланПрошлая
        ПО ВТ_Итог.ПериодНовый = ВТПланПрошлая.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТПлановыеНачисления.ФизЛицо,
    ВТПлановыеНачисления.ВидРасчета,
    ВТПлановыеНачисления.ПериодСтарый,
    ВТПлановыеНачисления.ПрошлыйДокумент,
    ВТПлановыеНачисления.ПрошлыйРезультат,
    ВТПлановыеНачисления.ПериодНовый,
    ВТПлановыеНачисления.НовыйДокумент,
    ВТПлановыеНачисления.НовыйРезультат
ИЗ
    ВТПлановыеНачисления КАК ВТПлановыеНачисления
1 skupidom
 
30.11.18
17:12
22    19.10.2017    Прием на работу 01390000000 от 19.10.2017 12:59:32    24.07.2018    Кадровое перемещение 00037 от 24.07.2018 17:45:33    92 000,000    138 000,000
23    19.10.2017    Прием на работу 01390000000 от 19.10.2017 12:59:32    24.10.2018    Кадровое перемещение 00084 от 24.10.2018 0:00:00    92 000,000    165 600,000
24    24.07.2018    Кадровое перемещение 00037 от 24.07.2018 17:45:33    24.10.2018    Кадровое перемещение 00084 от 24.10.2018 0:00:00    138 000,000    165 600,000
2 skupidom
 
30.11.18
17:12
запрос возвращает
3 skupidom
 
30.11.18
17:13
нужно исключить повторения
23    19.10.2017    Прием на работу 01390000000 от 19.10.2017 12:59:32    24.10.2018    Кадровое перемещение 00084 от 24.10.2018 0:00:00    92 000,000    165 600,000
24    24.07.2018    Кадровое перемещение 00037 от 24.07.2018 17:45:33    24.10.2018    Кадровое перемещение 00084 от 24.10.2018 0:00:00    138 000,000    165 600,000
4 shuhard
 
30.11.18
17:14
(3) продолжай наблюдения
5 Вафель
 
30.11.18
17:51
делай через "представления"
6 skupidom
 
30.11.18
18:19
делай через "представления" - весь запрос или часть ?
7 МихаилМ
 
30.11.18
18:21
(3) какое из повторений желаете исключить ?
8 skupidom
 
30.11.18
18:27
должно быть так
19.10.2017 Прием на работу 01390000000 от 19.10.2017 12:59:32   92 000,000  24.07.2018 Кадровое перемещение 00037 от 24.07.2018 17:45:33 138 000,000
24.07.2018 Кадровое перемещение 00037 от 24.07.2018 17:45:33 138 000,000 24.10.2018 Кадровое перемещение 00084 от 24.10.2018 0:00:00     165 600,000
9 skupidom
 
30.11.18
18:28
попробовал сделать так:
ВЫБРАТЬ
    ПлановыеНачисленияРаботников.Период КАК ПрошлыйПериод,
    ПлановыеНачисленияРаботников.ВидРасчета КАК ВидРасчета,
    ПлановыеНачисленияРаботников.ФизЛицо КАК ФизЛицо,
    ПлановыеНачисленияРаботников.Регистратор КАК ПрошлыйДокумент,
    ПлановыеНачисленияРаботников.Показатель1 КАК ПрошлыйРезультат
ПОМЕСТИТЬ ВТПланПрошлая
ИЗ
    РегистрСведений.ПлановыеНачисленияРаботников КАК ПлановыеНачисленияРаботников
ГДЕ
    ПлановыеНачисленияРаботников.Период МЕЖДУ &НачалоПериода И &КонецПериода
    И НЕ ПлановыеНачисленияРаботников.Регистратор ССЫЛКА Документ.Увольнение
;

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВТПланПрошлая.ФизЛицо,
    ВТПланПрошлая.ВидРасчета,
    ВТПланПрошлая.ПрошлыйПериод,
    ВТПланПрошлая.ПрошлыйДокумент,
    ВТПланПрошлая.ПрошлыйРезультат,
    ВТПланТекущийПериод.ПериодНовый,
    ВТПланТекущий.НовыйРегистратор КАК НовыйДокумент,
    ВТПланТекущий.НовыйРезультат
ИЗ
    ВТПланПрошлая КАК ВТПланПрошлая
        ЛЕВОЕ СОЕДИНЕНИЕ ВТПланТекущий КАК ВТПланТекущий
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПланТекущийПериод КАК ВТПланТекущийПериод
            ПО (ВТПланТекущийПериод.ПериодНовый = ВТПланТекущий.ПериодНовый)
        ПО ВТПланПрошлая.ФизЛицо = ВТПланТекущий.ФизЛицо
            И ВТПланПрошлая.ВидРасчета = ВТПланТекущий.ВидРасчета
11 skupidom
 
30.11.18
18:31
не получается
12 skupidom
 
30.11.18
23:57
опять никто не знает
13 Радим1987
 
01.12.18
00:09
14 skupidom
 
01.12.18
00:47
спасибо
15 skupidom
 
01.12.18
13:50
не получается, может как-то изменить запрос ?