Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 20:12

Как сделать простой отчет "Отработано выходных дней за период"

Автор NewbieDina, 06 окт 2017, 08:32

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

NewbieDina

Здравствуйте!
Опять вопрос от новичка для терпеливых, которым не лень писать что-то кроме "Закажите профессионалу".

Как оптимальнее сделать отчет по работникам организации за произвольный период, выводящий количество отработанных выходных дней?

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

Если нет, то киньте, пожалуйста, примерный текст запроса - к каким регистрам или документам обращаться, какое условие накладывать?
Как сделать кроме общего количества дней еще и вывод перечня отработанных выходных дней (дат) в одной строке, списком?

Версия ПО: Управление производственным предприятием, редакция 1.3 (1.3.92.3) (http://v8.1c.ru/enterprise/)

ЗАранее большое спасибо за конструктивные ответы.

alex0402

                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     | 0 КАК Число
                     |ПОМЕСТИТЬ ВТЧисла
                     |
                     |ОБЪЕДИНИТЬ
                     |
                     |ВЫБРАТЬ
                     | 1
                     |
                     |ОБЪЕДИНИТЬ
                     |
                     |ВЫБРАТЬ
                     | 2
                     |
                     |ОБЪЕДИНИТЬ
                     |
                     |ВЫБРАТЬ
                     | 3
                     |
                     |ОБЪЕДИНИТЬ
                     |
                     |ВЫБРАТЬ
                     | 4
                     |
                     |ОБЪЕДИНИТЬ
                     |
                     |ВЫБРАТЬ
                     | 5
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     | ДОБАВИТЬКДАТЕ(&ПериодРегистрации, ДЕНЬ, Старший.Число * 6 + Младший.Число) КАК ДатаТабеля
                     |ПОМЕСТИТЬ ВТДатыТабеля
                     |ИЗ
                     | ВТЧисла КАК Младший,
                     | ВТЧисла КАК Старший
                     |ГДЕ
                     | ДОБАВИТЬКДАТЕ(&ПериодРегистрации, ДЕНЬ, Старший.Число * 6 + Младший.Число) <= КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)
                     |
                     |ИНДЕКСИРОВАТЬ ПО
                     | ДатаТабеля
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     | ВТДатыТабеля.ДатаТабеля КАК ДатаТабеля,
                     | ВТСотрудники.Сотрудник КАК Сотрудник
                     |ПОМЕСТИТЬ ВТДатыСотрудники
                     |ИЗ
                     | ВТСотрудники КАК ВТСотрудники,
                     | ВТДатыТабеля КАК ВТДатыТабеля
                     |
                     |ИНДЕКСИРОВАТЬ ПО
                     | Сотрудник,
                     | ДатаТабеля
                     |;
                     |


ВТДатыТабеля - содержит декартово произведение Сотрудники*Даты.
Потом эту таблицу левым соединением к РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РВРО
и все даты, где РВРО.Период is NULL - Выходные.
Спасибо за Сказать спасибо

NewbieDina

Спасибо! А на основе этого запроса можно получить искомое? Будет ли это корректно?

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

1. Можно использовать условие Сотрудник.Актуальность= ИСТИНА для получения среза работающих на данный момент сотрудников? Почему-то у уволенных дата увольнения пустая, поэтому не могу отфильтровать по ней. Это наши что-то неправильно делают.

2. ВидИспользованияРабочегоВремени.РабочееВремя = ИСТИНА  - это достаточное условие, чтобы считать, что это отработанный день?

alex0402

Цитата: NewbieDina от 06 окт 2017, 11:011. Можно использовать условие Сотрудник.Актуальность= ИСТИНА для получения среза работающих на данный момент сотрудников? Почему-то у уволенных дата увольнения пустая, поэтому не могу отфильтровать по ней. Это наши что-то неправильно делают.
лучше посмотреть в какие регистры пишут документы Прием и Увольнение.

Цитата: NewbieDina от 06 окт 2017, 11:012. ВидИспользованияРабочегоВремени.РабочееВремя = ИСТИНА  - это достаточное условие, чтобы считать, что это отработанный день?

если в табеле что-нибудь есть (работа,отпуск,больничный) - то это не выходной.
выходные в базу не пишутся.
Спасибо за Сказать спасибо

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск