8.х вывод разности значения реквизита справочника и оборотов регистра накопления в результате запроса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем JediAlex, 18 май 2016.

  1. TopicStarter Overlay
    JediAlex
    Offline

    JediAlex Опытный в 1С

    Регистрация:
    27 авг 2011
    Сообщения:
    140
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Делаю конфигурацию в 1с 8.3. В конфигурации следующий набор справочников:
    1. Договоры(Код,Наименование)
    2. ЭтапыДоговоров(Код,Наименование,Договор - СправочникСсылкаДоговоры, Исполнитель - ПеречисленияСсылка.ИсполнителиРабот, Трудозатраты - Число,10,3)
    3. Объекты(Код,Наименование,Договор - СправочникСсылкаДоговоры,Этап - СправочникСсылкаЭтапыДоговоров)
    и есть регистры накопления:
    1. ОтработаноЧасов(Измерения:Объект -справочникссылкаОбъекты;Документ - СправочникСсылкаПроектныеДокументы...;Ресурс - КоличествоЧасов -число,10,3)
    2. ОтработаноГИПРПО(Измерения:Объект -справочникссылкаОбъекты,СтатусРуководителя - ПеречисленияСсылка.СтатусРуководителя;Ресурс - КоличествоЧасов -число,10,3).
    Из всего этого надо сделать выборку данных за период такой структуры:
    НаименованиеДоговора, НомерЭтапа,ТрудоЗатраты,Факт,Отклонение, где Факт=ОтработаноЧасов.Обороты по этапам+ОтработаноГИПРПО.Обороты по этапам; Отклонение=(Факт-Трудозатраты)/Трудозатраты*100. Пытался делать это так:
    Код:
    ВЫБРАТЬ
                     |    ОтработаноЧасовОбороты.Объект.Договор КАК Договор,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора КАК НомерЭтапа,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Исполнитель КАК Исполнитель,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты КАК План
                     |ИЗ
                     |    РегистрНакопления.ОтработаноЧасов.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ОтработаноЧасовОбороты
                     |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                     |            ОтработаноЧасовОбороты.Объект.ЭтапДоговора КАК Этап,
                     |            СУММА(ОтработаноЧасовОбороты.КоличествоЧасовРасход) КАК Факт
                     |        ИЗ
                     |            РегистрНакопления.ОтработаноЧасов.Обороты КАК ОтработаноЧасовОбороты
                     |       
                     |        СГРУППИРОВАТЬ ПО
                     |            ОтработаноЧасовОбороты.Объект.ЭтапДоговора,
                     |            ОтработаноЧасовОбороты.КоличествоЧасовРасход) КАК ФактСотрудников
                     |        ПО ОтработаноЧасовОбороты.Объект.ЭтапДоговора = ФактСотрудников.Этап
                     |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                     |            ОтработаноГИПРПООбороты.ШифрОбъекта.ЭтапДоговора КАК Этап,
                     |            ОтработаноГИПРПООбороты.ВремяНаОбъектРасход КАК Факт
                     |        ИЗ
                     |            РегистрНакопления.ОтработаноГИПРПО.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ОтработаноГИПРПООбороты) КАК ФактГИПРПО
                     |        ПО ОтработаноЧасовОбороты.Объект.ЭтапДоговора = ФактГИПРПО.Этап
                     |ГДЕ
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Исполнитель = &Исполнитель
                     |
                     |СГРУППИРОВАТЬ ПО
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора,
                     |    ОтработаноЧасовОбороты.Объект.Договор,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Исполнитель,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты";
    
    Так данные выводятся правильно, но без факта и отклонения(вложенные запросы именно для вывода фактов сотрудников и ГИПРПО делал). А так пробовал выводить данные с фактом и отклонением:
    Код:
    ВЫБРАТЬ
                     |    ОтработаноЧасовОбороты.Объект.Договор КАК Договор,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора КАК НомерЭтапа,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Исполнитель КАК Исполнитель,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты КАК План,
                     |    СУММА(ФактГИПРПО.Факт + ФактСотрудников.Факт) КАК Факт,
                     |    (ФактГИПРПО.Факт + ФактСотрудников.Факт - ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты) / ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты * 100 КАК Отклонение
                     |ИЗ
                     |    РегистрНакопления.ОтработаноЧасов.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ОтработаноЧасовОбороты
                     |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                     |            ОтработаноЧасовОбороты.Объект.ЭтапДоговора КАК Этап,
                     |            СУММА(ОтработаноЧасовОбороты.КоличествоЧасовРасход) КАК Факт
                     |        ИЗ
                     |            РегистрНакопления.ОтработаноЧасов.Обороты КАК ОтработаноЧасовОбороты
                     |       
                     |        СГРУППИРОВАТЬ ПО
                     |            ОтработаноЧасовОбороты.Объект.ЭтапДоговора,
                     |            ОтработаноЧасовОбороты.КоличествоЧасовРасход) КАК ФактСотрудников
                     |        ПО ОтработаноЧасовОбороты.Объект.ЭтапДоговора = ФактСотрудников.Этап
                     |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                     |            ОтработаноГИПРПООбороты.ШифрОбъекта.ЭтапДоговора КАК Этап,
                     |            СУММА(ОтработаноГИПРПООбороты.ВремяНаОбъектРасход) КАК Факт
                     |        ИЗ
                     |            РегистрНакопления.ОтработаноГИПРПО.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ОтработаноГИПРПООбороты
                     |       
                     |        СГРУППИРОВАТЬ ПО
                     |            ОтработаноГИПРПООбороты.ШифрОбъекта.ЭтапДоговора) КАК ФактГИПРПО
                     |        ПО ОтработаноЧасовОбороты.Объект.ЭтапДоговора = ФактГИПРПО.Этап
                     |ГДЕ
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Исполнитель = &Исполнитель
                     |
                     |СГРУППИРОВАТЬ ПО
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора,
                     |    ОтработаноЧасовОбороты.Объект.Договор,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Исполнитель,
                     |    ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты,
                     |    (ФактГИПРПО.Факт + ФактСотрудников.Факт - ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты) / ОтработаноЧасовОбороты.Объект.ЭтапДоговора.Трудозатраты * 100
    В результате выводится вообще что то непонятное: отклонения не рассчитываются, значения факта по этапам нереальные. Никак не могу разобраться, где и что я напутал. Помогите пожалуйста.

Поделиться этой страницей