Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оклад+Отпускные в Больничном листе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
akella
еще раз доброе время суток.

последний вопрос что меня интересует)

есть злополучный больничный лист. есть расчет оклада и количества календарных дней для 6 месяцев предшествующих месяцу ухода на больничный.

нужно при вычете оклада учитывать отпускные...цитирую " выплаты включаются в период, за который они начислены. Если отпускные начислены например, в июле за август и сентябрь, то они включаються соотвесвенно в августе и сентябре. Поэтому для поиска выплат нужно проверять ведомоти, начиная за 2 месяца до расчетного периода."

расчетный период это как раз и есть эти 6 месяцев предшествующие месяцу начала больничного листа.

не подскажите как тут быть?

я понимаю что нужно шерстить, документ с больничными и проверять его на наличие больничного для нашего сотрудника... но вот каким макаром..пока хз)

счас читаю книгу по 1с, мож там что найду))) а может и вы что подскажите..
буду очень признателен!!!
заранее спасибо)
alex1c
а в какой конфе ты это делаешь?
akella
конфиг свой. не типовой

отпускные хрянятся в документе расчетная ведомость.
вот от туда их и нужно вытягивать..я пока никидал вот такую белиберду...если может кто поправьте)

РасчетВедомость=СоздатьОбъект("Документ.Расчетная Ведомость");
    Если РасчетВедомость.ВыбратьДокументы(НП1,КП1)=1 и расчетведомость.выбратьдокументы("отпускные")  тогда
        


        Пока РасчетВедомость.ПолучитьДокумент()>0 Цикл
            Если РасчетВедомость.ПометкаУдаления()=0 тогда  
                естьтведомость=1;
                Прервать;
            Конецесли;    
            Конеццикла;                                              
        

        Если Естьведомость=1 тогда
            расчетведомость.ВыбратьСтроки();
            Пока расчетведомость.Получитьстроку()<>0 цикл
                Если расчетведомость.Сотрудник=Сотрудник и расчетведомость.отпускные=отпускные тогда  
                 начислено=всегоначислено+отпускные;
                конецесли;
            конеццикла;
        Конецесли;
    конецесли;
alex1c
Что такое отпускные в данном коде надо знать?
Ну а остальное где-то так...



//РасчетВедомость=СоздатьОбъект("Документ.Расчетная Ведомость");
РасчетВедомость=СоздатьОбъект("Документ.РасчетнаяВедомость");
//Если РасчетВедомость.ВыбратьДокументы(НП1,КП1)=1 и расчетведомость.выбратьдокументы("отпускные") тогда
Если РасчетВедомость.ВыбратьДокументы(НП1,КП1)=1 Тогда

Пока РасчетВедомость.ПолучитьДокумент()>0 Цикл
Если РасчетВедомость.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли;
расчетведомость.ВыбратьСтроки();
Пока расчетведомость.Получитьстроку()<>0 цикл
Если расчетведомость.Сотрудник=Сотрудник и расчетведомость.отпускные=отпускные Тогда
начислено=всегоначислено+отпускные;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;

akella
спс Алекс)
вот что у меня получилось) в целом рабочая схема) почти, но есть 1 беда...почему то не выполняется выделенное условие...

    Отпускные=СоздатьОбъект("Справочник.ВидВыплаты");
    Отпускные.НайтиПоКоду("Отпуск");
    Ведомость=0;
    РасчетВедом=СоздатьОбъект("Документ.РасчетнаяВедомость");
    Если РасчетВедом.ВыбратьДокументы(НП1,КП1)=1  тогда
        Пока РасчетВедом.ПолучитьДокумент()>0 Цикл
            Если РасчетВедом.ПометкаУдаления()=0 тогда  
                Ведомость=1;
                Прервать;
            Конецесли;    
        Конеццикла;                                              
        Если Ведомость=1 тогда
            РасчетВедом.ВыбратьСтроки();
             Пока РасчетВедом.ПолучитьСтроку()<>0 цикл
                Если РасчетВедом.Сотрудник=Сотрудник тогда
                    [u][b]Если РасчетВедом.ВидВыплаты=Отпускные.ТекущийЭлемент() тогда  [/b][/u]
                    
                        Начислено=ВсегоНачисл+Отпускные;
                    иначе
                        Начислено=ВсегоНачисл;
                    конецесли;
                 конецесли;
             конеццикла;                      
        конецесли;
        
    конецесли;


даже если есть начисленные отпускные в нужном нам месяце, то почему то не считается....и не плюсуеться.

заранее спасибо) мож я где то туплю.?
MATEVI
А "Отпускные.НайтиПоКоду("Отпуск");" отрабатывает?
Находит этот справочник?

Начислено = 0;

И что такое "ВсегоНачисл"?

Ну и вообще как то сильно намудрил smile.gif Если уж выбрал такой метод почему не?
РасчетВедом= СоздатьОбъект("Документ.РасчетнаяВедомость");
РасчетВедом.УстановитьФильтр(1,0);
РасчетВедом.ВыбратьДокументы(НП1,КП1);
Пока РасчетВедом.ПолучитьДокумент() = 1 Цикл
РасчетВедом.ВыбратьСтроки();
Пока РасчетВедом.ПолучитьСтроку() = 1 Цикл
Если РасчетВедом.Сотрудник=Сотрудник тогда
...

А лучше запросом
akella
вот рабочий вариант) отлаженный) всегоначисл это оклад.
спс всем кто принимал участие
    Отпускные=СоздатьОбъект("Справочник.ВидВыплаты");
    Отпускные.НайтиПоКоду("Отпуск");
    Ведомость=0;Начислено=ВсегоНачисл;
    РасчетВедом=СоздатьОбъект("Документ.РасчетнаяВедомость");
    Если РасчетВедом.ВыбратьДокументы(НП1,КП1)=1  тогда
        Пока РасчетВедом.ПолучитьДокумент()>0 Цикл
            Если РасчетВедом.ПометкаУдаления()=0 тогда  
                Ведомость=1;
                Прервать;
            Конецесли;    
        Конеццикла;                                              
        Если Ведомость=1 тогда
            РасчетВедом.ВыбратьСтроки();
             Пока РасчетВедом.ПолучитьСтроку()<>0 цикл
                Если РасчетВедом.Сотрудник=Сотрудник тогда
                    Если РасчетВедом.ВидВыплаты=Отпускные.ТекущийЭлемент() тогда  
                    
                    Начислено=Начислено+РасчетВедом.Сумма;
                //    иначе
                //        Начислено=ВсегоНачисл;
                    конецесли;
                 конецесли;
             конеццикла;                      
        конецесли;
        
    конецесли;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.