Имя: Пароль:
1C
1С v8
УПП Посчитать отработанные часы сотрудника за период
0 laby1
 
26.09.16
16:15
Подскажите, как лучше всего посчитать, сколько по табелю часов у сторудника (включая РП).
1 laby1
 
26.09.16
16:21
Может там есть уже что-то готовое
2 kumena
 
26.09.16
16:30
мНомераВремени = Новый Массив;
    мНомераВремени.Добавить("Первый");
    мНомераВремени.Добавить("Второй");
    мНомераВремени.Добавить("Третий");
    мНомераВремени.Добавить("Четвертый");
    мНомераВремени.Добавить("Пятый");
    мНомераВремени.Добавить("Шестой");
    
    Текст =
    "
    |Выбрать
    //|    &Организация КАК Организация
    |    ДанныеТабеля.Организация
    |    ,ДанныеТабеля.Сотрудник
    |    ,ДанныеТабеля.ДниПериода
    |    ,ДанныеТабеля.ВидыВремени
    |    ,ДанныеТабеля.НомерВидаВремени
    |    ,ДанныеТабеля.Документ
    |    ,ДанныеТабеля.Часы КАК Часов
    
    |
    |Поместить ОбщиеДанныеТабеля
    |
    | Из (
    |
    |";
    
    Для Каждого НомерВремени Из мНомераВремени Цикл
        
        Если НомерВремени <> "Первый" Тогда
        Текст = Текст +"
        |      ОБЪЕДИНИТЬ
        |";
                
        КонецЕсли;
        
        Текст = Текст +"
        |      Выбрать
        |       "+НомерВремени+"ВидВремени.Период КАК ДниПериода
        |       ,"+НомерВремени+"ВидВремени.ВидВремени КАК ВидыВремени
        |       ,"+НомерВремени+"ВидВремени.Часов КАК Часы
        |       ,"+НомерВремени+"ВидВремени.Сотрудник КАК Сотрудник
        |       ,"+НомерВремени+"ВидВремени.Организация КАК Организация
        |       ,"+НомерВремени+"ВидВремени.НомерВидаВремени КАК НомерВидаВремени
        |       ,"+НомерВремени+"ВидВремени.Документ КАК Документ
        |    
        |        Из (    
        |           Выбрать
        |             Сотрудник
        |             ,Организация
        |             ,ПериодРегистрации КАК Период
        |             ,"+НомерВремени+"ВидВремени1 КАК ВидВремени
        |             ,"+НомерВремени+"Часов1 КАК Часов
        |             ,1 КАК НомерВидаВремени
        |             ,Ссылка КАК Документ
        |             Из ДанныеТабеля
        |";
        
        Для Счетчик = 1 По 30 Цикл
            НомерДня = Строка(Счетчик);
            НомерРеквизита = Строка(Счетчик+1);
            Текст = Текст +
            "            Объединить
            |            
            |            Выбрать
            |             Сотрудник
            |             ,Организация
            |             ,ДобавитьКДате(ПериодРегистрации, День,"+НомерДня+") КАК Период
            |             ,"+НомерВремени+"ВидВремени"+НомерРеквизита+" КАК ВидВремени
            |             ,"+НомерВремени+"Часов"+НомерРеквизита+" КАК Часов
            |             ,1 КАК НомерВидаВремени
            |             ,Ссылка КАК Документ
            |             Из ДанныеТабеля
            |";
        КонецЦИкла;
        
        Текст = Текст +
        "        ) КАК "+НомерВремени+"ВидВремени ";
    КонецЦикла;
    
    Текст = Текст +
    "        ) КАК ДанныеТабеля
    |
    |
    |Где ДанныеТабеля.ВидыВремени
    |    <> Значение(Справочник.КлассификаторИспользованияРабочегоВремени.ПустаяСсылка)
3 kumena
 
26.09.16
16:33
если твое РП пишется в регистр рабочее время работников организаций, то можно и через регистр, а если нет то см. п.2
4 laby1
 
26.09.16
16:35
(3) Спасибо большое, завтра пробовать буду. А почему счетчик до 30 а не 31 ?
5 laby1
 
29.09.16
09:13
(2) Запрос не рабочий ...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.