рубрики: ЗУП 2.5 | Дата: 9 апреля, 2014
При приеме на работу в ЗУП сотруднику как правило назначаются плановые начисления, т.е. те которые рассчитываются каждый расчетный период. Это могут быть «Оклад по дням», «Оклад по часам», «Оплата по часовому тарифу», «Районный коэффициент» и т.д.
Хранятся плановые начисления в периодическом регистре сведений «ПлановыеНачисленияРаботниковОрганизаций». Храниться в нем могут как основные, так и дополнительные плановые начисления. В дальнейшем зачастую возникает необходимость получить из этого регистра, скажем так, «главное» основное начисление. Как правило это: «Оклад по дням», «Оклад по часам», «Оплата по часовому тарифу», «Оплата по дневному тарифу». Естественно сотруднику может быть назначено только одно плановое начисление из приведенного списка. Казалось бы все очевидно — вставляем в запрос условие «ГДЕ …. В(&СписокВидовРасчета)». Но на самом деле это делается по другому. Если мы посмотрим на структуру регистра сведений, то увидим, что в нем есть измерение ВидРасчетаИзмерение, а есть ресурс ВидРасчета. И в том и в другом случае тип составной, где в качестве значений могут выступать элементы планов видов расчета «ОсновныеНачисленияОрганизаций» и «ДополнительныеНачисленияОрганизаций». В чем же отличие измерения от ресурса и зачем сделано казалось бы дублирование информации. Если сделать простейший запрос:
ВЫБРАТЬ
ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение,
ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
ИЗ
РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
то мы увидим, что ресурс ВидРасчета заполнен всегда, а вот измерение ВидРасчетаИзмерение иногда заполнено (и в этом случае его значение совпадает с ресурсом), а иногда его значение равно НЕОПРЕДЕЛЕНО.
Сразу возникает вопрос, в каких же случаях измерение при проведении документов заполняется, а в каких нет. Если посмотреть в код, можно увидеть, что при формировании движений измерение заполняется только в том случае, когда у вида расчета реквизит ЗачетОтработанногоВремени равен Ложь. То есть когда ЗачетОтработанногоВремени равно Истина измерение остается пустым. Заглянув в план видов расчета «ОсновныеНачисленияОрганизаций» увидим, что в Истину ЗачетОтработанногоВремени установлен для видов расчета: «Оклад по дням», «Оклад по часам», «Оплата по часовому тарифу», «Оплата по дневному тарифу», плюс еще для нескольких (в моей конфигурации 8 вместе с перечисленными). И чтобы получить для сотрудников «главное» плановое основное начисление необходимо выполнить следующий запрос:
ВЫБРАТЬ
ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
ИЗ
РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
ГДЕ
ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
Конечно, такое архитектурное решение может вызывать вопросы. Но когда знаешь про момент описанный выше, все довольно просто. И с другой стороны, с точки зрения логики одному сотруднику не могут быть назначены одновременно, например, «Оклад по дням» и «Оплата по часовому тарифу». Следовательно это надо как-то контролировать. А при данной архитектуре контроль выполняется средствами системы 1С, т.к. она не позволит записать две записи с одинаковым набором измерений. Хотя с учетом того, что регистр периодический, это справедливо только для одного и того же периода, т.е. в рамках одного дня.
Добавить комментарий