Базелюк Петр | Технический директор | КТС

«Бизнес-аналитика с помощью Power BI»

- Почему Power BI? - Выгрузка данных из 1С:Предприятие это плохо? - События это наше все - О нормализации замолвим слово - Что такое хранилище данных. Смещение сложности в сторону бизнес-аналитики или в сторону 1С:Предприятия - Поговорим об первичных и вторичных ключах. Эффективно связываем одну таблицу хранилища данных со множеством объектов конфигурации 1С - Как максимально точно обновлять данные в хранилище. Забываем об операциях Insert, Delete, Update - учимся делать MERGE. - Оптимизация MERGE с помощью Common Table Expression - Все-таки, полный онлайн возможен?

В помощь кадровику. Отчет по состояниям (отклонениям) сотрудников за период.

Отчеты - Бухгалтерские

Моя переработанная статья будет полезна и работникам кадровых служб и разработчикам кадровых отчетов. Вся информация для пользователей размещена в самом начале статьи, ниже идет техническое описание сбора данных для отчета. К статье прикреплен отчет на основе СКД, который позволяет в детальной и настраиваемой форме выводить информацию о состояниях сотрудников за выбранный период. Данные собираются исключительно с кадровых регистров. Через механизм характеристик реализована поддержка использования категорий и свойств объектов. В описании для разработчиков я расскажу об основных принципах создания отчета по состояниям (отклонениям) сотрудников организаций за выбранный период. Данные будем брать из регистров сведений «СостояниеРаботниковОрганизаций» и «РаботникиОрганизаций». В файлах выложен полностью работоспособный отчет по статье, который можно быстро адаптировать под Ваши учетные задачи. (тестировалась в ЗУП 2.5.37.1, 2.5.54.1 / 8.2.14.533, 8.2.15.310)

 

Публикация написана мной в далеком 2011 году. Некоторые описанные технические приемы сегодня можно сделать более проще, оптимальнее и элегантнее. 

Однако, сама суть подхода к реализации отчета на СКД принципиально не изменилась.

 

Оглавление

1 Отзывы и успешные внедрения

2 Описание для пользователей

3 Примеры настроек отчета

4 Описание для разработчиков и внедренцев

4.1 Структура регистров для получения данных

4.2 Первый пакет:  РС_РаботникиОрганизаций

4.3 Второй пакет:  ВТ_ТаблицаСотрудников

4.4 Третий пакет: РС_СостоянияСотрудников

4.5 Четвертый пакет: ВТ_СостоянияСотрудниковДополненные

4.6 Пятый пакет: ВТ_СостоянияСУчетомПересеченийПериодов

4.7 Шестой пакет: ВТ_СостоянияРазвернутые

4.8 Седьмой пакет: ВТ_СверткаПоследовательныхОдинаковыхЗаписейСостояний

4.9 Результирующий пакет

4.10 Использование индексов и индексирования

Обратная связь

Обновления, изменения, доработки публикации

 

 

 

1 Отзывы и успешные внедрения

1) Резензия Ирины Кондратенко, руководитель HR-практикой, БИТ. (  http://www.1cbit.ru/events_detail.php?ID=130306&ref=46  ) 

Отчет актуальный, хорошая методологическая проработка. Вызывает уважение профессиональный (системный) подход автора к решению задачи - учтены не только нюансы кадрового учета сотрудников, но и вопросы производительности.
Можем рекомендовать нашим клиентам для использования.

2) Отчет внедрен в некоторых ДЗО ОАО РЖД.

3) Читай комментарии к отчету.

 

 2 Описание для пользователей

Работая с кадровыми и расчетными службами в крупнейшем холдинге РФ, неизбежно сталкиваешься с проблемой сверки и сопоставления кадровых и расчетных данных.  В том случае, если учет невыходов оформляется кадровиками путем ввода документов-отклонений, а на основании этих документов вводятся расчетные документы, то возникновение ошибок в оформлении кадровых документов или их несвоевременная регистрация, может вести к неверному начислению зарплаты и как следствие некорректному расчету налогов. Следует принимать во внимание, что расчетчики оперируют понятием «вид расчета», в то время как кадровики – «состояние сотрудника». В этой связи обеспечение надежной связи между «состояниями сотрудников» и «видами расчетов», возможность ее проанализировать и, в случае необходимости, корректировать - краеугольная задача.

Данный отчет позволяет в детальной и настраиваемой форме выводить информацию о состояниях сотрудников за выбранный период. Данные собираются исключительно с кадровых регистров. С помощью этого отчета можно:

1)      Контролировать ввод документов отклонений и кадровых приказов на прием и увольнение

2)      Сверять кадровые состояния сотрудников с данными из отчета «Форма Т13 (табель)»

3)      Сверять кадровые состояния сотрудников с ведомостью начислений и сводом

4)      Компоновать в различных разрезах (хоть по гороскопу) данные по состояниям сотрудников.

 

По просьбе пользователя rasswet, которую он изложил в комментариях к публикации, поясняю:
дней в периоде - это сколько дней неявки приходится на выбранный в параметрах отчета период.
дней отклонения - это общее зарегистрированное в программе число дней неявки.
Например, строим отчет за период с 01 по 31 января 2012 года. Сотрудница 15 декабря 2011 года уходит в отпуск по уходу за ребенком до 2013 года. Тогда дней в периоде =31, а дней отклонения =547.

Вы можете прямо сейчас скачать  отчет с этого сайта и начать им пользоваться! 

Если у Вас возникли какие-то сложности или есть вопросы и пожелания  - пишите на электронную почту: PanteleevI@Inbox.ru 

 

 3 Примеры настроек отчета

 Основная настройка "По состояниям" :

Настройка отчета  

 

Экзотическая настройка "Состояния по гороскопу"  

Настройка отчета  

 

Настройка отчета "Для сверки табелей"  

Настройка отчета  

 

4 Описание для разработчиков и внедренцев

Более полутора лет назад создал отчет по состояниям (отклонениям). Он создавался для кадровиков и должен был собирать данные исключительно из "кадровых" регистров, т.е. без учета фактически оплаченных периодов. Конечно, просматривал кто и что сделал по этой теме, но стоящих работ не нашел. Решил изобрести удобный велосипед и таки добился своего. Затем было внедрение и продолжительная работа с замечаниями и пожеланиями. Сейчас после протяженного тестирования мне не стыдно поделиться некоторыми соображениями по этой теме.

 

4.1 Структура регистров для получения данных

Для решения задачи нам потребуются обработки:  «Консоль отчетов» и «Консоль отчетов».

Основные данные для отчета будем собирать с регистров сведений: «СостояниеРаботниковОрганизаций» и «РаботникиОрганизаций».

 Рассмотрим структуру этих регистров:

Структура регистров

Оба регистра периодические с периодичностью в пределах дня, подчиненные регистратору.

Они имеют два измерения «Сотрудник» и «Организация» (другие измерения, начинающиеся со слова «удалить»,  уже не используются и представляют собой аппендикс из прошлого).

Важно отметить, что в типовой конфигурации ЗУП 2.5.37.1 в этих регистрах проиндексировано измерение «Организация» и ресурс «Обособленное подразделение»:

Свойство измерения Организация регистра

Для чего нужно использовать индексирование? В таблице реляционной БД данные хранятся обычно в том порядке, в каком их ввели в таблицу. Такой способ позволяет быстро вводить данные, новые записи просто добавляются в конец таблицы. Но вот если нужно что-то быстро найти, то такой способ хранения обеспечивает некоторые трудности в плане производительности. При индексировании таблицы по измерению «Организация» таблица дополнительно упорядочивается по этому полю и при поиске нужно просматривать меньший объем данных.

Если у вас достаточно большой объем данных (от несколько десятков кадровых движений в день и отклонений), то имеет смысл задуматься,  не проиндексировать ли в конфигураторе измерение «Сотрудник»?  Практически во всех типовых запросах с использованием регистров сведений «СостояниеРаботниковОрганизаций» и «РаботникиОрганизаций» связь с другими таблицами осуществляется через поля «Сотрудник», так же очень часто на него накладываются различные условия. Аналогично с полями «Период завершения» и «ПричинаИзмененияСостояния».

 Замечу, что чрезмерное необоснованное индексирование может значительно ухудшить скорость записи данных в БД.

Откроем консоль отчетов, создадим новый отчет, назовем его «Отчет по состояниям».  

Создание отчета в консоли

В конструкторе компоновке данных добавляем набор данных запрос.

 набор данных

Далее работаем в конструкторе.

 

4.2 Первый пакет:  РС_РаботникиОрганизаций

Для того, чтобы получить отчет по состояниям за период нам нужно сначала получить список всех штатных (в т.ч. и совместителей) сотрудников за период. Получим их из регистра сведений «РаботникиОрганизаций».

Нам нужно получить все записи регистра за период. Для этого объединим реальные записи за период с таблицей среза последних на дату начала периода.

Схема получения сотрудников за период

 
 Текст запроса первого пакета:

Количество полей.

9полей:  Сотрудник, Регистратор, Период , Организация,  ЗанимаемыхСтавой, Обособленное Подразделение, ПодразделениеОрганизации, Должность, ГрафикРаботы,  ПричинаИзмененияСостояния.

 5 ссылочных, 2 примитивных.

Количество записей.

Строк при выводе результата в тестовой базе 1750 с отбором за 2011 год.

Таблица результирующих записей (не вся):

         

1

 Александр

01.01.2011

Перемещение

Отделение эксплуатации

 

2

 Анатолий

01.01.2011

Перемещение

Сектор дизайна

 

3

 Анатолий

11.10.2011

Увольнение

Сектор дизайна

 

4

 Альбина

01.01.2011

Перемещение

Сектор организационного обеспечения

 

5

 Жанна

01.01.2011

Перемещение

Сектор методического обеспечения

 

6

 Ксения

01.01.2011

Перемещение

Отдел комплексных систем

 

7

 Ксения

13.05.2011

Увольнение

Отдел комплексных систем

 

Мы добились своей цели: отобрали все записи регистра сведений за период. При этом не забыли последние записи с увольнениями.

 

4.3 Второй пакет:  ВТ_ТаблицаСотрудников

В предыдущем пакете мы получили все актуальные записи регистра сведений «РаботникиОрганизаций». Теперь выберем из них уникальных сотрудников.

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	РС_РаботникиОрганизаций.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТ_ТаблицаСотрудников
ИЗ
	РС_РаботникиОрганизаций КАК РС_РаботникиОрганизаций

СГРУППИРОВАТЬ ПО
	РС_РаботникиОрганизаций.Сотрудник

ИНДЕКСИРОВАТЬ ПО
	Сотрудник;

Количество полей.

1поле:  Сотрудник

 1 ссылочное.

Количество записей.

Строк при выводе результата в тестовой базе 1140 с отбором за 2011 год.

 

4.4 Третий пакет: РС_СостоянияСотрудников

Получим все записи регистра сведений «СостояниеРаботниковОрганизаций» за 2011 год.

 Для этого объединим реальные записи за период с таблицей среза последних на дату начала периода.

 Схема получения записей из РС Состояния сотрудников организаций

Таблица записей регистра (с отбором по сотруднику за 2010 год):

           

1

 Александр Анатольевич

11.11.2009

В командировке

14.11.2009

Работает

 

2

 Александр Анатольевич

22.03.2010

В ежегодном отпуске

27.03.2010

Работает

 

3

 Александр Анатольевич

05.04.2010

В командировке

08.04.2010

Работает

 

4

 Александр Анатольевич

04.05.2010

В ежегодном отпуске

08.05.2010

Работает

 

5

 Александр Анатольевич

25.05.2010

В командировке

28.05.2010

Работает

 

6

 Александр Анатольевич

05.07.2010

В ежегодном отпуске

11.07.2010

Работает

 

7

 Александр Анатольевич

11.07.2010

В ежегодном отпуске

17.07.2010

Работает

 

8

 Александр Анатольевич

10.08.2010

В командировке

14.08.2010

Работает

 

9

 Александр Анатольевич

03.10.2010

В командировке

07.10.2010

Работает

 

10

 Александр Анатольевич

25.10.2010

В ежегодном отпуске

30.10.2010

Работает

 

11

 Александр Анатольевич

01.12.2010

В командировке

03.02.2011

Работает

 
               

В приведенном примере набора записей для нас прежде всего будут интересны первая и последняя строки. Поскольку мы формируем отчет с 01.01.2010, то первую строку нужно преобразовать так, чтобы «период завершения» поставить на место «периода» и «состояние завершения» на место «состояния»:

1

 Александр Анатольевич

11.11.2009

В командировке

14.11.2009

Работает

 

1

 Александр Анатольевич

14.11.2009

Работает

   

В тексте запроса поле «ПЕРИОД» это можно вычислить так:

ВЫБОР
	КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения < НАЧАЛОПЕРИОДА(&НачалоПериода,ДЕНЬ)
			И СостояниеРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
		ТОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения
	ИНАЧЕ СостояниеРаботниковОрганизаций.Период
КОНЕЦ

А поле «ПЕРИОД ЗАВЕРШЕНИЯ» следующим образом:

ВЫБОР
	КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения < НАЧАЛОПЕРИОДА(&НачалоПериода,ДЕНЬ)
			И СостояниеРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
		ТОГДА ДАТАВРЕМЯ(1, 1, 1)
	ИНАЧЕ СостояниеРаботниковОрганизаций.ПериодЗавершения
КОНЕЦ

 

В последней строке поля «период завершения» и «состояние завершения»  не несут смысловой нагрузки, поскольку отчет по 31.12.2010.

11

 Александр Анатольевич

01.12.2010

В командировке

03.02.2011

Работает

 

11

 Александр Анатольевич

01.12.2010

В командировке

   

 

 
 Текст третьего пакета:

Количество полей.

7полей:  Сотрудник, Регистратор, Период ,Состояние, Организация,  ПериодЗавершения, СостояниеЗавершения.

 5 ссылочных, 2 примитивных.

Количество записей.

Строк при выводе результата в тестовой базе 50807 с отбором за 2011 год. 

4.5 Четвертый пакет: ВТ_СостоянияСотрудниковДополненные

Рассмотрим еще один возможный случай.

Записи регистра за период (01.01.2010-31.12.2010) с отбором по сотруднику:

           

№ п/п

Сотрудник

Период

Состояние

Дата возврата

Состояние по окончании

 

1

 Артем Михайлович

14.04.2010

Болеет

     

 

Первая запись в регистре о болезни, до этого строк нет.  Получается временной пробел за период 01.01.2010-13.04.2010. Если разобраться, то мы увидим, что сотрудник был принят 01.03.2010, но документ «Прием на работу в организацию» не делает проводок  по регистру состояний с состоянием «Работает». 

Или еще один пример. Сотрудник принят 07.08.2010 и с тех пор в базе не было введено по нему ни одного документа отклонения (очень трудолюбивый стахановец). Поскольку документ «Прием на работу в организацию» не делает проводок  по регистру состояний с состоянием «Работает» то нам нужно сделать это прямо в запросе вручную.

Документ «Увольнение из организации» так же не делает проводок по регистру состояний. В этой связи нам так же нужно обрабатывать такие случаи в запросе.

Для восполнения временного пробела нам нужно:

1)      выявить всех сотрудников, у которых нет ни одной записи с Периодом и ПериодомЗавершения (если он заполнен)

2)      для каждого сотрудника из 1) получить таблицу с полями: сотрудник, дата приема и состояние = «Работает» из регистра «Работники организаций».

3)      объединить полученные записи о приемах в организацию с записями временной таблицы РС_СостоянияСотрудников 2 пакета.

 
 Текст четвертого пакета: 

Количество полей.

7полей:  Сотрудник, Организация, Регистратор, Период, Состояние, ПериодЗавершения , СостояниеЗавершения.

Из них 5 ссылочных, 2 примитивных.

 Количество записей. 

Строк при выводе результата в тестовой базе 6074 с отбором за 2011 год. 

4.6 Пятый пакет: ВТ_СостоянияСУчетомПересеченийПериодов

Рассмотрим случаи пересечения периодов. 

Записи регистра за период (01.01.2010-31.12.2010) с отбором по сотруднику:

           
             

№ п/п

Сотрудник

Период

Состояние

Период завершения

Состояние завершения

Регистратор

 

13

 Анатолий Борисович

01.01.2010

В ежегодном отпуске

23.01.2010

Работает

Отпуска организаций 1910-ОТ от 22.12.2009 0:00:00

 

14

 Анатолий Борисович

15.01.2010

В отпуске без сохранения зарплаты

25.03.2010

Работает

Отпуска организаций 45-ОБ от 23.03.2010 10:39:34

 
                         

При наличии таких записей отчет нам должен четко показать следующую информацию:

С 01.01 по 14.01 – ежегодный отпуск

С 15.01 по 25.03 – отпуск без сохранения

Другими словами нам нужно:

1)      найти все записи, для которых существуют другие записи, разрывающие их периоды или совпадающие с ними

2)      в найденных записях вычислить ПериодЗавершения=Дата(1,1,1) и СостояниеЗавершения=ПустаяСсылка 

 
 Текст пятого пакета:
Количество полей.

5полей:  Сотрудник, Организация, Регистратор, Период, Состояние

3 ссылочных, 2 примитивных. 

Количество записей.

Строк при выводе результата в тестовой базе 9493 с отбором за 2011 год. 

4.7 Шестой пакет: ВТ_СостоянияРазвернутые

Получим из 1 записи 2 записи,  будто «разворачивая» их. Например из 1записи:

№ п/п

Сотрудник

Период

Состояние

Период завершения

Состояние завершения

Регистратор

13

 Анатолий Борисович

11.01.2010

В ежегодном отпуске

23.01.2010

Работает

Отпуска организаций 1910-ОТ от 22.12.2009 0:00:00

 

получим 2 записи:

№ п/п

Сотрудник

Период

Состояние

Регистратор

13

 Анатолий Борисович

11.01.2010

В ежегодном отпуске

Отпуска организаций 1910-ОТ от 22.12.2009 0:00:00

14

 Анатолий Борисович

23.01.2010

Работает

Отпуска организаций 1910-ОТ от 22.12.2009 0:00:00

Количество записей получится не ровно в 2 раза больше, т.к. будет еще условие.

 
 Текст шестого пакета:

Количество полей.

9полей:  Сотрудник, Организация, РегистраторСостояния, РегистраторСостоянияВид, ПериодС, ПериодПо, Состояние, ДнейОтклонения, ДнейВПериоде .

Из них 5 ссылочных, 4 примитивных.

Количество записей. 

Строк при выводе результата в тестовой базе 9493  за 2011 год. 

Оптимизация.

Пятый «ВТ_СостоянияСУчетомПересеченийПериодов» и шестой «ВТ_СостоянияРазвернутые
пакеты можно без потери производительности объединить в один пакет. 
Выше они специально разделены для более простого понимания того, что происходит. 

 

 
 Оптимизированный пакет «ВТ_СостоянияРазвернутые» будет выглядеть вот так:

4.8 Седьмой пакет: ВТ_СверткаПоследовательныхОдинаковыхЗаписейСостояний

В полученной таблице можно найти следующие записи: 

Вячеслав

Работает

03.09.2011

05.09.2011

Вячеслав

Болеет

06.09.2011

07.09.2011

Вячеслав

Болеет

08.09.2011

03.10.2011

Вячеслав

Болеет

04.10.2011

19.10.2011

Вячеслав

Работает

20.10.2011

31.12.2011

Три записи о состоянии «болеет» можно и  нужно объединить в одну.

Получим следующую таблицу : 

Вячеслав

Работает

03.09.2011

05.09.2011

Вячеслав

Болеет

06.09.2011

07.09.2011

Вячеслав

Работает

20.10.2011

31.12.2011

Теперь  нужно не забыть увеличить  «ПериодПо» в оставшейся записи на число дней удаленных записей.
В результате получим следующую таблицу:

Вячеслав

Работает

03.09.2011

05.09.2011

Вячеслав

Болеет

06.09.2011

19.09.2011

Вячеслав

Работает

20.10.2011

31.12.2011

 
 
 Текст седьмого пакета:
Количество полей.

9полей:  Сотрудник, Организация, РегистраторСостояния, РегистраторСостоянияВид, ПериодС, ПериодПо, Состояние, ДнейОтклонения, ДнейВПериоде .

Из них 5 ссылочных, 4 примитивных.

Количество записей. 

Строк при выводе результата в тестовой базе 9056  за 2011 год.

 

4.9 Результирующий пакет

 
 Текст результирующего пакета:

Количество полей.

9полей:  Сотрудник, Организация, РегистраторСостояния, РегистраторСостоянияВид, ПериодС, ПериодПо, Состояние, ДнейОтклонения, ДнейВПериоде .

Из них 5 ссылочных, 4 примитивных.

Количество записей.

Строк при выводе результата в тестовой базе 9056  за 2011 год.

Нужно понимать, что это полная информация о состояниях более чем 1 тысячи сотрудников за 2011 год.

Полученная таблица является развернутой и наиболее полной информацией о состояниях (отклонениях) сотрудниках за выбранный период. В чистом виде данный запрос рекомендую использовать для создания отчетов, где используется записи регистра сведений «СостояниеРаботниковОрганизаций».

 

4.10 Использование индексов и индексирования

Давайте сделаем замер производительности запроса на получения записей за  период с 01.01.209 по 31.12.2011 год. Сначала будем тестировать на типовой конфигурации ЗУП 2.5.37.1, а затем на измененной, с установленным свойством «индексировать» в измерении «Сотрудник». Запускать запрос будем из обработки «Консоль отчетов». Сортируем по времени выполнения и видим строку №389  Обработка.КонсольОтчетов.Форма :

МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанныхКонсоли, ИсполняемыеНастройки, ДанныеРасшифровкиКонсоли);

- это строка и будет нашей лакмусовой бумажкой.

База файловая размером 3,27 Гб, ПК : intel(r) i5 3.33 Ггц, ОЗУ 4 Гб, 32 разрядная ОС Win7.

Замеры делались 20 раз, с предварительной чисткой КЭШа. Таблица усредненных результатов:

Типовая конфигурация

Измененная конфигурация с индексированным полем «Сотрудник»

Кол

Время %

Время

Кол

Время %

Время

1

0,1745

1,91

1

0,1636

1,76

Замеры показывают, что установка свойства «индексировать» у измерения «Сотрудник» регистров сведений «СостояниеРаботниковОрганизаций» и «РаботникиОрганизаций», дает небольшой прирост производительности.  Расплата за производительность – сложности при обновлении конфигурации (а если она типовая, то снятие с поддержки).

 

Обратная связь

  

Буду рад узнать ваше мнение о статье в комментариях и благодарен за оценку.

Вопросы, предложения сотрудничества и замечания пишите в комментариях, в личку или по адресу Panteleev@Inbox.ru

Резюме автора: //infostart.ru/job/resume/537490/

С пожеланием творческих успехов всем посетителям сайта ИС, Пантелеев Иван.

 

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

Дата: 20120904. По просьбе пользователя rasswet поясняю:
дней в периоде - это сколько дней неявки приходится на выбранный в параметрах отчета период.
дней отклонения - это общее зарегистрированное в программе число дней неявки.
Например, строим отчет за период с 01 по 31 января 2012 года. Сотрудница 15 декабря 2011 года уходит в отпуск по уходу за ребенком до 2013 года. Тогда дней в периоде =31, а дней отклонения =547.

Дата: 20120907.  Новая версия отчета. Исправлены все выявленные ошибки и частные случаи с комбинацией различных отклонений. Отчет тестировался в ЗУП 2.5.54.1 на платформе 8.2.15.310.

Дата: 20120908.  Описание отчета поделено на 2 смысловые части: для пользователя (в начале статьи) и для разработчика. В пользовательской части добавлено несколько картинок с примерами настроек отчета.

Дата: 20171107. В описании отчета некоторые куски кода помещены в сворачиваемые текстовые блоки - сниппеты. Добавлено оглавление, пункт "обратная связь". 

Скачать файлы

Наименование Файл Версия Размер
Отчет по состояния
.erf 166,05Kb
28.11.17
678
.erf 166,05Kb 678 Скачать

См. также

Комментарии
0. Иван Пантелеев (RailMen) 756 22.12.11 23:58 Сейчас в теме
Моя переработанная статья будет полезна и работникам кадровых служб и разработчикам кадровых отчетов. Вся информация для пользователей размещена в самом начале статьи, ниже идет техническое описание сбора данных для отчета.
К статье прикреплен отчет на основе СКД, который позволяет в детальной и настраиваемой форме выводить информацию о состояниях сотрудников за выбранный период. Данные собираются исключительно с кадровых регистров. Через механизм характеристик реализована поддержка использования категорий и свойств объектов.

В описании для разработчиков я расскажу об основных принципах создания отчета по состояниям (отклонениям) сотрудников организаций за выбранный период. Данные будем брать из регистров сведений «СостояниеРаботниковОрганизаций» и «РаботникиОрганизаций». В файлах выложен полностью работоспособный отчет по статье, который можно быстро адаптировать под Ваши учетные задачи.
(тестировалась в ЗУП 2.5.37.1, 2.5.54.1 / 8.2.14.533, 8.2.15.310)

Перейти к публикации

1. Inetguru Ru (Inetguru) 203 22.12.11 23:58 Сейчас в теме
Автор молодец! Все бы авторы так подробно описывали свои доработки и разработки!
2. MagIvan (RailMen) 23.12.11 00:24 Сейчас в теме
(1)
Спасибо, я старался раскрыть тему как можно глубже.
Недавно снял с публикации свои морально устаревшие работы, после чего вылетел из ТОП 100. Впрочем, ничуть об этом не жалею. Я расту как специалист и считаю, что лучше иметь одну, но достойную статью, чем с десяток "таксебе".
monolitFC; +1 Ответить
38. Михаил Ражиков (tango) 480 26.03.13 14:53 Сейчас в теме
(2) MagIvan,
вылетел из ТОП 100
это где смотреть?
39. MagIvan (RailMen) 28.03.13 00:52 Сейчас в теме
(38) что где посмотреть?
я имел ввиду, что входил по рейтингу, а потом вылетел:
http://infostart.ru/community/top100/
но меня это уже не расстраивает, поскольку оценка людей в попугаях очень условна
и тем не менее оценка на Ифостарте для меня как рейтинг кредитоспособности гос-ва, выданный S&P (более менее надежная)
времени мало, в боях участвую ...
3. sound sound (sound) 525 28.12.11 09:08 Сейчас в теме
Пока не пробовал на деле, но за труды однозначно плюс!
monolitFC; +1 Ответить
4. Елена закурина (лилия2009) 28.12.11 09:17 Сейчас в теме
Отличная и подробная документаци,просто как учебное пособие, автору спасибо за труд!
5. no_registration no_registration (no_registration) 28.12.11 14:31 Сейчас в теме
Автору большое спасиба. Попробуем этот отчет под ЗУП Украина.
29. Дмитрий Тапол (DimitrT) 13 19.09.12 15:13 Сейчас в теме
(5) no_registration,
Под ЗУП (как и УПП) для Украины не подойдет: большое отличие в ресурсах регистра РаботникиОрганизаций: в украинской 7 ресурсов, а тут представлено 13.
Вопрос к автору: эти ресурсы (а точнее: ПериодЗавершения, ЗанимаемыхставокЗавершения и т.п.) были изначально в типовой конфигурации или же добавлены для отчета?
30. MagIvan (RailMen) 19.09.12 16:43 Сейчас в теме
(29)
В описании четко написано на каких конфигурациях тестировался отчет -
это типовые для РФ ЗУП.
Можете скачать их релизы и сравнить с ЗУП для Украины.
А лучше откройте консоль и перепишите под себяя. Это не так сложно )))
6. Andrew Belkin (kgdrsu) 29.12.11 10:34 Сейчас в теме
Автору для раздумий: у нас несколько организаций в одной базе. Так вот пробовал запускать ваш отчет и попадают сотры из других Организаций, причем только Уволенные. Стал рыть и добавил условие по организации в пакет ВЛОЖЕННЫЙ в четвертый подзапрос. Тогда стало все ОК. :)
7. Vladimir Говорушкин (Boroda) 90 29.12.11 21:43 Сейчас в теме
Есди не секрет, что изменилось в статье в сравнении с предыдущей редакцией (от 23.12.2011 г.)? Какие-либо слова поменялись местами? Добавлено новое предложение? Изменены формы отчётов? Не мешало бы информировать посетителей, а то статья-то немаленькая, и поиск изменений может занять продолжительное время...
8. Сергей (Seregalink) 72 30.12.11 20:47 Сейчас в теме
Очень хороший отчет, и статья раскрывает суть отчета, однозначно плюсую.
9. muha muhaha (fr.myha) 03.01.12 16:59 Сейчас в теме
Очень обширная, статья, просто мега громадная ))))))
И кодик проведён )
10. Ranika (Ranika) 04.01.12 02:43 Сейчас в теме
Дествительно автор молодец, написал все подробно, понятно, что не мало важно!
11. Александр М (Fruit83) 28 07.01.12 13:52 Сейчас в теме
Для решения задачи нам потребуются обработки: «Консоль отчетов» и «Консоль отчетов».

Тут что-то не так. Наверно, имеется ввиду "Консоль запросов"?
13. Санкт-Петербург Казакова (e_kazakova) 80 09.01.12 09:39 Сейчас в теме
Спасибо, за большую работу большой плюс.
18. Saili 20.01.12 10:33 Сейчас в теме
Спасибо. Важная тема, раскрыта глубоко. Очень хороший отчет, и статья содержит все, что нужно.
Актуально, особенно для организаций с магазинами, текучкой продавцов.
19. jojo nll (nll.jojo) 20.01.12 12:41 Сейчас в теме
спасибо за подробное пояснение
21. rasswet (rasswet) 82 19.03.12 17:40 Сейчас в теме
подскажите пожалуйста, что отражается в дней периоде и в дней отклонений.
дней в периоде это количество рабочих дней которые должен был отработать Сотрудник если бы у него не было отклонений? а дней отклонений-это сумма всех отклонений (больничные, декрет и т.п.)? как тогда отклонений больше чем дней в периоде? или я что-то не понимаю?
22. MagIvan (RailMen) 02.04.12 00:51 Сейчас в теме
(21) rasswet, Все просто.
<дней в периоде> - это сколько дней неявки приходится на выбранный в параметрах отчета период.
<дней отклонения> - это общее зарегистрированное в программе число дней неявки.

Например, строим отчет за период с 01 по 31 января 2012 года. Сотрудница 15 декабря 2011 года уходит в отпуск по уходу за ребенком до 2013 года. Тогда <дней в периоде>=31, а <дней отклонения>=547.
23. rasswet (rasswet) 82 04.04.12 10:41 Сейчас в теме
(22) спасибо за разъяснение. Возможно имеет смысл где-то в описание это включить? или я это пропустил.
24. rasswet (rasswet) 82 09.04.12 15:21 Сейчас в теме
(22) подскажите
делаю отчет за 2012 год, в отчет попадают строки у которых в столбце "период по..." стоит дата 2011 года.
по-моему, в отчет за 12 год не должно быть строк, у которых период по закончился в 11 году. Это прошлый период.
Согласны?
З.Ы. проявляется точно в состоянии "В отпуске без сохранения зарплаты" (достаточно много случаев) и В ежегодном отпуске (немного)
28. MagIvan (RailMen) 10.09.12 13:03 Сейчас в теме
(24)
Выложил новую версию отчета: исправлен лишь частный случай задваивания строк при смене состояний (Командировка->Болеет).
Все варианты и настройки отчета протестированы на большой выборке данных (> 1 тыс. человек). Ошибок не обнаружено.
25. rasswet (rasswet) 82 11.04.12 09:15 Сейчас в теме
(22) подскажите, это всё же недоработка отчета?
делаю отчет за 2012 год, в отчет попадают строки у которых в столбце "период по..." стоит дата 2011 года.
по-моему, в отчет за 12 год не должно быть строк, у которых период по закончился в 11 году. Это прошлый период.
26. lesorubka (lesorubka) 20 20.04.12 14:29 Сейчас в теме
спасибо за подробное описание, очень нужен был запрос на работавших в периоде, как раз первая таблица пригодилась.
31. Игорь (igor1318) 42 04.10.12 12:20 Сейчас в теме
Выбор периода не плохо бы добавить на панель и варианты отчётов выложить вместе с отчётом.
32. MagIvan (RailMen) 04.10.12 21:33 Сейчас в теме
(31)
Не все коту масленница
33. Вячеслав Петрович (kozlovvp) 9 21.01.13 16:33 Сейчас в теме
Нет настроек вариантов отчета, по умолчанию открывается знаки зодиака)))
Изначально использовали этот отчет для контроля остатков отпусков, увы в настройках этого нет
34. Лена Ант (lexi) 1 21.02.13 16:17 Сейчас в теме
Спасибо автору за труды.Суть отчета понятна, мне нужно сделать что-то подобное с нарядами и отклонениями ) спасибо.
35. Лена Ант (lexi) 1 21.02.13 16:23 Сейчас в теме
А как в настройке сделать,что бы вывести первые 2 отчета?
36. qweasd qweasdzc (serega3333) 21.02.13 16:34 Сейчас в теме
спасибо, заодно прокачал знания по запросам, автор +
37. Нина Пашева (alo2012) 22 26.03.13 13:53 Сейчас в теме
Спасибо за отчет, очень помог кадровой службе.
40. ljolsen bykova (ljolsen) 08.05.13 12:46 Сейчас в теме
Большое спасибо за отчет! Автор- умница, очень подробно все расписал. От кадров - глубокая благодарность
41. Владимир Клименко (KliMich) 28.06.13 16:02 Сейчас в теме
Спасибо за статью и отчеты!
Кадровики были очень довольны!
И изложение на высоком учовне!
42. Dmitry Bas (b-dm) 167 08.11.13 12:41 Сейчас в теме
Описание офигенное, но обработка страннная...кому и зачем нужен долбанный знак зодиака ??))))мне вот бы посмотреть реально, не настраивая отклонения.Вобщем пока впечатления от отчета очень кислые.
44. MagIvan (RailMen) 12.11.13 17:00 Сейчас в теме
(42) b-dm,
Сначала подумал, что вы бухгалтер или кадровик, который в глаза не видел конфигуратор. Потом посмотрел - ан нет, вы что-то там писать изволите.
Отчет на СКД был назвал вами обработкой, и весь смысл вашего послания сводился к тому, что вам лень или вы не умеете создавать в режиме предприятия настройки к отчету и сохранять их в справочник "Сохраненные отчеты".
Отчет и его методология буквально разжеваны в статье.
У меня студенты за день въезжают как его настраивать в режиме предприятия в типовой базе.
Короче стыд и позор, товарищ.
47. Dmitry Bas (b-dm) 167 12.11.13 17:47 Сейчас в теме
(44) в ближайшие дни попробую ещё раз разобраться, (я себя не идеализирую в плане знаний), в вашем отчете на СКД а не обработке. думаю не нужно к словам придираться, а смотреть что реально может разработка. Т.к. как она скачана и запущена as is без доп.настроек - это просто тихий ужас.Даёт минимум информации при максимальных сложностях.И не надо на студентах кивать, мы не в вузе, там идите и учите, а здесь делятся знаниями, обсуждают что то.с таким "педагогическим" подходом лучше не учить ничему студентов.
вобщем и целом ваш отчет на СКД мне как пользователю не понравился, за это жирный минус.

кстати, в РЖДшной структуре так важен знак зодиака? по нему берут на работу ?
48. MagIvan (RailMen) 13.11.13 00:42 Сейчас в теме
(47)
Дмитрий, добрый вечер!
Гороскоп не причем, совершенно.
Чем руководствуется отдел кадров РЖД при приеме на работу не представляю,
но догадываюсь, что в основном профессиональными качествами :)
Это ж учебный пример, в котором я как бы намекаю, что можно данные по-всякому компоновать.
Делать это играючи. Гороскоп ли это, или шкала по полу и возрастам ни имеет никакого значения.
Очень хорошо подобные вещи в книге по СКД описаны.
...
Давайте разбираться дальше.
...
С самого начала я принял вас за разработчика, критикующего решение.
Ну раз вы выступаете в роли пользователя - это меняет дело.
Пользователя надо холить и лилеять :)
Какой шаблон отчета нужно добавить, чтобы он отвечал вашим требованиям?
Можете нарисовать макет и разместить тут?

43. Евгений L (laeg) 13 12.11.13 14:20 Сейчас в теме
Однозначно + за работу, но есть непонятные ньюансы. Скрин прикрепляю
Зачем, если я выбираю явно один период - отчет захватывает периоды с пересечением да и вдогонку выводит не нужный период ?
http://www.foto-me.ru/v.php?id=e03cfd498314fbd75c91cebc9528f892


по уму бы, хорошо видеть что данный сотрудник был в этом периоде в отпуске ...
45. MagIvan (RailMen) 12.11.13 17:02 Сейчас в теме
(43) Уважаемый laeg!

Данная статья и отчет к ней - это пример правильного методического подхода к разработки отчетов для кадровых служб большого холдинга. Его можно скачать, посмотреть код, осмыслить идеологию и попытаться транспанировать ее на свои базы. Аккуратно и со всей ответственностью.

Отчет, разумеется, не учитывает специфику конкретно вашего предприятия. Так же в вашей базе могут быть ошибки ведения учета. Скачивать его и ставить в готовом виде имеет смысл только если у вас базовая конфигурация или стирильный учет.

Данный отчет протестирован на предприятиях ДЗО Холдинга численностью более 1.5 тыс чел в 1 базе.
Баз много, все типовые, но сильно дописанные (в т.ч. исправлены косяки разработчиков 1С).
Проблем не было.
Последняя версия отчета переработана и рассчитана на управляемые формы,
но пока выкладывать его не буду.

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

Если вы хотите внедрить отчет подобного уровня в своей базе, то сделать это бесплатно методом скачки с ИСа вряд ли получится. Ибо такие отчеты - это сложный продукт, требующий обязательной адаптации, обучения пользователей, тонкой настройки под учет конкретного предприятия. Повторюсь, этот отчет, как и любой другой в свободном доступе, - для настоящего профи помогает определиться с вектором, но ни коем образом не является панацеей и избавлением от проблем и в готовом виде. Ибо нет и не может быть трафаретных решений для реальных предприятий.

Если вы хотите решение, рассчитанного под ваше предприятие и нужды, то имеет смысл продолжить общение в личке.
dock; laeg; +2 Ответить
46. Евгений L (laeg) 13 12.11.13 17:12 Сейчас в теме
(45) MagIvan, Отчет ваш был взят как пример для разработки другого отчета, который будет использовать теже данные и похожий подход. Естественно я полностью согласен, что брать вещи с ИС и сразу ставить в работу - это авантюризм :)
Но даже на ваших скринах, по моему мнению присутствуют ошибки в подходе решения задачи (хотя может у вас и задачи другие), в частности периодов. Кадровые службы не интересуют что было ДО и ПОСЛЕ указанного периода в параметрах отчета, это лишняя информация.
Еще раз спасибо за то что поделились своей работой, это существенная экономия времени для решения моей задачи.
49. Marina Sharapova (hub logistik) 17.12.13 00:32 Сейчас в теме
50. Гульнара Р (Эсти) 4 19.08.14 10:44 Сейчас в теме
спасибо за статью.
РозаЛюксембург; +1 Ответить
51. олег Попов (Alek81) 11.09.14 19:41 Сейчас в теме
Добрый Вечер, скачал ваш отчет, и немного не понял.
У меня только 1 вариант отчета, а не все 6ть как у вас на картинке.
Можно мне все 6ть?
52. Maxim Kolkin (the1) 311 11.11.15 16:06 Сейчас в теме
(51) Alek81, ага, в тексте 6 вариантов отчета, а в публикации только 1. Автор, непорядок!
53. Иван Пантелеев (RailMen) 756 12.11.15 14:20 Сейчас в теме
(52) the1, сделайте себе столько вариантов, сколько хотите :) Это же просто!
54. Maxim Kolkin (the1) 311 13.11.15 09:47 Сейчас в теме
(53) конечно просто)) Но разговор ведь не о том...
56. Shanya1983 (uralcentr) 09.12.16 11:43 Сейчас в теме
Напишите пожалуйста на бюджетке будет работать?
57. Shanya1983 (uralcentr) 09.12.16 14:00 Сейчас в теме
(56)У меня дней в периоде отрицательное число (ЗУП 2.5 базовая), это как так получилось?
58. Имя Фамилия (MakcTLT63) 10 10.12.16 21:44 Сейчас в теме
Ничосебе автор расписал подробную инструкцию..
Не каждый бы так заморочился.
Немного смущает слово"внедрение" применительно к одному единственному отчету на двух регистрах, но наверное так сейчас принято (давно тут не был).
Раньше когда я начинал внедрением называли установку 1с на несколько десятков пользователей с доработкой под нужды заказчика.
Немного позже внедрением стали называть и установку программы из коробки на 1 рабочее место.
И вот сейчас внедрение - это написание отчета.
Да еще и с рецензиями на этот отчет.
Если сейчас так то я мегавнедренец.
Я таких отчетов по 3 штуки в неделю делаю и во внешние отчеты и обработки складываю.
60. Иван Пантелеев (RailMen) 756 28.11.17 12:51 Сейчас в теме
(58)
Я таких отчетов по 3 штуки в неделю делаю и во внешние отчеты и обработки складываю.


Про "внедрение" отчета.
Такие отчеты создавал аки конвейер много лет. А потом решил провести инвентаризацию созданных отчетов опросив заказчиков (руководители подразделений).
И вот какие пироги получились: 1/3 всех отчетов благополучно забыта по разным причинам (был нужен один раз срочно для отправки наверх или был нужен женщине с особым пониманием процессов, затем она ушла в декрет, и т.д.), еще 1/3 отчетов пользователи опасаются пользоваться т.к. не верят цифрам или бояться спросить почему цифры именно такие. В сухом остатке ГРУБО 1/3 отчетов прижилось.

Для себя решил, что разрабатывать ЛЮБОЙ отчет/обработку/печ формы и тем более отдельный БЛОК буду СТРОГО с соблюдением нескольких примитивных правил (в идеале приблизиться к пром стандартам, но часто они излишни):
1) утвержденное и согласованное с причастными подразделениями ТЗ - на этом этапе отваливается 1/3 идиотских или поверхностно проработанных обращений;
2) личное общение (в любой форме) с исполнителями заказчика с многократным повторением вопроса ЗАЧЕМ ? - часто выясняется, что можно сделать по-другому и более эффективно;
3) ОБЯЗАТЕЛЬНО жестко описывать и документировать НЕ ТОЛЬКО саму логику формирования данных отчета, НО ВСЕХ, еще раз ВСЕХ настроек отчета. ДА! Для каждой настройки отчета я пишу: кто заказчик, где ее используют, из какиких документов тянуться данные и какие подразделения ответственные за эти данные.
Т.е. на выходе я получаю КАЧЕСТВЕННОЕ описание отчета и его настроек.

Результат.
Количество задач на разработку отчетов снизилось. Однако, те задачи, которые остались стали иметь ПРИНЦИПИАЛЬНО другой уровень погружения в процессы заказчиков. Отчеты превратились, образно говоря из ржавых столовых ножей, в элегантные самурайские мечи, которыми бойцы каждый день могут с удовольствием пользоваться.
59. Альбина Шигапова (Ledy-may) 28.11.17 12:29 Сейчас в теме
Огромное спасибо автору! Впервые вижу так подробно разложенный код доработки-очень помогло в написании собственной!
Оставьте свое сообщение