Организация работ

Организация работ - общее название раздела системы, предназначенного для организации учета рабочего времени, назначения времени исполнения процессов. Все элементы доступны в меню Пуск  Организация работ.
work 1

Типы дней / Календарь рабочих дней

Календарь определяет распределение дней по типам. Сами типы дней определяются в конфигурации. Целесообразно выделить конфигурацию по организации работ в отдельный блок.

Типы дней добавляются правилами вида:

callboard.workdays.type.<id>.title=<title>
callboard.workdays.type.<id>.color=<color>

Где:

  • <id> - числовой идентификатор типа дня;

  • <title> - наименование типа дня;

  • <color> - HTML HEX цвет типа дня.

Пример:

callboard.workdays.type.1.title=Рабочий день
callboard.workdays.type.1.color=#1C94C4
callboard.workdays.type.1.workHours=8
callboard.workdays.type.2.title=Выходной
callboard.workdays.type.2.color=#f36223
callboard.workdays.type.2.workHours=0
callboard.workdays.type.3.title=Сокращенный день
callboard.workdays.type.3.color=#808080
callboard.workdays.type.3.workHours=7
callboard.workdays.type.4.title=Праздник
callboard.workdays.type.4.color=#FF0000
callboard.workdays.type.4.workHours=0
callboard.workdays.type.4.holiday=1

Конфигурация календаря выглядит следующим образом:

callboard.workdays.calendar.<id>.title=<title>
callboard.workdays.calendar.<id>.comment=<comment>
callboard.workdays.calendar.<id>.rule=<rules>

Где:

  • <id> - порядковый номер

  • <rules> - правила распределния. Правила разделяются ";". Правила могут быть вида X:Y, либо X1-X2:Y (где X - порядковый день недели, Y - id типа рабочего дня, X1-X2 - диапазон дней недели, например 1-5 значит с 1 по 5)

Пример настройки календаря с типами дней из предыдущего примера:

callboard.workdays.calendar.1.title=Стандартный
callboard.workdays.calendar.1.comment=Общий план распределения рабочих дней
callboard.workdays.calendar.1.rule=1-5:1;6,7:2;

Здесь правила означают, что: дни с 1 по 5 каждой недели будут соотноситься с типом 1 (Рабочие дни в данном примере), а дни 6 и 7 с типом 2 (Выходные дни).

Можно создать неограниченное количество календарей с различными наборами распределения рабочих дней.

После добавления в конфигурации календарь появляется в таблице календарей.

work 2

И может быть открыт для правки.

work 3

В календаре уже отмечены типы дней согласно правилам. Выбрав в выпадающем списке тип времени возможно переопределение типов для конкретных дней.

Категории

Для разделения типов работ, шаблонов смен между подразделениями возможно добавление в конфигурацию категорий.

Категория добавляется следующим правилом:

callboard.worktype.category.<id>.title=<title>
callboard.worktype.category.<id>.public=<public>

Где:

  • <id> - уникальный числовой идентификатор категории;

  • <title> - наименование;

  • <public> - 0, если категория не доступна для всех.

Пример:

#Конфигурация категорий рабо
callboard.worktype.category.1.title=Общая
callboard.worktype.category.1.public=0
callboard.worktype.category.2.title=Вторая линия (осн)
callboard.worktype.category.2.public=0
callboard.worktype.category.3.title=Расчетная служба
callboard.worktype.category.3.public=0
callboard.worktype.category.4.title=Первая линия (осн)
callboard.worktype.category.4.public=0
callboard.worktype.category.5.title=Сервисная служба
callboard.worktype.category.5.public=0
callboard.worktype.category.6.title=Тестовая категория
callboard.worktype.category.6.public=0
callboard.worktype.category.7.title=Служба технической поддержки (Старшие)
callboard.worktype.category.7.public=0
callboard.worktype.category.8.title=РЦП
callboard.worktype.category.8.public=0

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

Типы работ

Тип работы определяет характер выполняемых действий подразделением в определённый момент времени.

work 4

Редактор типа работы.

work 5

Категория соотносит тип работы категории. Цвет - используется в плане работ. Флаг "Учитывать в рабочих часах" - относится к генерации табеля и отображению сумм часов в графике. Обозначения в табеле - для генерации табеля.

Шаг длительности определяет размер минимального слота времени для графика дежурств. В графике допускаются типы работ с одинаковым размером слота. Способ назначения времени указывает на то, устанавливать ли время исполнения процесса на начало слота либо сдвигать время начала по мере заполнения слота. Конфигурация определяет сколько минут занимает определённый процесс данного типа работы. Конфигурация нужна только если тип работы используется для назначения на смены с ним процессов.

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

rule.<pos>.checkExpression=<expression>
rule.<pos>.duration=<duration>

Где:

  • <pos> - порядковый числовой номер правила;

  • <expression> - JEXL выражение проверки соответствия процесса правилу;

  • <duration> - длительность в минутах.

В JEXL процессор передаются объекты:

  • process - объект класса ru.bgcrm.model.process.Process - процесс;

  • processParam - объект класса ru.bgcrm.dao.expression.ParamValueFunction - параметры процесса;

  • processLink - объект класса ru.bgcrm.dao.expression.ProcessLinkFunction - для работы с привязками процесса;

  • shift - объект класса ru.bgcrm.struts.action.WorkAction.ShiftData.

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

Пример правил, в зависимости от значения спискового параметра процесса процесс может занимать разную длительность.

cnt=1
# отсеивание типов процессов отличных от 9432 (Подключение физ. лиц (Уфа))
rule.{@inc:cnt}.checkExpression=process.getTypeId() != 9432
rule.{@cnt}.duration=0
#
# подключение любых задач, кроме пакета услуг, по договорам NK
rule.{@inc:cnt}.checkExpression=cu.intersection( processParam.listValueIds( 123 ),
u.toIntegerSet( "1,3" ) ).size() > 0 && shift.getUserIds().size() == 1
rule.{@cnt}.duration=90
# полная бригада
rule.{@inc:cnt}.checkExpression=cu.intersection( processParam.listValueIds( 123 ),
u.toIntegerSet( "1,3" ) ).size() > 0 && shift.getUserIds().size() > 1
rule.{@cnt}.duration=60
#
#
#rule.{@inc:cnt}.checkExpression=processParam.listValueIds( 123 ).size() > 0 &&
shift.userIds().size() == 1
#rule.{@cnt}.duration=90
#rule.{@inc:cnt}.checkExpression=processParam.listValueIds( 123 ).size() > 0 &&
shift.userIds().size() > 1
#rule.{@cnt}.duration=60
#
# правило по-умолчанию
rule.{@inc:cnt}.checkExpression=true
rule.{@cnt}.duration=120

Шаблоны смен

Шаблоны смен используются для заполнения графика, разделяются по категориям.

work 6
work 7

Цвет и символ смены используются для обозначения его в графике дежурств. В смену могут быть добавлены несколько видов работ. Время закрытия не включается в диапазон. Допустим один переход суток, например так.

work 8

График дежурств

График дежурств соотносит смены с исполнителями-членами групп. График позволяет учитывать рабочее время сотрудников, назначать время исполнения процессов, выгружать табель использования рабочего времени.

Настройка

График дежурств настраивается в конфигурации следующим образом.

callboard.<id>.groupId=<groupId>
callboard.<id>.calendarId=<calendarId>
# необязательные параметры
# автоматическое добавление групп при назначение смены в отсутствующей группе
#callboard.<id>.autoAddGroup=1

Где:

  • <id> - уникальный числовой идентификатор графика;

  • <groupId> - код группы пользователей, для которой составляется график;

  • <calendarId> - код календаря рабочего времени, который является подложкой графика.

Работа с графиком

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

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

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

work 9

На данном примере в группе есть две подгруппы. Пользователи, относящиеся только к основной группе - расположены внизу. Кликом по пользователю активируется окно добавление ему группы с определённым периодом.

work 10

Для установки смен необходимо выбрать в выпадающем списке над графиком "Смены", выбрать категорию смен, выбрать смену и устанавливать её кликами либо протаскиванием зажатой ЛКМ по ячейкам графика. "Пустая" смена очищает ячейку.

work 11
work 12

Установка одной бригады в сутках на двух исполнителей с разными сменами невозможно. Если у второго и последующего исполнителя ставится бригада, присутствующая у исполнителя с заполненной сменой - данная смена устанавливается на исполнителей.

Табель рабочего времени

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

callboard.<id>.tabel.template=<template>
callboard.<id>.tabel.departmentTitle=<title>
callboard.<id>.tabel.paramTabelNumberId=<tabelNumberParamId>
callboard.<id>.tabel.paramPostId=<postNumberParamId>

Где:

  • <id> - идентификатор графика;

  • <template> - ссылка на XLS файл-шаблон табеля;

  • <title> - наименование в заголовке табеля;

  • <tabelNumberParamId> - код параметра пользователя типа "text", содержащего табельный номер сотрудника;

  • <postNumberParamId> - код параметра пользователя типа "text", содержащего должность сотрудника.

Образец с шаблоном табеля docpattern/tabel_blank.xls поставляется с системой. Рекомендуется скопировать файл и сохранить с другим именем.

callboard.2.groupId=9
callboard.2.calendarId=1
callboard.2.tabel.template=docpattern/tabel_blank.xls
callboard.2.tabel.departmentTitle=Служба технической поддержки службы удаленной
поддержки клиентов
callboard.2.tabel.paramTabelNumberId=884
callboard.2.tabel.paramPostId=773

В графике, для которого произведена настройка в левом вернем углу отображается ссылка выгрузки табеля, возвращающая XLS файл.

work 13

Примерный внешний вид готового табеля.

work 14

Табель строится на основании типов работ, содержащихся в установленных пользователям сменах.

work 15

Виды работ, помеченные для учёта в рабочих часах суммируются в рядах.

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

Могут быть указаны:

  • Я - явка, вид работ засчитывается в рабочие часы;

  • Н - ночные часы работы, обычно комбинируется с явкой;

  • В - выходной день;

  • С - сверхурочная работа;

  • РВ - работа в выходной день.

Назначение времени

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

callboard.timeset.graphId=<graphId>
callboard.timeset.paramId=<paramId>
callboard.timeset.daysShow=<daysShow>

Где:

  • <graphId> - идентификатор графика из конфигурации;

  • <paramId> - код параметра процесса типа "datetime" в который будет записано назначенное время;

  • <daysShow> - какое количество дней после выбранной даты выводить в списке доступных времён.

Пример:

callboard.timeset.graphId=3
callboard.timeset.paramId=610
callboard.timeset.daysShow=3

Внешний вид вкладки назначения времени в процессе.

work 16

Назначенное время возможно переопределить.

План работ

План работ отображает назначенное время на конкретные сутки с выводом описаний занимающих процессов

work 17

Цвет означает тип работ. Строка-описание процесса настраивается с помощью JEXL выражения в конфигурации типа процесса, в objectTypes указывется callboard.

Пример:

processReference.1.objectTypes=callboard
processReference.1.stringExpression=u:escapeXml( u:maskNull( u:getFirst(
processParam:addressValues( 90, 'fromStreet' ) ) ) ) + " : " + process.
getDescription()

С целью оптимизации описание процесса для плана генерируется только в момент установки времени процесса и не изменяется в дальнейшем при правке процесса.

Процесс (для заливки графика дежурств)

Также существует возможность загрузки графика дежурств при помощи Excel-таблицы. Для этого формируется файл (в .xlsx-формате) примерно следующего содержания

callboard process1

где в самой первой строке - формируется строка с днями, а в первой колонке - строка с ФИО сотрудника. Далее в пересечении (дня с ФИО) - указывается "символьное обозначение" смены дежурства. Например значение клетки "07/16", говорит о смене сотрудника с 07 до 16 часов.

Затем из "Очереди процессов" создаётся процесс "Загрузка графика дежурств #11413". При заполнении процесса, потребуется указать: - название графика дежурств; - год; - месяц; - прикрепить сформированную ранее Excel-таблицу (с графиком дежурств)

callboard process2
В рамках одного процесса можно загрузить только один график дежурств

Процесс "Загрузка графика дежурств #11413" создастся в статусе Открыт (10), для обработки/загрузки прикреплённого графика, процесс надо будет перевести в статус Принят (9).