Имя: Пароль:
1C
1С v8
Расчет северной надбавки в ЗУП
0 vechiy
 
05.07.12
16:49
Подскажите, по какой формуле рассчитывается северная надбавка в ЗУПе?:)
1 1C_OOLer
 
05.07.12
16:50
Результат = Северный стаж оценить по Шкала надбавок * Расчетная база
ваш КО :)
2 vechiy
 
05.07.12
16:55
ну более очевидную формулу)
3 vechiy
 
05.07.12
16:55
хотя, чего я ещё хочу)
получается, половина расчетной базы - вот и вся северная надбавка?
4 vechiy
 
05.07.12
16:55
что значит "оценить"?
5 1C_OOLer
 
05.07.12
17:00
Значит посчитать процент в зависимости от стажа работы на севере...

в УПП где-то тут

Функция ПолучитьПроцентыСевернойНадбавкиЗаПериод(ДатаРегистрации, ПорядокНачисления,
                       НачальныйПроцент, Месяцев, Дней, ДатаНачала, ДатаОкончания) Экспорт
                       
   мДлинаДня = 60*60*24;
   ВозврМассив = Новый Массив;
   
   // в общем случае шкала может состоять из двух участков
   РазмерПериода1 = 0;
   РазмерПрироста1 = 0;
   Ограничение1 = 0;
   РазмерПериода2 = 0;
   РазмерПрироста2 = 0;
   Ограничение2 = 0;
   Если      ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа1Льготная Тогда
       РазмерПериода1 = 6;
       РазмерПрироста1 = 20;
       Ограничение1 = 60;
       РазмерПериода2 = 6;
       РазмерПрироста2 = 10;
       Ограничение2 = 100;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа1Обычная Тогда
       РазмерПериода1 = 6;
       РазмерПрироста1 = 10;
       Ограничение1 = 100;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа2Льготная Тогда
       РазмерПериода1 = 6;
       РазмерПрироста1 = 20;
       Ограничение1 = 60;
       РазмерПериода2 = 12;
       РазмерПрироста2 = 20;
       Ограничение2 = 80;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа2Обычная Тогда
       РазмерПериода1 = 6;
       РазмерПрироста1 = 10;
       Ограничение1 = 60;
       РазмерПериода2 = 12;
       РазмерПрироста2 = 10;
       Ограничение2 = 80;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа3Льготная Тогда
       РазмерПериода1 = 6;
       РазмерПрироста1 = 10;
       Ограничение1 = 50;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа3Обычная Тогда
       РазмерПериода1 = 12;
       РазмерПрироста1 = 10;
       Ограничение1 = 50;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа4Льготная Тогда
       РазмерПериода1 = 6;
       РазмерПрироста1 = 10;
       Ограничение1 = 30;
   ИначеЕсли ПорядокНачисления = Перечисления.ПорядокНачисленияСеверныхНадбавок.Группа4Обычная Тогда
       РазмерПериода1 = 12;
       РазмерПрироста1 = 10;
       Ограничение1 = 10;
       РазмерПериода2 = 24;
       РазмерПрироста2 = 10;
       Ограничение2 = 30;
   Иначе // порядок не указан
       Элемент = Новый Структура("Период, Процент", ДатаНачала, 0);
       ВозврМассив.Добавить(Элемент);
       Возврат ВозврМассив;
   КонецЕсли;
   
   ДатаОтсчета = ДатаРегистрации - Дней * мДлинаДня;
   ПрошлоМесяцевПослеДатыОтсчета = (Год(ДатаНачала) - Год(ДатаОтсчета)) * 12 + Месяц(ДатаНачала) - Месяц(ДатаОтсчета) -
       ?(День(ДатаНачала) >= День(ДатаОтсчета), 0, 1);
   ПрошлоМесяцев = (Год(ДатаНачала) - Год(ДатаОтсчета)) * 12 + Месяц(ДатаНачала) - Месяц(ДатаОтсчета) -
       ?(День(ДатаНачала) >= День(ДатаОтсчета), 0, 1) + Месяцев;
   Если РазмерПериода2 = 0 Тогда    
       // у шкалы только один участок
       ПрошлоПериодов = Цел(ПрошлоМесяцев / РазмерПериода1);
       ОстатокМесяцев = ПрошлоМесяцев - ПрошлоПериодов * РазмерПериода1;
       Процент = Мин(НачальныйПроцент + ПрошлоПериодов * РазмерПрироста1, Ограничение1);
       Элемент = Новый Структура("Период, Процент", ДатаНачала, Процент);
       ВозврМассив.Добавить(Элемент);
       ДатаСменыПроцента = ДобавитьМесяц(ДатаОтсчета, ПрошлоМесяцевПослеДатыОтсчета + РазмерПериода1 - ОстатокМесяцев);
       Пока ДатаСменыПроцента < ДатаОкончания Цикл
           Процент = Мин(Процент + РазмерПрироста1, Ограничение1);
           Элемент = Новый Структура("Период, Процент", ДатаСменыПроцента, Процент);
           ВозврМассив.Добавить(Элемент);
           Если Процент = Ограничение1 Тогда
               Прервать;
           КонецЕсли;
           ДатаСменыПроцента = ДобавитьМесяц(ДатаСменыПроцента, РазмерПериода1);
       КонецЦикла;
   ИначеЕсли НачальныйПроцент >= Ограничение1 Тогда
       // используем уже второй участок шкалы
       ПрошлоПериодов = Цел(ПрошлоМесяцев / РазмерПериода2);
       Процент = Мин(НачальныйПроцент + ПрошлоПериодов * РазмерПрироста2, Ограничение2);
       Элемент = Новый Структура("Период, Процент", ДатаНачала, Процент);
       ВозврМассив.Добавить(Элемент);
       ДатаСменыПроцента = ДобавитьМесяц(ДатаОтсчета, (ПрошлоПериодов + 1) * РазмерПериода2);
       Пока ДатаСменыПроцента < ДатаОкончания Цикл
           Процент = Мин(Процент + РазмерПрироста2, Ограничение2);
           Элемент = Новый Структура("Период, Процент", ДатаСменыПроцента, Процент);
           ВозврМассив.Добавить(Элемент);
           Если Процент = Ограничение2 Тогда
               Прервать;
           КонецЕсли;
           ДатаСменыПроцента = ДобавитьМесяц(ДатаСменыПроцента, РазмерПериода1);
       КонецЦикла;
   Иначе
       // два участка у шкалы
       ДатаСменыПроцента = ДобавитьМесяц(ДатаОтсчета, - Месяцев);
       Процент = НачальныйПроцент;
       РазмерПрироста = РазмерПрироста1;
       РазмерПериода = РазмерПериода1;
       Ограничение = Ограничение1;
       Если ДатаСменыПроцента >= ДатаНачала И ДатаСменыПроцента <= ДатаОкончания Тогда
           Если ДатаСменыПроцента > ДатаНачала Тогда
               Элемент = Новый Структура("Период, Процент", ДатаНачала, Макс(Процент - РазмерПрироста,0));
               ВозврМассив.Добавить(Элемент);
           КонецЕсли;
           Элемент = Новый Структура("Период, Процент", ДатаСменыПроцента, НачальныйПроцент);
           ВозврМассив.Добавить(Элемент);
       Иначе
           Пока ДатаСменыПроцента < ДатаОкончания Цикл
               Если ДатаСменыПроцента = ДатаНачала Тогда
                   Элемент = Новый Структура("Период, Процент", ДатаСменыПроцента, Процент);
                   ВозврМассив.Добавить(Элемент);
                   Прервать;
               ИначеЕсли ДатаСменыПроцента > ДатаНачала Тогда
                   Элемент = Новый Структура("Период, Процент", ДатаНачала, Макс(Процент - РазмерПрироста,НачальныйПроцент));
                   ВозврМассив.Добавить(Элемент);
                   Элемент = Новый Структура("Период, Процент", ДатаСменыПроцента, Процент);
                   ВозврМассив.Добавить(Элемент);
                   Прервать;
               КонецЕсли;
               Процент = Процент + РазмерПрироста;
               Если Процент > Ограничение Тогда
                   Если Процент > Ограничение2 Тогда
                       Процент = Ограничение2;
                       Прервать;
                   Иначе
                       // если уже перешли на второй участок...
                       // сначала отменим увеличение процента
                       Процент = Процент - РазмерПрироста;
                       // сменим параметры участка шкалы
                       РазмерПрироста = РазмерПрироста2;
                       РазмерПериода = РазмерПериода2;
                       Ограничение = Ограничение2;
                       // установим процент с использованием новых параметров
                       Процент = Процент + РазмерПрироста;
                   КонецЕсли;
               КонецЕсли;
               ДатаСменыПроцента = ДобавитьМесяц(ДатаСменыПроцента, РазмерПериода);
               Если ДатаСменыПроцента > ДатаОкончания Тогда
                   // если это уже за пределами периода - отменим увеличение процента
                   Процент = Процент - РазмерПрироста;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
           // если так ничего и не добавили - вернем последнее значение процента на дату начала периода
           Если ВозврМассив.Количество() = 0 Тогда
               Элемент = Новый Структура("Период, Процент", ДатаНачала, Процент);
               ВозврМассив.Добавить(Элемент);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
       
   Возврат ВозврМассив;
   
КонецФункции
6 ale-sarin
 
05.07.12
17:00
(4) А шкалу надбавок посмотреть? Процент северной надбавки зависит от стажа.
7 vechiy
 
05.07.12
17:16
ага, уже понял, пасиба!
Ошибка? Это не ошибка, это системная функция.