Каталог решений - Расширение функционала формирования графиков суммированного учета рабочего времени. ЗУП 3.1

Расширение функционала формирования графиков суммированного учета рабочего времени. ЗУП 3.1

Расширение функционала формирования графиков суммированного учета рабочего времени. ЗУП 3.1

В наличии

Не «вытеснение» рабочего времени праздниками, а «сдвиг» на следующий непраздничный день при формировании графиков суммированного учета рабочего времени по сменам.

Категория:

Описание

Расширение позволяет реализовать дополнительный функционал при формировании графиков суммированного учета рабочего времени (СУРВ): сдвигать смену на праздничный и/или выходные дни, а также сдвигать первый день начала смены.

Рассмотрим режим работы из двух смен (А и Б) по 11,5 часов с чередованием для каждой смены 2 дня работа, 2 дня отдых. «Дополнительный нюанс 1» — праздничные дни тоже являются днями отдыха (закрашены красным). «Дополнительный нюанс 2» —  работодатель решил установить дополнительные конкретные дни отдыха (закрашены оранжевым).

 

Время работы

ЯНВАРЬ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

7.30 – 20.00

 

 

 

 

 

 

 

 

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Вых.дни

АБ

АБ

АБ

АБ

АБ

АБ

АБ

АБ

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

Время работы

ФЕВРАЛЬ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

 

 

7.30 – 20.00

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

 

А

А

Б

Б

А

А

 

 

Вых.дни

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

АБ

Б

Б

А

А

Б

Б

 

 

Время работы

МАРТ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

7.30 – 20.00

Б

Б

А

А

Б

Б

А

 

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

Вых.дни

А

А

Б

Б

А

А

Б

АБ

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Время работы

АПРЕЛЬ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

 

7.30 – 20.00

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

 

 

 

 

Вых.дни

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

АБ

АБ

АБ

 

Время работы

МАЙ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

7.30 – 20.00

 

Б

А

 

 

А

Б

Б

 

 

 

 

А

 

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Вых.дни

АБ

А

Б

АБ

АБ

Б

А

А

АБ

АБ

АБ

АБ

Б

АБ

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

А

А

Б

Б

                                 

 

Установка флажка «При заполнении учитывать праздничные дни» в праздничные дни:

 

 

не проставит рабочие часы, но не «перенесёт/сдвинет» их на следующий не праздничный день (а как учесть дополнительные конкретные дни отдыха — завести специальный производственный календарь???):

 

Месяц

Смена А (учитывать праздничные дни)

 
 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

Январь

         

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

 

Февраль

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

   

11,5

  

11,5

11,5

 

Х

Х

 

Март

 

11,5

11,5

  

11,5

10,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

 

1 квартал

                                

Апрель

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

Х

 

Май

 

11,5

  

11,5

11,5

   

11,5

  

10,5

   

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

 

Для «сдвига» необходимо установить флажок расширения «При заполнении сдвигать смену с учетом праздничных дней» и добавить в список «Нерабочих праздничных дней» нужные праздники и дополнительные конкретные дни отдыха:

 

 

Рабочее время, попавшее на дни из списка «Нерабочих праздничных дней», будет переноситься/сдвигаться на следующий день не из этого списка:

 

Месяц

Смена А (сдвигать на праздничные и дополнительные конкретные дни отдыха)

 
 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

Январь

         

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

 

Февраль

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

   

11,5

11,5

  

11,5

11,5

Х

Х

 

Март

  

11,5

11,5

  

11,5

 

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

   

1 квартал

                                

Апрель

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

    

Х

 

Май

  

11,5

  

11,5

      

11,5

 

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

  

11,5

11,5

 

 

Аналогичный подход применяется если надо сделать дополнительными конкретные днями отдыха и все выходные (Субботу и Воскресенье) – устанавливаем флажок «При заполнении сдвигать смену с учетом выходных дней» (доступен только если сдвигаются праздники!):

 

Месяц

Смена А (сдвигать на праздничные, дополнительные конкретные дни отдыха и все выходные)

 
 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

Январь

         

11,5

11,5

    

11,5

11,5

    

11,5

11,5

  

11,5

  

11,5

   

Февраль

11,5

11,5

    

11,5

11,5

    

11,5

11,5

    

11,5

11,5

     

11,5

11,5

  

Х

Х

 

Март

11,5

  

11,5

  

11,5

   

11,5

  

11,5

11,5

    

11,5

11,5

    

11,5

11,5

     

1 квартал

                                

Апрель

11,5

11,5

  

11,5

  

11,5

  

11,5

11,5

    

11,5

11,5

    

11,5

11,5

  

11,5

   

Х

 

Май

 

11,5

    

11,5

11,5

       

11,5

11,5

    

11,5

11,5

    

11,5

11,5

   

 

Если смена устроена как 8 часов вечером с 18-00 до 00-00 и 8 часов утром с 00-00 до 08-00 и нужно, чтобы сотрудники приходили так, чтобы их часть (вторая половина) смены всегда была в рабочий день, а часть (первая половина) смены могла приходится на «нерабочий день» (праздничный, выходной, дополнительный конкретный день отдыха). Например, это сотрудники, которые заряжают батареи электроинструмента/электротранспорта перед сменой сотрудников, использующих электротехнику. Т.е. они должны работать, как и сотрудники, использующие электротехнику, но выходить в день перед ними! Почему бы просто не сделать им дату отсчета на день меньше? – некорректно будут работать сдвиги выходных!

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

 

Месяц

Часы по видам времени "Явка", "Вечерние часы", выведены в формате Я/ВЧ

 
 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

Январь

       

8

8

8

8

  

8

8

8

8

8

8

  

8

8

8

8

  

8

8

8

8

 
        

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

 

Февраль

8

8

  

8

8

8

8

  

8

8

8

8

8

8

  

8

8

8

8

   

8

8

8

8

Х

Х

 
 

6/2

2/6

  

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

   

6/2

2/6

6/2

2/6

 

Март

  

8

8

8

8

   

8

8

8

8

8

8

  

8

8

8

8

  

8

8

8

8

8

8

   
   

6/2

2/6

6/2

2/6

   

6/2

2/6

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

6/2

2/6

   

1 квартал

                                
                                 

Апрель

8

8

8

8

  

8

8

8

8

8

8

  

8

8

8

8

  

8

8

8

8

8

8

    

Х

 
 

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

6/2

2/6

     

Май

8

8

  

8

8

8

8

     

8

8

8

8

  

8

8

8

8

  

8

8

8

8

8

8

 
 

6/2

2/6

  

6/2

2/6

6/2

2/6

     

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

  

6/2

2/6

6/2

2/6

6/2

2/6

 

 

Способ реализации такого алгоритма следующий:

Создаем в справочнике «Графики» дополнительные реквизиты для хранения нужных значений (и настраиваем ввод/изменение/сохранение на форме элемента):

 

 

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

Для заполнения графика с учетом новых параметров надо внести изменения в 2 процедуры модуля объекта справочника «Графики»:

В процедуру "ЗаполнитьДанныеГрафика" в начало добавить: 

//РСГ # begin
НачинаемСдвигатьПраздникиВыходные = Ложь; // Если дата начала построения графика приходится на праздник или выходной и стоит сдвигать
// - то сдвиг начинаем после первого отработанного(не праздник и не выходной) дня.
//РСГ # en

а код заполнения рабочего времени за день: 

Если ЗаполнятьВремяЗаДень(ОбрабатываемаяДата, ВидДня, ПеренесенныеДни) Тогда
	ЗаполнитьВремяЗаДень(ОбрабатываемаяДата, ВидДня, ЧасовЗаДень, ДанныеГрафика, ПриоритетВидовВремениДляПредпраздничных, ОтражатьЧасыВДеньНачалаСмены);
КонецЕсли;
				
ОбрабатываемаяДата = ОбрабатываемаяДата + ДлинаСуток;
	
НомерДняЦикла = НомерДняЦикла + 1;

заменить на:

//РСГ # begin  
Если НЕ НачинаемСдвигатьПраздникиВыходные Тогда //Проверяем надо ли сдвигать праздники и выходные
	Если (СдвигатьПраздники И ВидДня <> Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник) 
		Или ((СдвигатьПраздники И ВидДня <> Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник)
		И (СдвигатьВыходные И ВидДня <> Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота	
		И ВидДня <> Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье)) Тогда 
		НачинаемСдвигатьПраздникиВыходные = Истина; //Устанавливаем флаг сдвига
	КонецЕсли;
КонецЕсли;	
Если НачинаемСдвигатьПраздникиВыходные	//Сдвигаем 
	И (СдвигатьПраздники 									//праздники
	Или СдвигатьВыходные) Тогда					//и выходные		
	Если ЗаполнятьВремяЗаДень(ОбрабатываемаяДата, ВидДня, ПеренесенныеДни) Тогда	//Сдвиг не нужен
		Если СдвигатьСмену 								//Сдвигаем смену по календарным дням
			И ДнейСдвигаСмены <> 0 Тогда	//вперед или назад на отличное от нуля значение 
			ЗаполнитьВремяЗаДень(ОбрабатываемаяДата + ДнейСдвигаСмены, ВидДня, ЧасовЗаДень, ДанныеГрафика, ПриоритетВидовВремениДляПредпраздничных, ОтражатьЧасыВДеньНачалаСмены);						
		Иначе	//Не сдвигаем смену по календарным дням
			ЗаполнитьВремяЗаДень(ОбрабатываемаяДата, ВидДня, ЧасовЗаДень, ДанныеГрафика, ПриоритетВидовВремениДляПредпраздничных, ОтражатьЧасыВДеньНачалаСмены);
		КонецЕсли;	
		НомерДняЦикла = НомерДняЦикла + 1;
	КонецЕсли;

	ОбрабатываемаяДата = ОбрабатываемаяДата + ДлинаСуток;

Иначе // Обычный порядок	
	Если ЗаполнятьВремяЗаДень(ОбрабатываемаяДата, ВидДня, ПеренесенныеДни) Тогда
		ЗаполнитьВремяЗаДень(ОбрабатываемаяДата, ВидДня, ЧасовЗаДень, ДанныеГрафика, ПриоритетВидовВремениДляПредпраздничных, ОтражатьЧасыВДеньНачалаСмены);
	КонецЕсли;

	ОбрабатываемаяДата = ОбрабатываемаяДата + ДлинаСуток;

	НомерДняЦикла = НомерДняЦикла + 1;
КонецЕсли;	
//РСГ # end

В функцию "ЗаполнятьВремяЗаДень" в конец надо добавить проверки на флаги "сдвига":

//РСГ # begin
Если СдвигатьПраздники Тогда //Сдвигаем праздники - Свой список праздников        
	Если НерабочиеПраздничныеДни.Найти(ОбрабатываемаяДата, "Дата") <> Неопределено Тогда     
		Возврат Ложь;			
	КонецЕсли;	
КонецЕсли;

Если СдвигатьВыходные //Сдвигаем выходные
	И (ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота
	Или ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье) Тогда 
	Возврат Ложь;			
КонецЕсли;	
//РСГ # end
 

has been added to your cart:
Оформление заказа