Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Расчет военного налога без учета одного раб. дня (01.08.2014)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
sasha111
Цитата
Добрый день!
Подскажите, может кто-нибудь уже сталкивался и нашел решение. Сейчас нужно рассчитать аванс по зарплате в 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;            
КонецФункции

alex040269
это же только предоплата. Окончательный расчет будет по тьогам месяца. И нужно будет брать 1/20-ю.
sasha111
У нас принято решение начислять и уплачивать данный сбор с аванса также. Кроме того, при расчете общей месячной зарплаты, если сотрудник отработал не 20 дней, а 17, то при вводе в предупреждающем окошке (количество раб. дней до изменения ставки) - 1 день, программа вычитает 1/20 дня, а не 1/17 дня.
Домовик
Нужно смотреть не только эту функцию. Посмотрите: деление идёт на Рабднейвсего, значение этой переменной идёт от значения переменных Кводнейраб и дней. Присвоение значений этим переменным в модуле формы документа. Дней - поле ввода. При вводе нового документа по умолчанию присваивается 22 дня. Что отладчик показывает по этим переменным?
sasha111
Всем спасибо! Я нашел решение. Достаточно заменить Рабдней и Рабднейвсего на Отработанодней.
galynap
Ребят, пришла помощи попросить.. я хоть и пользователь, но слабенький.. Как в 1с77 бухгалтерия ввести новый этот налог - военный сбор.
в справочник налогов добавила, а чтобы он рассчитывался при расчете з.пл. чего сделать нужно?
заранее спасибо за уделенное время для ответа smile.gif
Pepe
GALYANAP. Необходимо обновить 1с до последнего релиза.
volodya1122
Аби не плодити тем., запитаю тут.

 ! 

Правила, п.6.
 
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.