Добрый день. Есть отчет СКД, в нем куча запросов с соединениями, в итоговом запросе есть поле Заявка, по нему вычисляется выражение для нескольких ресурсов. Подскажите, пожалуйста, как рассчитать итоги для ресурсов, которые никак не относятся к заявке, но при этом если я для них ставлю выражение Сумма(Ресурс1), то они суммируются по количеству заявок в запросе?
---
Вопрос закрыт. Разобрался.
---
как рассчитать итоги для ресурсов, которые никак не относятся к заявкеА к чему они относятся?
---
```1c
    ВЫБРАТЬ
    ВТ_ЗпВодителей.СуммаКВыплате2 КАК СуммаКВыплате2,
    ВТ_ЗпВодителей.Заявка КАК Заявка,
    ВТ_ЗпВодителей.Исполнитель КАК Исполнитель,
    ВТ_ЗпВодителей.КомпенсацияЗаТопливо КАК КомпенсацияЗаТопливо,
    ВТ_ЗпВодителей.Штрафы КАК Штрафы,
    ВТ_ЗпВодителей.ДопВыезды КАК ДопВыезды,
    ВТ_ЗпВодителей.Премии КАК Премии,
    ВТ_ЗпВодителей.Депозит КАК Депозит,
    ВТ_ЗпВодителей.ЗПНаКарту КАК ЗПНаКарту,
    ВТ_ЗпВодителей.Дата КАК Дата,
    ВТ_ЗпВодителей.ТС КАК ТС,
    ВТ_ОборотыПоЗаявкам.МаксимумПоТССумма КАК Выручка,
    ВТ_ЗпВодителей.РасходНаТопливо КАК РасходНаТопливо,
    ВТ_Лизинг.Лизинг КАК Лизинг,
    ВТ_ЗпВодителей.ТС.Тип КАК ТипТС,
    НАЧАЛОПЕРИОДА(ВТ_ЗпВодителей.Дата, МЕСЯЦ) КАК ПериодРасходов
    ПОМЕСТИТЬ ВТ_Общ
    ИЗ
    ВТ_ЗпВодителей КАК ВТ_ЗпВодителей
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МакТС КАК ВТ_ОборотыПоЗаявкам
    ПО (ВТ_ОборотыПоЗаявкам.ТС = ВТ_ЗпВодителей.ТС)
    И (ВТ_ОборотыПоЗаявкам.ТС.Тип = ВТ_ЗпВодителей.ТС.Тип)
    И (НАЧАЛОПЕРИОДА(ВТ_ОборотыПоЗаявкам.Период, МЕСЯЦ) = НАЧАЛОПЕРИОДА(ВТ_ЗпВодителей.Дата, МЕСЯЦ))
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Лизинг КАК ВТ_Лизинг
    ПО (ВТ_Лизинг.ТС = ВТ_ЗпВодителей.ТС)
    И (ВТ_Лизинг.ТС.Тип = ВТ_ЗпВодителей.ТС.Тип)
    И (ВТ_Лизинг.ДатаДок = НАЧАЛОПЕРИОДА(ВТ_ЗпВодителей.Дата, МЕСЯЦ))
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Общ.СуммаКВыплате2 КАК СуммаКВыплате2,
    ВТ_Общ.Исполнитель КАК Исполнитель,
    ВТ_Общ.Заявка КАК Заявка,
    ВТ_Общ.КомпенсацияЗаТопливо КАК КомпенсацияЗаТопливо,
    ВТ_Общ.Штрафы КАК Штрафы,
    ВТ_Общ.ДопВыезды КАК ДопВыезды,
    ВТ_Общ.Премии КАК Премии,
    ВТ_Общ.Депозит КАК Депозит,
    ВТ_Общ.ЗПНаКарту КАК ЗПНаКарту,
    ВТ_Общ.Дата КАК Дата,
    ВТ_Общ.ТС КАК ТС,
    ВТ_Общ.Выручка КАК Выручка,
    ВТ_Общ.РасходНаТопливо КАК РасходНаТопливо,
    ВТ_Общ.Лизинг КАК Лизинг,
    ВТ_Общ.ТипТС КАК ТипТС,
    ВТ_Общ.ПериодРасходов КАК ПериодРасходов
    ИЗ
    ВТ_Общ КАК ВТ_Общ
```
 Вот поля лизинг и выручка не относятся к полям заявка, там уже посчитана правильная сумма (во временных таблицах ВТ_Лизинг и ВТ_ОборотыПоЗаявкам). Если в ресурсах ставлю сумма для этих полей, то там нелепая цифра выходит, если ставлю просто ЕСТЬNULL(Лизинг, 0) И ЕСТЬNULL(Выручка, 0), то цифры выходят верные, но в итогах они не суммируются, а просто выводятся из первой строки отчета.
---
пользовательские поля?
---
Нет
---
В ресурсы ваше вычисляемое поле добавили?
Агрегатную функцию к ресурсу прописали?
---
добавил. Какую именно функцию? Сумма(выручка) прописывал
---
или Вы про другую агрегатную функцию?
---
Попробовал в ресурсах выставить Рассчитывать по Период расходов, не помогло.
---
Подскажите, пожалуйста, как перенести данную конструкцию
```1c
    ЕСТЬNULL(Сумма(СуммаКВыплате2)
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(РасходНаТопливо)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(РасходНаТопливо)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("КомпенсацияЗаТопливо", "Дата, Исполнитель"))
    КОНЕЦ
```
 в сам запрос? Пробовал вот так
```1c
    ВЫБРАТЬ Сумма(ВТ_Общ.СуммаКВыплате2) + ВЫБОР КОГДА ВычислитьВыражение(ВТ_Общ.Дата, ВТ_Общ.Дата, ДобавитьКДате(ВТ_Общ.Дата, День, - 1), &Текущая) = Дата
    И ВычислитьВыражение(ВТ_Общ.РасходНаТопливо, ВТ_Общ.Дата, ДобавитьКДате(ВТ_Общ.Дата, День, - 1), &Текущая) = Сумма(ВычислитьВыражениеСГруппировкойМассив(ВТ_Общ.РасходНаТопливо, ВТ_Общ.Дата, ВТ_Общ.Исполнитель))
    И ВычислитьВыражение(ВТ_Общ.Заявка, ВТ_Общ.Дата, ДобавитьКДате(ВТ_Общ.Дата, День, - 1), &Текущая) <> ВТ_Общ.Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив(ВТ_Общ.КомпенсацияЗаТопливо, ВТ_Общ.Дата, ВТ_Общ.Исполнитель))
    КОНЕЦ КАК СуммаКВыплате2,
    ВТ_Общ.Исполнитель КАК Исполнитель,
    ВТ_Общ.Заявка КАК Заявка,
    ВТ_Общ.КомпенсацияЗаТопливо КАК КомпенсацияЗаТопливо,
    ВТ_Общ.Штрафы КАК Штрафы,
    ВТ_Общ.ДопВыезды КАК ДопВыезды,
    ВТ_Общ.Премии КАК Премии,
    ВТ_Общ.Депозит КАК Депозит,
    ВТ_Общ.ЗПНаКарту КАК ЗПНаКарту,
    ВТ_Общ.Дата КАК Дата,
    ВТ_Общ.ТС КАК ТС,
    ВТ_Общ.Выручка КАК Выручка,
    ВТ_Общ.РасходНаТопливо КАК РасходНаТопливо,
    ВТ_Общ.Лизинг КАК Лизинг,
    ВТ_Общ.ТипТС КАК ТипТС,
    ВТ_Общ.ПериодРасходов КАК ПериодРасходов
    ИЗ
    ВТ_Общ КАК ВТ_Общ
```
 выдает ошибку "Синтаксическая ошибка".
---
Вы пытаетесь оконную функцию по сути (не по факту) прицепить к результату.
Если используются агрегатные функции в select, то по остальные полям без агрегатных функций в select должна быть группировка. Исключение константы, и некоторые SQL в некоторых версиях допускают не указывать все поля при наличии в группировке первичного ключа таблицы при выборке только из этой одной таблицы (MySQL).
Если по простому то, если уже указанная группировка однозначно определяет уникальность записей.
---
то по остальные полям в select должна быть группировка. спасибо, упустил этот момент. Поправил, но все равно ошибка "Синтаксическая ошибка"
```1c
    ВЫБРАТЬ
    Сумма(ВТ_Общ.СуммаКВыплате2) + ВЫБОР КОГДА ВычислитьВыражение(ВТ_Общ.Дата, ВТ_Общ.Дата, ДобавитьКДате(ВТ_Общ.Дата, День, - 1), &Текущая) = Дата
    И ВычислитьВыражение(ВТ_Общ.РасходНаТопливо, ВТ_Общ.Дата, ДобавитьКДате(ВТ_Общ.Дата, День, - 1), &Текущая) = Сумма(ВычислитьВыражениеСГруппировкойМассив(ВТ_Общ.РасходНаТопливо, ВТ_Общ.Дата, ВТ_Общ.Исполнитель))
    И ВычислитьВыражение(ВТ_Общ.Заявка, ВТ_Общ.Дата, ДобавитьКДате(ВТ_Общ.Дата, День, - 1), &Текущая) <> ВТ_Общ.Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив(ВТ_Общ.КомпенсацияЗаТопливо, ВТ_Общ.Дата, ВТ_Общ.Исполнитель))
    КОНЕЦ КАК СуммаКВыплате2,
    ВТ_Общ.Исполнитель КАК Исполнитель,
    ВТ_Общ.Заявка КАК Заявка,
    ВТ_Общ.КомпенсацияЗаТопливо КАК КомпенсацияЗаТопливо,
    ВТ_Общ.Штрафы КАК Штрафы,
    ВТ_Общ.ДопВыезды КАК ДопВыезды,
    ВТ_Общ.Премии КАК Премии,
    ВТ_Общ.Депозит КАК Депозит,
    ВТ_Общ.ЗПНаКарту КАК ЗПНаКарту,
    ВТ_Общ.Дата КАК Дата,
    ВТ_Общ.ТС КАК ТС,
    ВТ_Общ.Выручка КАК Выручка,
    ВТ_Общ.РасходНаТопливо КАК РасходНаТопливо,
    ВТ_Общ.Лизинг КАК Лизинг,
    ВТ_Общ.ТипТС КАК ТипТС,
    ВТ_Общ.ПериодРасходов КАК ПериодРасходов,
    ВТ_Общ.ДатаУпорядочивания КАК ДатаУпорядочивания
    ИЗ
    ВТ_Общ КАК ВТ_Общ

    Сгруппировать по
    ВТ_Общ.Исполнитель,
    ВТ_Общ.Заявка,
    ВТ_Общ.Штрафы,
    ВТ_Общ.ДопВыезды,
    ВТ_Общ.Премии,
    ВТ_Общ.Депозит,
    ВТ_Общ.ЗПНаКарту,
    ВТ_Общ.Дата,
    ВТ_Общ.ТС,
    ВТ_Общ.Лизинг,
    ВТ_Общ.ТипТС,
    ВТ_Общ.ПериодРасходов,
    ВТ_Общ.ДатаУпорядочивания,
    &Текущая
```
---
"ВычислитьВыражение()" для языка запросов 1С это что?
---
"ВычислитьВыражение()" для языка запросов 1С это что? так я и не нашел информации, нашел только кучу статей о ВычислитьВыражение() в СКД, поэтому и спросил, как можно перенести конструкцию
```1c
    Сумма(СуммаКВыплате2)
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(РасходНаТопливо)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(РасходНаТопливо)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("КомпенсацияЗаТопливо", "Дата, Исполнитель"))
    КОНЕЦ
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(Штрафы)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Штрафы)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Штрафы)", "Дата, Исполнитель"))
    КОНЕЦ
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(Премии)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Премии)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Премии)", "Дата, Исполнитель"))
    КОНЕЦ
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(ДопВыезды)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ДопВыезды)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ДопВыезды)", "Дата, Исполнитель"))
    КОНЕЦ
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(Депозит)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Депозит)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Депозит)", "Дата, Исполнитель"))
    КОНЕЦ
    +
    ВЫБОР КОГДА ВычислитьВыражение("(Дата)", "Дата", , "Предыдущая", "Текущая") = Дата
    И ВычислитьВыражение("(ЗПНаКарту)", "Дата", , "Предыдущая", "Текущая") = Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ЗПНаКарту)", "Дата, Исполнитель"))
    И ВычислитьВыражение("(Заявка)", "Дата", , "Предыдущая", "Текущая") <> Заявка ТОГДА 0
    ИНАЧЕ Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ЗПНаКарту)", "Дата, Исполнитель"))
    КОНЕЦ
```
 в запрос
---
Отдельно посчитать в запросе в отдельной таблице и прицепить левым соединением к исходной.
---
пробую, и не получается. Нашел статью, с описанием всех выражений (на стороннем ресурсе), пробую просто на одном выражении
```1c
    ВЫБРАТЬ

    ВЫБОР КОГДА ВычислитьВыражение("(ВТ_Итоговая.Дата)", "ВТ_Итоговая.Дата", ", "Предыдущая", "Текущая") = ВТ_Итоговая.Дата
    Тогда 0
    Иначе
    1
    КОНЕЦ КАК ЗП
    Поместить ВТ_Зп
    ИЗ
    ВТ_Итоговая КАК ВТ_Итоговая
```
 и выдает ошибку "Синтаксическая ошибка". Подскажите, пожалуйста, в чем именно ошибка? Что пропустил?
---
Вопрос закрыт. Разобрался.