Имя: Пароль:
1C
1С v8
ЗУП 2.5.98.2 Изменить расчет основного начисления "Доплата за ночные часы"
,
0 YurAnt
 
05.02.16
08:14
Доброго времени суток, господа-форумчане.
Поступила хотелка в виде: сделать Доплату за ночные часы не дефолтной

1) "Результат = Тарифная ставка часовая * Процент доплаты * Ночное время в часах"

А вида:

2) "Результат = (ТарифнаяСтавкаЧасовая + РегНадбавка + НадбавкаЗаДостиженияВТруде)* Процент доплаты * Ночное время в часах"

Надо сказать с построением формул начислений в ЗУП как-то доселе сталкиваться не приходилось, потому сразу возник вопрос:

Как хотя бы продублировать "руками" первую формулу?
При редактировании произвольной формулы расчета среди показателей отсутствуют и "процент доплаты" и "Ночное время в часах"...

Если их добавлять через "Добавить показатель" то каким образом он должен быть настроен? Или же "процент" и "ночное" могут быть "собраны" из имеющихся показателей ?

Заранее благодарен за любые советы,
С ув. YurAnt.
1 YurAnt
 
05.02.16
08:15
*где в п. 2)
РегНадбавка и НадбавкаЗаДостиженияВТруде - есть основные начисления
2 Prog111
 
05.02.16
08:33
(0) Я делал подобное через внешнюю обработку по заполнению документа "Регистрация разовых начислений", так как не смог придумать формулу:-)
3 Prog111
 
05.02.16
08:35
Можно ли в формуле вида расчета (ЗУП 2.5) получить количество ночных часов?
Вот тут может увидишь что полезное, в третьем сообщении.
4 dmpl
 
05.02.16
09:04
(0) Показатель "ВремяВЧасах" даст ночные часы, надо только вид времени по табелю установить "Ночные часы".
5 dmpl
 
05.02.16
09:06
+(4) Ну а дальше все просто: зависимое первого уровня с расчетной базой.
6 El_Duke
 
гуру
05.02.16
09:36
(0) Я бы не городил монстра из 2), а разбил бы это на 3 слагаемых (начисления). Тогда каждый Вася Пупкин получив расч. листок видел бы сколько и за что ему начислили, да и бухгалтерам-расчетчикам аналитики больше было. А из общего котла не выгрести сведений ни человеку, ни бухгалтеру.
7 YurAnt
 
08.02.16
08:54
Итак, может кому-нибудь пригодится.
В типовой зп в модуле объекта есть ф-я:

//****************************************************
Функция ВыполнитьАвтозаполнение(НачалоПериодаЗаполнения, ОкончаниеПериодаЗаполнения, Запрос = Неопределено, ЭтоПерерасчет = Ложь, СписокФизЛиц = Неопределено, МассивСотрудники = Неопределено) Экспорт
//****************************************************

Собственно из неё, выдрал механизм заполнения, вынес во внешку, как вы,  Prog111, и посоветовали.
Конкретнее изменения коснулись расчета тарифной ствки
кусок начиная с:

//****************************************************
ОсновнойТекстЗапроса = ОсновнойТекстЗапроса + "
        |ПОМЕСТИТЬ ВТСведенияОНочныхВечерних
//****************************************************

делаю свой запрос который собирает тарифную ставку не по окладу а по "оклад + обе_надбавки"
цепляю его левым соединением к "СписокНачислений" по сотруднику, и далее заменяю там где используется

//|                                    ИНАЧЕ СписокНачислений.ОкладТариф / (СписокНачислений.ДлительностьРабочейНедели / 5 * (ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоРабочихДней, 0) + ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоПредпраздничныхДней, 0)) - ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоПредпраздничныхДней, 0)) * 12
        |                                   ИНАЧЕ ВТБазаТарифнойСтавки.Показатель1 / (СписокНачислений.ДлительностьРабочейНедели / 5 * (ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоРабочихДней, 0) + ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоПредпраздничныхДней, 0)) - ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоПредпраздничныхДней, 0)) * 12
        //*******************************************************

Ну вроде как работает... все довольны.
хотя то что это монстр и костыль не спорю =/
8 YurAnt
 
08.02.16
08:56
Т.е. СписокНачислений.ОкладТариф заменяю на свою расчитанную по сотру ВТБазаТарифнойСтавки.Показатель1 везде где в этом есть необходимость.

Огромная благодарность всем, кто участвовал и помогал.
Тему, в общем-то, можно закрывать.
9 YurAnt
 
08.02.16
08:59
(7) +
"В типовой зп в модуле объекта есть ф-я: "

заменить на

"В типовой зп в модуле объекта документа НачислениеЗарплатыСотрудникамОрганизации есть ф-я: "
10 YurAnt
 
08.02.16
09:09
для полноты картины добавлю пример запроса собирающий "базу"

//**************************************************
Запрос.Текст = "ВЫБРАТЬ
        |    ВТРаботникиИНачисления.Сотрудник,
        |    СУММА(ВЫБОР
        |            КОГДА ВТРаботникиИНачисления.ВидРасчетаНаименование ПОДОБНО ""%Оклад%""
        |                ТОГДА ВТРаботникиИНачисления.Показатель1
        |            КОГДА ВТРаботникиИНачисления.ВидРасчетаНаименование ПОДОБНО ""%Надбавка за достижения%""
        |                ТОГДА ВТРаботникиИНачисления.Показатель1
        |            КОГДА ВТРаботникиИНачисления.ВидРасчетаНаименование ПОДОБНО ""%Региональная%""
        |                ТОГДА ВТРаботникиИНачисления.Показатель1
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК Показатель1
        |ПОМЕСТИТЬ ВТБазаТарифнойСтавки
        |ИЗ
        |    ВТРаботникиИНачисления КАК ВТРаботникиИНачисления
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТРаботникиИНачисления.Сотрудник";
        
        Запрос.Выполнить();
11 Гость из Мариуполя
 
гуру
08.02.16
10:42
для полноты картинки рассмотрения различных вариантов:
http://forum.infostart.ru/forum46/topic61256/message672577/#message672577
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший