Print
Category: Все материалы
Hits: 3916

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

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

Речь пойдет о том, как в новой редакции получить тариф/оклад сотрудника на заданную дату. Этот самый тариф нам очень часто нужен для вывода в отчетах чисто информативно. Проблема в том, что в 1С ЗУП 3.0 не очевидно, какое из плановых начислений является основным. 

В 2.5 на сотрудника можно было повесить всего одно основное начисление, был жесткий контроль. При попытке повесить в кадровом приказе два начисления мы получали сообщение "сотруднику не может быть назначено основное начисление дважды".

При этом основным называлось то, у которого реквизит "ВидВремени" был равен "Начисление за работу полную смену в пределах нормы времени".

  



Теперь такого нет, в 1С Зарплата и Управление персонало 3.0 мы легко можем повесить человеку два "основных" начисления. Тут теперь вообще нет такого понятия, как основное/не основное. Сделали это не спроста, на практике бывают хитрые случаи, когда у человека одновременно и тариф по часам и оклад и тариф для сдельной оплаты труда. Это редкость, но такое бывает и структура данных в ЗУП 3.0 этому не мешает.

Так вот, получается, что у человека есть куча плановых начислений, и понять, кто из них основное мы не можем. Как это все настроить, чтобы оно потом корректно считалос - совсем другая история. Наша задача заполнить в шапке абстрактного отчета по сотруднику "оклад/тариф". Хотя, почему абстрактного, в расчетном листке в заголовке как раз он и выводится.

Первая засада с выбором наичсления решается следующим образом: у вида расчета есть поле "РеквизитДопУпорядочивания", у кого он меньше, тот и будет главным.

Этот реквизит не видим пользователю, он определяет порядок вывода видов расчета в расчетке (по нему идет сортировка). Правится его значение в форме списка выидов расчета с помощью стрелочек

Но это не все. Найдя плановое начисление с самым маленьким "порядком", Вы не узнаете его размер. Теперь в ЗУП 3.0 размеры показателей лежат в отдельном регистре сведений. Раньше конфой было ограничено их количество шестью. Теперь их может быть много, и глядя в регистр сведений "ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников" нифига не понятно, кто из них главный.

Чтобы понять, кто из них главный, надо залезть в таб.часть вида расчета "Показатели" и по булеву полю "ОсновнойПоказатель" вычисляем самого главного, он будет гарантировано один.

  



Ниже привожу рабочий текст запроса, который возвращает все что нужно

ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПлановыеНачисленияСрезПоследних.Сотрудник КАК Сотрудник,

ПлановыеНачисленияСрезПоследних.Начисление КАК Начисление,
ВЫБОР
КОГДА ПлановыеНачисленияСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ПлановыеНачисленияСрезПоследних.ДействуетДо > КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
И &Период <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ПлановыеНачисленияСрезПоследних.Используется
ИНАЧЕ ПлановыеНачисленияСрезПоследних.ИспользуетсяПоОкончании
КОНЕЦ КАК Используется
ПОМЕСТИТЬ ВТПлановыеНачисленияСрезПоследних
ИЗ
РегистрСведений.ПлановыеНачисления.СрезПоследних(&Период, Сотрудник = &Сотрудник) КАК ПлановыеНачисленияСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПлановыеНачисленияСрезПоследних.Сотрудник КАК Сотрудник,
ПлановыеНачисленияСрезПоследних.Начисление КАК Начисление,
Начисления.РеквизитДопУпорядочивания КАК Порядок,
ЕСТЬNULL(НачисленияПоказатели.Показатель, ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)) КАК ОсновнойПоказатель
ПОМЕСТИТЬ ВТПлановыеНачисленияСотрудниковСПоказателем
ИЗ
ВТПлановыеНачисленияСрезПоследних КАК ПлановыеНачисленияСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК Начисления
ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
ПО Начисления.Ссылка = НачисленияПоказатели.Ссылка
И (НачисленияПоказатели.ОсновнойПоказатель)
ПО ПлановыеНачисленияСрезПоследних.Начисление = Начисления.Ссылка
ГДЕ
ПлановыеНачисленияСрезПоследних.Используется
ИНДЕКСИРОВАТЬ ПО
Сотрудник,
Порядок,
Начисление
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПлановыеНачисленияСотрудников.Сотрудник КАК Сотрудник,
МИНИМУМ(ПлановыеНачисленияСотрудников.Порядок) КАК Порядок
ПОМЕСТИТЬ ВТПорядокОсновныхНачислений
ИЗ
ВТПлановыеНачисленияСотрудниковСПоказателем КАК ПлановыеНачисленияСотрудников
СГРУППИРОВАТЬ ПО
ПлановыеНачисленияСотрудников.Сотрудник
ИНДЕКСИРОВАТЬ ПО
Сотрудник,
Порядок
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТПлановыеНачисленияСотрудниковСПоказателем.Сотрудник,
ВТПлановыеНачисленияСотрудниковСПоказателем.Начисление,
ВТПлановыеНачисленияСотрудниковСПоказателем.ОсновнойПоказатель,
ВЫБОР
КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Значение
КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.ДействуетДо < &период
ТОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.ЗначениеПоОкончании
ИНАЧЕ ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Значение
КОНЕЦ КАК ТарифОклад
ИЗ
ВТПорядокОсновныхНачислений КАК ВТПорядокОсновныхНачислений
ЛЕВОЕ СОЕДИНЕНИЕ ВТПлановыеНачисленияСотрудниковСПоказателем КАК ВТПлановыеНачисленияСотрудниковСПоказателем
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(&Период, ) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних
ПО ВТПлановыеНачисленияСотрудниковСПоказателем.Сотрудник = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Сотрудник
И ВТПлановыеНачисленияСотрудниковСПоказателем.ОсновнойПоказатель = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Показатель
ПО ВТПорядокОсновныхНачислений.Сотрудник = ВТПлановыеНачисленияСотрудниковСПоказателем.Сотрудник
И ВТПорядокОсновныхНачислений.Порядок = ВТПлановыеНачисленияСотрудниковСПоказателем.Порядок