Как добавить новое состояние в документ Неявки и болезни и правильно отразить его в табеле

Программист 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом Управленческий учет IT и автоматизация бизнеса
← На главную

При ведении кадрового учета в программе 1С:Зарплата и Управление Персоналом редакции 2.5 пользователи нередко сталкиваются с необходимостью зафиксировать специфическую причину отсутствия сотрудника, например, отпуск без оплаты или особое состояние, отсутствующее в стандартном списке выбора кадрового документа Неявки и болезни в организации. Разберем архитектурные особенности подсистемы учета неявок, выясним, почему простого добавления нового значения в перечисление недостаточно для корректного заполнения табеля, и рассмотрим правильные пути решения этой задачи.

Проанализируем две ключевые проблемы: почему классификатор рабочего времени доступен в кадровых документах лишь частично и почему после добавления нового состояния в табель все равно подставляется рабочая явка.

Архитектура учета состояний сотрудников: почему нельзя просто выбрать позицию из классификатора

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

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


СписокПричинОтсутствия = ПроцедурыУправленияПерсоналом.ПолучитьСписокПрочихСостоянийРаботника();

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

Почему в табеле учета рабочего времени заполняется «Явка»

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

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

  1. Отсутствие соответствия в запросах табеля. При автоматическом заполнении табеля и отчета Унифицированная форма Т-13 система выполняет пакетный запрос к периодическому регистру сведений Состояние работников организаций. В тексте запроса жестко прописана конструкция сопоставления кадровых состояний с кодами классификатора через конструкцию ВЫБОР КОГДА ... ТОГДА .... Для добавленного значения ветка соответствия отсутствует, запрос возвращает пустое значение, и программа автоматически берет плановые данные из графика работы сотрудника.
  2. Приоритет расчетных данных над кадровыми. В конфигурации первичными для фиксации фактически отработанного времени являются данные расчетных регистров (регистр расчета Основные начисления работников организаций). Кадровый документ не формирует расчетных записей, он лишь регистрирует намерение. Для фиксации неявки с нулевой оплатой в расчетном контуре требуется специализированный документ Невыходы в организации.

Вариант 1. Типовое решение без снятия с поддержки и доработки конфигурации

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

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

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

2. Использование инструмента «Анализ неявок».

После проведения кадрового документа расчетная служба открывает обработку Анализ неявок, которая автоматически считывает кадровые события и позволяет в один клик сформировать расчетные документы: для оплачиваемых отпусков — документ Начисление отпуска работникам организаций, а для неоплачиваемых — документ Невыходы в организации. В результате в регистрах расчета появляется вытесняющая запись с нулевой суммой, и табель заполняется безошибочно.

3. Метод сплошной регистрации непосредственно в табеле.

Если бизнес-процесс компании допускает упрощенный документооборот, буквенный код неявки («ДО», «ОЗ», «НБ») и нулевое количество часов можно внести вручную непосредственно в проведенный документ Табель учета рабочего времени организаций. При проведении табель сам зафиксирует фактические часы отсутствия.

Вариант 2. Доработка конфигурации при жестких требованиях регламента

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

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

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

← На главную