Имя: Пароль:
1C
1С v8
ЗУП Отчет
, ,
0 Qaswer
 
03.09.12
09:19
Здравствуйте.
Пытаюсь подсчитать количество дней отсутствия сотрудника за год.
Данные беру из регистра СостояниеРаботников

ВЫБРАТЬ
   ВложенныйЗапрос.Сотрудник,
   ВложенныйЗапрос.Дата_наступления_пенсионного_возраста,
   ВложенныйЗапрос.Дата_приема,
   ВложенныйЗапрос.Увольнение,
   ВложенныйЗапрос.Стаж_на_момент_приема,
   ВложенныйЗапрос.Стаж_на_момент_увольнения,
   СостояниеРаботниковОрганизаций.Период,
   СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник1,
   СостояниеРаботниковОрганизаций.Состояние,
   СостояниеРаботниковОрганизаций.Активность,
   СостояниеРаботниковОрганизаций.ПериодЗавершения,
   СостояниеРаботниковОрганизаций.СостояниеЗавершения,
   СостояниеРаботниковОрганизаций.ПервичныйДокумент,
   СостояниеРаботниковОрганизаций.ВидДополнительногоОтпуска,
   СостояниеРаботниковОрганизаций.ДатаНачалаДоп
ИЗ
КАК ВложенныйЗапрос
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
       ПО ВложенныйЗапрос.Сотрудник = СостояниеРаботниковОрганизаций.Сотрудник
ГДЕ
   СостояниеРаботниковОрганизаций.Период МЕЖДУ ДОБАВИТЬКДАТЕ(&Дата, ГОД, -1) И &Дата
1 Homer
 
03.09.12
09:22
и?
2 Qaswer
 
03.09.12
09:25
Извиняюсь. Первый раз здесь спрашиваю.
В общем некоторые записи не имеют ПериодаЗавершения
По типу : 01.06.12 Болеет
Следующая: 05.06.12 Работает
Как мне подсчитать количество дней по таким записям?
3 Qaswer
 
03.09.12
09:25
точнее между ними
4 WebberNSK
 
03.09.12
09:27
Соединение этого регистра с самим с собой, поле с разностью дат, потом группировка.
5 Qaswer
 
03.09.12
09:54
Спасибо, попробую.
Можно подробнее про соединение?
6 Ant1773
 
03.09.12
09:57
А почему не из РН "Рабочее время сотрудников организаций"?
7 Qaswer
 
03.09.12
10:00
Табель заполняется только рядовыми сотрудниками.
8 dmpl
 
03.09.12
10:04
(6) Если уж и брать данные расчета зарплаты, то из регистров расчета.
9 Qaswer
 
03.09.12
10:14
Так и не понял эту фишку про соединение регистра с самим собой.
10 dmpl
 
03.09.12
10:32
(9) Смысл тут в том, что для каждой записи ты определяешь период предыдущей или следующей записи и цепляешь затем к ней еще раз таблицу по с условием на равенство периодов.

Кстати, обязательно из кадрового учета данные брать?
11 Qaswer
 
03.09.12
10:45
Нет, не обязательно.
Необходимо подсчитать количество календарных дней отсутствия.
12 dmpl
 
03.09.12
10:57
(11) Честно говоря, не знаю, что будет быстрее (3 левых соединения или 1 запрос к регистру расчета), надо проверять. Но есть вот такой способ получения количества дней:


ВЫБРАТЬ
   ОсновныеНачисленияРаботниковОрганизацийДанныеГрафика.Сотрудник,
   СУММА(ОсновныеНачисленияРаботниковОрганизацийДанныеГрафика.ПроизводственныйКалендарьКалендарныеДниФактическийПериодДействия) КАК КоличествоДнейОтсутствия
ИЗ
   РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ДанныеГрафика(ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&ПериодРегистрации, ГОД)
                                                                           И КОНЕЦПЕРИОДА(&ПериодРегистрации, ГОД)
                                                                           И ВидРасчета.ВидВремени = &ВидВремени
                                                                           И НЕ ВидРасчета В (&ПлановыеОтпуска)
                                                                           И Сотрудник В (&СписокСотрудников)
                                                                           ) КАК ОсновныеНачисленияРаботниковОрганизацийДанныеГрафика
СГРУППИРОВАТЬ ПО
   ОсновныеНачисленияРаботниковОрганизацийДанныеГрафика.Сотрудник
13 dmpl
 
03.09.12
11:00
ВидВремени - неотработанные целые смены.
14 Qaswer
 
03.09.12
12:24
Спасибо за помощь.