8.х Запрос в регистр накоплений

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

  1. TopicStarter Overlay
    lirium
    Offline

    lirium

    Регистрация:
    16 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Необходимо вывести данные из регистра накопления по отобраному сотруднику, который передаётся в запрос через параметр.
    Регистр накопления "РабочееВремяРаботниковОрганизаций". Содержит виды использования рабочего времени (такие как Явка, неявка, Отпуск и тд.) и количество часов соответствующее данному виду использования времени. Идея в том, чтобы в одну строку он выводил часы, разбивая их по колонкам с названиями видов времени.




    В результате необходимо получить примерно следующую картину

    Часов явки______Часов больничного_______Часов неявки______Часов отпуск_____Часов ночью
    ---------------------------------------------------------------------------------------------------------------------
    ____ 1 458_______________________________________________________261_____________250
    ---------------------------------------------------------------------------------------------------------------------




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

    Часов явки______Часов больничного_______Часов неявки______Часов отпуск_____Часов ночью
    ---------------------------------------------------------------------------------------------------------------------
    ________________________________________________________________________________250
    ---------------------------------------------------------------------------------------------------------------------
    _________________________________________________________________261
    ---------------------------------------------------------------------------------------------------------------------
    _____1 458
    ---------------------------------------------------------------------------------------------------------------------


    Текст запроса:
    Код:
    
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Явка"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    КОНЕЦ КАК ЧасовЯвки,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Отпуск"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    КОНЕЦ КАК ЧасовОтпуск,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Неявка"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    КОНЕЦ КАК ЧасовНеявки,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Больничный"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    КОНЕЦ КАК ЧасовБольничного,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Ночные часы"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    КОНЕЦ КАК ЧасовНочью
    {ВЫБРАТЬ
    ЧасовЯвки,
    ЧасовОтпуск,
    ЧасовНеявки,
    ЧасовБольничного,
    ЧасовНочью}
    ИЗ
    РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций
    ГДЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник = &Сотрудник
    
    СГРУППИРОВАТЬ ПО
    РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование
    
    
    
    
    

    Надеюсь на вашу помощь! :unsure:
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    добавить везеде

    ИНАЧЕ 0 перед КОНЕЦ и сгруппировать по СОТРУДНИК.

    Вместо "РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование,"

    Пишем

    "РабочееВремяРаботниковОрганизаций.Сотрудник," соответственно
  3. TopicStarter Overlay
    lirium
    Offline

    lirium

    Регистрация:
    16 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Если так:

    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Явка"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    ИНАЧЕ 0
    КОНЕЦ КАК ЧасовЯвки,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Отпуск"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    ИНАЧЕ 0
    КОНЕЦ КАК ЧасовОтпуск,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Неявка"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    ИНАЧЕ 0
    КОНЕЦ КАК ЧасовНеявки,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Больничный"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    ИНАЧЕ 0
    КОНЕЦ КАК ЧасовБольничного,
    ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Ночные часы"
    ТОГДА СУММА(РабочееВремяРаботниковОрганизаций.Часов)
    ИНАЧЕ 0
    КОНЕЦ КАК ЧасовНочью
    {ВЫБРАТЬ
    ЧасовЯвки,
    ЧасовОтпуск,
    ЧасовНеявки,
    ЧасовБольничного,
    ЧасовНочью}
    ИЗ
    РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций
    ГДЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник = &Сотрудник
    
    СГРУППИРОВАТЬ ПО
    РабочееВремяРаботниковОрганизаций.Сотрудник
    
    
    
    
    

    То соответственно начинает ругаться

    "Ошибка в запросе: {(4, 9)}: Поле не входит в группу "РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование"
    КОГДА <<?>>РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Явка"

    Ну и если сделать выбор РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование, то требует его группировки.
    "
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Явка"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовЯвки,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Отпуск"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовОтпуск,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Неявка"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовНеявки,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Больничный"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовБольничного,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Ночные часы"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовНочью
    {ВЫБРАТЬ
    ЧасовЯвки,
    ЧасовОтпуск,
    ЧасовНеявки,
    ЧасовБольничного,
    ЧасовНочью}
    ИЗ
    РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций
    ГДЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник = &Сотрудник
    
    СГРУППИРОВАТЬ ПО
    РабочееВремяРаботниковОрганизаций.Сотрудник
    
    
  5. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    А к оборотному виртуальному регистру обратиться не судьба?
  6. TopicStarter Overlay
    lirium
    Offline

    lirium

    Регистрация:
    16 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Я ещё чайник :) Что есть оборотный виртуальный регистр можно поподробнее?
  7. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
  8. TopicStarter Overlay
    lirium
    Offline

    lirium

    Регистрация:
    16 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Сейчас попробую написать через оборотный регистр.
    Ещё вопрос: возможно средствами языка запроса разбить результат запроса:
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Явка"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовЯвки,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Отпуск"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовОтпуск,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Неявка"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовНеявки,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Больничный"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовБольничного,
    СУММА(ВЫБОР
    КОГДА РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = "Ночные часы"
    ТОГДА РабочееВремяРаботниковОрганизаций.Часов
    ИНАЧЕ 0
    КОНЕЦ) КАК ЧасовНочью
    {ВЫБРАТЬ
    ЧасовЯвки,
    ЧасовОтпуск,
    ЧасовНеявки,
    ЧасовБольничного,
    ЧасовНочью}
    ИЗ
    РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций
    ГДЕ
    РабочееВремяРаботниковОрганизаций.Сотрудник = &;Сотрудник
    
    СГРУППИРОВАТЬ ПО
    РабочееВремяРаботниковОрганизаций.Сотрудник
    
    
    по месяцам? Чтобы каждая строка показывала данные одного месяца
    Явка Неявка и тд
    Январь
    Февраль
    Март
    Апрель
    и тд
  9. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Насколько помню в оборотных регистрах можно указывать периодичность, посмотрите в конструкторе запросов.

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