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