Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 10:09

Разбить данные по годам

Автор a.nikulnikova, 29 дек 2015, 13:08

0 Пользователей и 1 гость просматривают эту тему.

a.nikulnikova

Добрый день, стоит такая задача: по невыходам сотрудников сформировать отчет, который по каждому рабочему году того или иного сотрудника будет показывать невыходы.
Т.е. допустим, я устроилась 20.06.2013г., мне необходимо увидеть данные за эти рабочие годы, с 20.06.13 по 20.06.14, с 20.06.14 по 20.06.15 и соответственно за этот незаконченный рабочий год сколько у меня было неявок(за каждый год по отдельности).
Запрос по документу я вытащила, он отображает данные, загвоздка в том, как раскидать всё по рабочим годам.
ВЫБРАТЬ
НевыходыВОрганизацияхНачисления.Ссылка,
НевыходыВОрганизацияхНачисления.Сотрудник КАК Сотрудник,
СУММА(НевыходыВОрганизацияхНачисления.ОтработаноДней) КАК КоличествоДней,
СУММА(НевыходыВОрганизацияхНачисления.ОтработаноЧасов) КАК КоличествоЧасов,
СотрудникиОрганизаций.ДатаПриемаНаРаботу
ИЗ
Документ.НевыходыВОрганизациях.Начисления КАК НевыходыВОрганизацияхНачисления
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ПО НевыходыВОрганизацияхНачисления.Сотрудник = СотрудникиОрганизаций.Ссылка
ГДЕ
НевыходыВОрганизацияхНачисления.Ссылка.ПометкаУдаления = &Ложь

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

УПОРЯДОЧИТЬ ПО
Сотрудник

LexaK

вообще вам было бы гораздо проще просто посчитать в каком году у какого сотрудника сколько было невыходов,
вот пример запроса

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


но если вам очень надо считать именно по полному отработанному году (и если опять же сами не запутаетесь) то такой вариант

ВЫБРАТЬ //ПЕРВЫЕ 100
Док.Сотрудник,
Док.Сотрудник.ДатаПриемаНаРаботу как ДатаПриема,
       
        //расчет периода от даты приема сотрудника
НачалоПериода(
    ДОБАВИТЬКДАТЕ (
НачалоПериода(Док.Сотрудник.ДатаПриемаНаРаботу,Год),
Секунда,
РазностьДат(Док.Сотрудник.ДатаПриемаНаРаботу,Док.ДатаНачала,Секунда)),
Год) как Период,
Сумма(Док.НормаДней) как Дни
ИЗ
Документ.НевыходыВОрганизациях.Начисления КАК Док
ГДЕ
//Док.Ссылка.Дата >= ДатаВремя(2013,1,1)
Док.Ссылка.Проведен
сгруппировать по
Док.Сотрудник,
НачалоПериода(
    ДОБАВИТЬКДАТЕ (
НачалоПериода(Док.Сотрудник.ДатаПриемаНаРаботу,Год),
Секунда,
РазностьДат(Док.Сотрудник.ДатаПриемаНаРаботу,Док.ДатаНачала,Секунда)),
Год)
упорядочить по
1,3
автоупорядочивание
если помогло нажмите: Спасибо!

a.nikulnikova



Цитата: LexaK от 29 дек 2015, 14:21//расчет периода от даты приема сотрудника
НачалоПериода(
    ДОБАВИТЬКДАТЕ (
НачалоПериода(Док.Сотрудник.ДатаПриемаНаРаботу,Год),
Секунда,
РазностьДат(Док.Сотрудник.ДатаПриемаНаРаботу,Док.ДатаНачала,Секунда)),
Год) как Период,

Будьте добры, я не проверяла, но уточню, данный "кусок" будет создавать новое поле, которое будет отсчитывать у каждого сотрудника рабочий год?

LexaK

как это
Цитировать... я не проверяла ...

обязательно проверяйте, то что вам присылают, а еще не только проверять надо, а еще и разобраться что и как работает.
да, этот период (начало года) содержит пропущенные дни за отработанный год, который начался с даты приема на работу,
(ну вот как я и предупреждал, все окончательно запутались)

может используете первую версию? там все просто!
если помогло нажмите: Спасибо!

a.nikulnikova

Цитата: LexaK от 30 дек 2015, 12:20
как это
Цитировать... я не проверяла ...

обязательно проверяйте, то что вам присылают, а еще не только проверять надо, а еще и разобраться что и как работает.
да, этот период (начало года) содержит пропущенные дни за отработанный год, который начался с даты приема на работу,
(ну вот как я и предупреждал, все окончательно запутались)

может используете первую версию? там все просто!

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

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

УПОРЯДОЧИТЬ ПО
Сотрудник

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск