При ведении кадрового учета в программе 1С:Зарплата и Управление Персоналом редакции 2.5 пользователи нередко сталкиваются с необходимостью зафиксировать специфическую причину отсутствия сотрудника, например, отпуск без оплаты или особое состояние, отсутствующее в стандартном списке выбора кадрового документа Неявки и болезни в организации. Разберем архитектурные особенности подсистемы учета неявок, выясним, почему простого добавления нового значения в перечисление недостаточно для корректного заполнения табеля, и рассмотрим правильные пути решения этой задачи.
Проанализируем две ключевые проблемы: почему классификатор рабочего времени доступен в кадровых документах лишь частично и почему после добавления нового состояния в табель все равно подставляется рабочая явка.
Рассмотрим структуру хранения данных об отсутствиях в кадровом контуре. В конфигурации список возможных состояний сотрудника на кадровом уровне жестко ограничен системным объектом метаданных — перечислением СостоянияРаботникаОрганизации. Справочник Классификатор использования рабочего времени содержит множество кодов (например, «ДО», «ОЗ», «УВ», «Г»), однако напрямую кадровый документ с ним не связан.
В документе Неявки и болезни в организации поле «Состояние» жестко типизировано указанным перечислением, а выпадающий список доступных причин формируется программно при открытии формы с помощью вызова экспортной функции общего модуля:
СписокПричинОтсутствия = ПроцедурыУправленияПерсоналом.ПолучитьСписокПрочихСостоянийРаботника();
Поскольку перечисление является неизменяемым в режиме 1С:Предприятие объектом конфигурации, добавить в него произвольную причину через пользовательский интерфейс невозможно. Для этого требуется снятие конфигурации с типовой поддержки и доработка метаданных.
Разберем типичную ситуацию: разработчик добавил новое значение в перечисление СостоянияРаботникаОрганизации, включил его в список функции ПолучитьСписокПрочихСостоянийРаботника() в общем модуле ПроцедурыУправленияПерсоналом, кадровик успешно выбрал причину и провел документ. Однако при автозаполнении документа Табель учета рабочего времени организаций сотруднику по-прежнему проставляются рабочие часы и буквенный код «Я».
Выясним причину такого поведения системы. В программе реализована строгая двухконтурная модель учета: кадровый контур и расчетный контур.
Унифицированная форма Т-13 система выполняет пакетный запрос к периодическому регистру сведений Состояние работников организаций. В тексте запроса жестко прописана конструкция сопоставления кадровых состояний с кодами классификатора через конструкцию ВЫБОР КОГДА ... ТОГДА .... Для добавленного значения ветка соответствия отсутствует, запрос возвращает пустое значение, и программа автоматически берет плановые данные из графика работы сотрудника.Основные начисления работников организаций). Кадровый документ не формирует расчетных записей, он лишь регистрирует намерение. Для фиксации неявки с нулевой оплатой в расчетном контуре требуется специализированный документ Невыходы в организации.Прежде чем вмешиваться в программный код и усложнять последующие обновления конфигурации, рассмотрим штатную методику, заложенную разработчиками фирмы «1С».
1. Использование документа «Отпуска организаций» для неоплачиваемого времени.
По методологии типовой конфигурации отпуска без сохранения заработной платы (за свой счет, по семейным обстоятельствам, учебные без оплаты) относятся к категории отпусков. Кадровая служба должна регистрировать их документом Отпуска организаций, выбрав соответствующий вид отпуска («Отпуск без сохранения оплаты»). Данный документ штатно сопоставлен с кодами классификатора («ДО», «ОЗ») и корректно передается в подсистему расчета.
2. Использование инструмента «Анализ неявок».
После проведения кадрового документа расчетная служба открывает обработку Анализ неявок, которая автоматически считывает кадровые события и позволяет в один клик сформировать расчетные документы: для оплачиваемых отпусков — документ Начисление отпуска работникам организаций, а для неоплачиваемых — документ Невыходы в организации. В результате в регистрах расчета появляется вытесняющая запись с нулевой суммой, и табель заполняется безошибочно.
3. Метод сплошной регистрации непосредственно в табеле.
Если бизнес-процесс компании допускает упрощенный документооборот, буквенный код неявки («ДО», «ОЗ», «НБ») и нулевое количество часов можно внести вручную непосредственно в проведенный документ Табель учета рабочего времени организаций. При проведении табель сам зафиксирует фактические часы отсутствия.
Если изменить регламент работы кадровой службы невозможно и требуется обеспечить работу нового состояния именно через документ Неявки и болезни в организации, выполним доработку системы по шагам.
СостоянияРаботникаОрганизации и добавляем новый элемент, например, ОтпускБезОплаты.ПроцедурыУправленияПерсоналом в теле экспортной функции ПолучитьСписокПрочихСостоянийРаботника() добавляем новое значение в формируемый список значений, чтобы оно отображалось в выпадающем списке документа Неявки и болезни в организации.Состояние работников организаций. Добавляем ветку сопоставления нового состояния с требуемым элементом справочника видов времени:
КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезОплаты)
ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.ОтпускБезСохраненияОплаты)
ВЫБОР КОГДА ... ТОГДА внедряем в модуль отчета Т-13, иначе в печатной форме будет продолжать выводиться явка.Невыходы в организации с нужным видом начисления (с настроенным вытеснением оклада и надбавок).Посмотрим на последствия доработки: изменение типовых запросов в общих модулях и документах учета времени приведет к необходимости постоянного ручного объединения кода при каждом обновлении конфигурации. Поэтому приоритетным и наиболее надежным способом ведения учета остается использование штатного документа Отпуска организаций с последующим вводом документа Невыходы в организации.