Расширение позволяет реализовать дополнительный функционал при формировании графиков суммированного учета рабочего времени (СУРВ): сдвигать смену на праздничный и/или выходные дни, а также сдвигать первый день начала смены.
Рассмотрим режим работы из двух смен (А и Б) по 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
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.27.291