Имя: Пароль:
1C
1С v8
Перерасчеты и расчет зарплаты
0 wwwqwert2014
 
23.08.14
12:24
Как мне правильно получить число дней, зная ДанныеГрафик.ЗначениеФактическийПериодДействия в часах? Можно, конечно, делить на 8, но вдруг не 8 часов работал человек?
я таким образом выъодил из ситуации, не знаю, насколько это правильно:
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    СтруктураПоиска = Новый Структура("НомерСтроки");
    Для Каждого Строка Из НаборЗаписей Цикл
        СтруктураПоиска.НомерСтроки = Строка.НомерСтроки;
        
        ВыборкаДетальныеЗаписи.Сбросить();
        Если ВыборкаДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) Тогда
            Если Строка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад тогда
                Строка.Результат = Строка.Ставка * ВыборкаДетальныеЗаписи.ЗначениеФактическийПериодДействия;
                Строка.РезультатДни = ВыборкаДетальныеЗаписи.ЗначениеФактическийПериодДействия / 8;//СКОЛЬКО ОТРАБОТАНО ДНЕЙ - НЕ НРАВИТСЯ
                Строка.РезультатЧасы = ВыборкаДетальныеЗаписи.ЗначениеФактическийПериодДействия;
            Иначе
                
                Если ВыборкаДетальныеЗаписи.РезультатДниБаза <> 0 Тогда
                    Строка.Результат = Строка.РезультатБаза / ВыборкаДетальныеЗаписи.РезультатДниБаза * ВыборкаДетальныеЗаписи.ЗначениеФактическийПериодДействия / 8;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        
        
    КонецЦикла;
Просто в зависимых видах расчета иногда расчет результата идет исходи из отработанных часов, а иногда из отработанных дней
1 wwwqwert2014
 
23.08.14
12:25
И еще такой вопрос. Как бы мне правильно настроить перерасчеты?
Я создал обработку "Перерасчет зарплаты" и в динамическом списке вывел все документы, которые необходимо перерассчитать и потом просто их перепровел. Вот мне интересно, насколько я правильно это сделал.
Вот код процедуры перерасчета



&НаСервереБезКонтекста
Процедура ПерерасчитатьНаСервере(СсылкаНаОбъект)
    // Вставить содержимое обработчика.

    СсылкаНаОбъект.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);
    
    
    
КонецПроцедуры

&НаКлиенте
Процедура Перерасчитать(Команда)
    Пока Элементы.ТаблицаПерерасчета.ТекущаяСтрока <> Неопределено Цикл
        
        Строка = Элементы.ТаблицаПерерасчета.ТекущиеДанные;
        
        ОбъектПерерасчета = Строка.ОбъектПерерасчета;
        ПерерасчитатьНаСервере(ОбъектПерерасчета);

        
        
        Элементы.ТаблицаПерерасчета.ТекущаяСтрока = Элементы.ТаблицаПерерасчета.ТекущаяСтрока + 1;
    КонецЦикла;

    
КонецПроцедуры
2 floody
 
23.08.14
12:57
Проще получить ответ на такой вопрос на форуме Чистова, там люди как раз подобным занимаются.
Ошибка? Это не ошибка, это системная функция.