Цитата
Добрый день!Подскажите, может кто-нибудь уже сталкивался и нашел решение. Сейчас нужно рассчитать аванс по зарплате в 1с 7.7 (Бухгалтерский учет для Украины). Для расчета берется период с 01.08.2014г. по 15.08.2014г. Общий порядок расчета военного сбора в 1с настроил, но не получается корректно настроить расчет данного налога, при условии, что зарплата за 1 августа не является базой обложения военным сбором. В 1с предусмотрена функция на этот счет, но она не корректна если человек отработал меньше положенной за месяц нормы раб. времени (в августе - 20 дней), а отработал например 11 дней (с 1 по 15 августа), в этом случае вычитает по данной функции программа 1/20 базы, а не 1/11. Выкладываю функцию, в которой, как мне кажется, кроется решение моей задачи. Помогите разобраться.
Функция ПолучитьСтавку(ИмяПараметра,стОргПеч)
Перем Инд;
Инд = 0;
Если стОргПеч = "Инд" Тогда
Инд = 1;
КонецЕсли;
НиО = СоздатьОбъект("Справочник.НалогиОтчисления");
Если НиО.НайтиПоКоду(ИмяПараметра) = 1 Тогда
// есть такой налог
ПерСтавка = СоздатьОбъект("Периодический");
ПерСтавка.ИспользоватьОбъект("Ставка",НиО);
ПерСтавка.ВыбратьЗначения(НачалоПериода+1, КонецПериода);
Ставка = 0;
СтавкаПред = НиО.Ставка.Получить(НачалоПериода);
НачалоПериодаСтавки = НачалоПериода;
Пока ПерСтавка.ПолучитьЗначение() = 1 Цикл
Если (КвоДнейНач = 0) И (Инд = 0) Тогда
Предупреждение("В связи с изменением ставки "+ НиО.Наименование + " в текущем месяце, введите количество рабочих дней до изменения ставки!");
ВвестиЧисло(КвоДнейНач,"Кол-во раб.дней до изм.ставки",2,0,)
КонецЕсли;
РабДней = КвоДнейНач;
стОргПеч = стОргПеч + НачалоПериодаСтавки + "-" + (ПерСтавка.ДатаЗнач-1) + " (" + РабДней +" дн.) " + СтавкаПред*100+"%, ";
Ставка = Ставка + СтавкаПред * РабДней;
СтавкаПред = ПерСтавка.Значение;
НачалоПериодаСтавки = ПерСтавка.ДатаЗнач;
КонецЦикла;
Если КвоДнейРаб = 0 Тогда
КвоДнейРаб = ?(Дней <> 0, Дней, 22);
КонецЕсли;
РабДней = КвоДнейРаб - КвоДнейНач;
Если НачалоПериодаСтавки = НачалоПериода Тогда
//Ставка в течение месяца не менялась - значит историю не выводим
стОргПеч = "" + СтавкаПред*100+" %";
РабДней = КвоДнейРаб;
Иначе
стОргПеч = стОргПеч + НачалоПериодаСтавки + "-" + КонецПериода + " (" + РабДней +" дн.) " + СтавкаПред*100+"%";
КонецЕсли;
Ставка = Ставка + СтавкаПред * РабДней;
РабДнейВсего = КвоДнейРаб;
Ставка = Ставка / РабДнейВсего;
Если (НачалоПериодаСтавки <> НачалоПериода) И (Инд = 0) Тогда
Сообщить("Сумма взноса "+ НиО.Наименование + " рассчитана пропорционально рабочим дням ");
Сообщить(" в связи с изменением ставки в течение месяца: "+стОргПеч);
КонецЕсли;
Возврат Ставка;
КонецЕсли;
Возврат 0;
КонецФункции