Имя: Пароль:
1C
1С v8
Отчёт на СКД: Группировка по выражениям, содержащим агрегатные функции, не допустима
0 laby1
 
18.07.19
15:55
Вываливает ошибку при замене в первой виртуальной таблице запроса

"" КАК Регистратор,
на
ВнутренниеЗаказыОбороты.Регистратор,

Не знаю, как приложить файл СКД. Через облако
https://yadi.sk/d/2j93fxstaF_HUQ

Текст ошибки:

Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Группировка по выражениям, содержащим агрегатные функции, не допустима

Запрос в СКД:

ВЫБРАТЬ
    ВнутренниеЗаказыОбороты.ЗаказПокупателя КАК Заказ,
    ВнутренниеЗаказыОбороты.Номенклатура,
    ВнутренниеЗаказыОбороты.КоличествоПриход КАК Количество,
    ВЫБОР
        КОГДА ВнутренниеЗаказыОбороты.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
            ТОГДА "Запланировано отгрузить (первоначально)"
        ИНАЧЕ "Корректировка по заказам"
    КОНЕЦ КАК Заголовок,
    ВнутренниеЗаказыОбороты.Период КАК Дата,
    ВнутренниеЗаказыОбороты.Регистратор,  // ЗДЕСЬ ЗАМЕНЯЕМ "" НА ЗНАЧЕНИЕ РЕГИСТРАТОРА И ВЕСЬ ОТЧЁТ ПЕРЕСТАЁТ РАБОТАТЬ !!!!!!!
    ВЫБОР
        КОГДА ВнутренниеЗаказыОбороты.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
            ТОГДА "1"
        ИНАЧЕ "2"
    КОНЕЦ КАК КодЗаголовка,
    ВнутренниеЗаказыОбороты.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Запуск
ИЗ
    РегистрНакопления.РазмещениеЗаказовПокупателей.Обороты(
            ,
            ,
            Регистратор,
            ЗаказПокупателя.Дата МЕЖДУ &Нач И &Оконч
                И ЗаказПокупателя.Организация = &Организация) КАК ВнутренниеЗаказыОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВнутренниеЗаказыОбороты.ЗаказПокупателя КАК Заказ,
    ВнутренниеЗаказыОбороты.Номенклатура,
    ВЫБОР
        КОГДА ВнутренниеЗаказыОбороты.Регистратор ССЫЛКА Документ.ОтчетПроизводстваЗаСмену
            ТОГДА ВнутренниеЗаказыОбороты.КоличествоРасход
        ИНАЧЕ -ВнутренниеЗаказыОбороты.КоличествоРасход
    КОНЕЦ КАК Количество,
    ВЫБОР
        КОГДА ВнутренниеЗаказыОбороты.Регистратор ССЫЛКА Документ.ОтчетПроизводстваЗаСмену
            ТОГДА "Фактически изготовлено"
        ИНАЧЕ "Корректировка по заказам"
    КОНЕЦ КАК Заголовок,
    ВнутренниеЗаказыОбороты.Период КАК Дата,
    ВнутренниеЗаказыОбороты.Регистратор Регистратор,
    ВЫБОР
        КОГДА ВнутренниеЗаказыОбороты.Регистратор ССЫЛКА Документ.ОтчетПроизводстваЗаСмену
            ТОГДА "3"
        ИНАЧЕ "2"
    КОНЕЦ КАК КодЗаголовка,
    ВнутренниеЗаказыОбороты.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Выполнено
ИЗ
    РегистрНакопления.РазмещениеЗаказовПокупателей.Обороты(
            ,
            ,
            Регистратор,
            ЗаказПокупателя В
                (ВЫБРАТЬ
                    ВТ_Запуск.Заказ
                ИЗ
                    ВТ_Запуск КАК ВТ_Запуск)) КАК ВнутренниеЗаказыОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Запуск.Заказ КАК Заказ,
    ВТ_Запуск.Номенклатура КАК Номенклатура,
    ВТ_Запуск.Количество КАК Количество,
    ВТ_Запуск.Заголовок КАК Заголовок,
    ВТ_Запуск.Дата КАК Дата,
    ВТ_Запуск.Регистратор,
    ВТ_Запуск.КодЗаголовка,
    ВТ_Запуск.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Объединение
ИЗ
    ВТ_Запуск КАК ВТ_Запуск

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_Выполнено.Заказ,
    ВТ_Выполнено.Номенклатура,
    ВТ_Выполнено.Количество,
    ВТ_Выполнено.Заголовок,
    ВТ_Выполнено.Дата,
    ВТ_Выполнено.Регистратор,
    ВТ_Выполнено.КодЗаголовка,
    ВТ_Выполнено.ЗаказПоставщику
ИЗ
    ВТ_Выполнено КАК ВТ_Выполнено
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Объединение.Заказ,
    ВТ_Объединение.Номенклатура,
    ВТ_Объединение.Количество КАК ЗапланированоОтгрузить,
    ВТ_Объединение.Дата,
    ВТ_Объединение.Регистратор,
    ВТ_Объединение.КодЗаголовка,
    ВТ_Объединение.Заголовок,
    ВТ_Объединение.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_План
ИЗ
    ВТ_Объединение КАК ВТ_Объединение
ГДЕ
    ВТ_Объединение.КодЗаголовка = "1"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Объединение.Заказ,
    ВТ_Объединение.Номенклатура,
    ВТ_Объединение.Количество КАК КорректировкаПоЗаказам,
    ВТ_Объединение.Заголовок,
    ВТ_Объединение.Дата КАК ДатаКорректировки,
    ВТ_Объединение.Регистратор,
    ВТ_Объединение.КодЗаголовка,
    ВТ_Объединение.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Корректировка
ИЗ
    ВТ_Объединение КАК ВТ_Объединение
ГДЕ
    ВТ_Объединение.КодЗаголовка = "2"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Объединение.Заказ,
    ВТ_Объединение.Номенклатура,
    ВТ_Объединение.Количество КАК ФактическиИзготовлено,
    ВТ_Объединение.Заголовок,
    ВТ_Объединение.Дата,
    ВТ_Объединение.Регистратор,
    ВТ_Объединение.КодЗаголовка,
    ВТ_Объединение.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Выпуск
ИЗ
    ВТ_Объединение КАК ВТ_Объединение
ГДЕ
    ВТ_Объединение.КодЗаголовка = "3"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_План.Заказ,
    ВТ_План.Номенклатура,
    ВТ_План.ЗапланированоОтгрузить,
    ВТ_План.Дата КАК ДатаЗаказа,
    ВТ_План.Регистратор,
    NULL КАК КорректировкаПоЗаказам,
    NULL КАК ДатаКорректировки,
    NULL КАК ФактическиИзготовлено,
    NULL КАК ДатаПрихода,
    ВТ_План.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Объединение2
ИЗ
    ВТ_План КАК ВТ_План

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_Корректировка.Заказ,
    ВТ_Корректировка.Номенклатура,
    NULL,
    NULL,
    ВТ_Корректировка.Регистратор,
    ВТ_Корректировка.КорректировкаПоЗаказам,
    ВТ_Корректировка.ДатаКорректировки,
    NULL,
    NULL,
    ВТ_Корректировка.ЗаказПоставщику
ИЗ
    ВТ_Корректировка КАК ВТ_Корректировка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_Выпуск.Заказ,
    ВТ_Выпуск.Номенклатура,
    NULL,
    NULL,
    ВТ_Выпуск.Регистратор,
    NULL,
    NULL,
    ВТ_Выпуск.ФактическиИзготовлено,
    ВТ_Выпуск.Дата,
    ВТ_Выпуск.ЗаказПоставщику
ИЗ
    ВТ_Выпуск КАК ВТ_Выпуск
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Объединение2.Заказ,
    ВТ_Объединение2.Номенклатура,
    СУММА(ВТ_Объединение2.ЗапланированоОтгрузить) КАК ЗапланированоОтгрузитьПервоначально,
    ВТ_Объединение2.ДатаЗаказа,
    ВТ_Объединение2.Регистратор,
    СУММА(ВТ_Объединение2.КорректировкаПоЗаказам) КАК КорректировкаПоЗаказам,
    ВТ_Объединение2.ДатаКорректировки,
    СУММА(ВТ_Объединение2.ФактическиИзготовлено) КАК ФактическиИзготовлено,
    ВТ_Объединение2.ДатаПрихода,
    ЕСТЬNULL(ВТ_Объединение2.ЗапланированоОтгрузить, 0) + ЕСТЬNULL(ВТ_Объединение2.КорректировкаПоЗаказам, 0) КАК ЗапланированоОтгрузить,
    ЕСТЬNULL(ВТ_Объединение2.ЗапланированоОтгрузить, 0) + ЕСТЬNULL(ВТ_Объединение2.КорректировкаПоЗаказам, 0) - ЕСТЬNULL(ВТ_Объединение2.ФактическиИзготовлено, 0) КАК ОсталосьВыполнить,
    РАЗНОСТЬДАТ(ВТ_Объединение2.Заказ.Дата, ВТ_Объединение2.ДатаПрихода, ДЕНЬ) КАК ДнейИсполнения,
    ВЫБОР
        КОГДА ВТ_Объединение2.ДатаПрихода ЕСТЬ NULL
            ТОГДА РАЗНОСТЬДАТ(ВТ_Объединение2.Заказ.Дата, &ТекущаяДата, ДЕНЬ)
        ИНАЧЕ 0
    КОНЕЦ КАК ДнейВРаботеНеИсполнено,
    ВТ_Объединение2.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_Группировка
ИЗ
    ВТ_Объединение2 КАК ВТ_Объединение2

СГРУППИРОВАТЬ ПО
    ВТ_Объединение2.Заказ,
    ВТ_Объединение2.Номенклатура,
    ВТ_Объединение2.Регистратор,
    ВТ_Объединение2.ДатаЗаказа,
    ВТ_Объединение2.ДатаКорректировки,
    ВТ_Объединение2.ДатаПрихода,
    ВТ_Объединение2.ЗаказПоставщику,
    ЕСТЬNULL(ВТ_Объединение2.ЗапланированоОтгрузить, 0) + ЕСТЬNULL(ВТ_Объединение2.КорректировкаПоЗаказам, 0),
    ЕСТЬNULL(ВТ_Объединение2.ЗапланированоОтгрузить, 0) + ЕСТЬNULL(ВТ_Объединение2.КорректировкаПоЗаказам, 0) - ЕСТЬNULL(ВТ_Объединение2.ФактическиИзготовлено, 0),
    РАЗНОСТЬДАТ(ВТ_Объединение2.Заказ.Дата, ВТ_Объединение2.ДатаПрихода, ДЕНЬ),
    ВЫБОР
        КОГДА ВТ_Объединение2.ДатаПрихода ЕСТЬ NULL
            ТОГДА РАЗНОСТЬДАТ(ВТ_Объединение2.Заказ.Дата, &ТекущаяДата, ДЕНЬ)
        ИНАЧЕ 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Группировка.Заказ,
    ВТ_Группировка.Номенклатура,
    МАКСИМУМ(ВТ_Группировка.ДатаПрихода) КАК ДатаПрихода,
    МАКСИМУМ(ВТ_Группировка.ДатаЗаказа) КАК ДатаЗаказа,
    ВЫБОР
        КОГДА МАКСИМУМ(ЕСТЬNULL(ВТ_Группировка.ДатаПрихода, 0)) = 0
                И СУММА(ЕСТЬNULL(ВТ_Группировка.ОсталосьВыполнить, 0)) <> 0
            ТОГДА РАЗНОСТЬДАТ(МАКСИМУМ(ВТ_Группировка.ДатаЗаказа), &ТекущаяДата, ДЕНЬ)
        ИНАЧЕ 0
    КОНЕЦ КАК ДнейНеВыполненоИтого,
    ВТ_Группировка.ЗаказПоставщику
ПОМЕСТИТЬ ВТ_ДнейНеВыполненоИтого
ИЗ
    ВТ_Группировка КАК ВТ_Группировка

СГРУППИРОВАТЬ ПО
    ВТ_Группировка.Заказ,
    ВТ_Группировка.Номенклатура,
    ВТ_Группировка.ЗаказПоставщику
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Группировка.Заказ,
    ВТ_Группировка.Номенклатура,
    ВТ_Группировка.ЗапланированоОтгрузитьПервоначально,
    ВТ_Группировка.ДатаЗаказа,
    ВТ_Группировка.Регистратор,
    ВТ_Группировка.КорректировкаПоЗаказам,
    ВТ_Группировка.ДатаКорректировки,
    ВТ_Группировка.ФактическиИзготовлено,
    ВТ_Группировка.ДатаПрихода,
    ВТ_Группировка.ЗапланированоОтгрузить,
    ВТ_Группировка.ОсталосьВыполнить,
    ВТ_Группировка.ДнейИсполнения,
    ВТ_Группировка.ДнейВРаботеНеИсполнено,
    ВТ_ДнейНеВыполненоИтого.ДнейНеВыполненоИтого,
    ВТ_Группировка.ЗаказПоставщику
ИЗ
    ВТ_Группировка КАК ВТ_Группировка
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДнейНеВыполненоИтого КАК ВТ_ДнейНеВыполненоИтого
        ПО ВТ_Группировка.Номенклатура = ВТ_ДнейНеВыполненоИтого.Номенклатура
            И ВТ_Группировка.Заказ = ВТ_ДнейНеВыполненоИтого.Заказ
            И ВТ_Группировка.ЗаказПоставщику = ВТ_ДнейНеВыполненоИтого.ЗаказПоставщику
1 laby1
 
18.07.19
16:03
Запрос сам по себе выполняется, а вот проблема видимо с группировкой уже в СКД настройках по полю "Регистратор".
Когда убираю там на детальные записи - то ошибки нет. Но мне нужна именно группировка.
2 laby1
 
19.07.19
09:39
В чём же может быть засада ...
3 toypaul
 
гуру
19.07.19
10:25
хз. но попробуй поменять роль у регистратора с период на измерение
4 laby1
 
19.07.19
10:54
(3) А как это сделать?
5 laby1
 
19.07.19
11:30
вотжеж
6 laby1
 
19.07.19
11:32
Что за роль у регистратора, впервые слышу про такое
7 laby1
 
31.07.19
14:23
Может есть мысли какие у кого?
8 laby1
 
31.07.19
15:02
В общем, проблема понятна, конфликтует то, что агрегируется и в ресурсах и в запросе, получается вложенность. Из ресурсов убрал агрегаты по датам, вроде бы ошибки нет. А что по данным, посмотрим, что пользователи скажут. Спасибо за помощь, коллеги по цеху.