Есть отчет на СКД (БП), в котором поле СуммаПлатежа считается из запроса, в старой версии отчета все работало нормально, стоило добавить группировку (ТЧ номенклатура/цена/колво/сумма), как поле СуммаПлатежа "дублируется на каждую строку ТЧ, соотв. конечная цифра не верная, подскажите как поправить ?

Скрин:
http://s005.radikal.ru/i210/1503/db/bf83274be6ef.jpg

отчет:
https://cloud.mail.ru/public/62cbd3043b14/REESTR.erf

Запрос:

```1c
    ВЫБРАТЬ
    СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка КАК Ссылка,
    СписаниеСРасчетногоСчетаРасшифровкаПлатежа.ДоговорКонтрагента КАК ДоговорКонтрагента,
    СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа,
    СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
    СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом,
    ВЫБОР
    КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным"
    ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным (в у.е.)"
    ТОГДА "Предоплата"
    КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками"
    ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)"
    ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с прочими поставщиками и подрядчиками"
    ТОГДА "Факт"
    ИНАЧЕ " "
    КОНЕЦ КАК ВидПлатежа
    ПОМЕСТИТЬ ВТ_списание
    ИЗ
    Документ.СписаниеСРасчетногоСчета.РасшифровкаПлатежа КАК СписаниеСРасчетногоСчетаРасшифровкаПлатежа
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Контрагенты.Наименование КАК Наименование,
    ВложенныйЗапрос.Вид КАК Вид,
    ВложенныйЗапрос.ОбъектСсылка КАК ОбъектСсылка,
    ВложенныйЗапрос.Представление КАК Представление
    ПОМЕСТИТЬ ВТ_Адреса
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    КонтактнаяИнформация.Объект.Ссылка КАК ОбъектСсылка,
    КонтактнаяИнформация.Вид КАК Вид,
    КонтактнаяИнформация.Представление КАК Представление
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ГДЕ
    КонтактнаяИнформация.Вид.Наименование = "Юридический адрес") КАК ВложенныйЗапрос
    ПО Контрагенты.Ссылка = ВложенныйЗапрос.ОбъектСсылка.Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    СписаниеСРасчетногоСчета.Контрагент.Наименование КАК Контрагент,
    СписаниеСРасчетногоСчета.Контрагент.НаименованиеПолное,
    СписаниеСРасчетногоСчета.Дата КАК ДатаПлатежа,
    ВТ_списание.СтатьяДвиженияДенежныхСредств,
    СписаниеСРасчетногоСчета.НазначениеПлатежа,
    СписаниеСРасчетногоСчета.ДоговорКонтрагента.Комментарий КАК ПредметДоговора,
    ВТ_списание.ВидПлатежа,
    СписаниеСРасчетногоСчета.НомерВходящегоДокумента,
    СписаниеСРасчетногоСчета.ДатаВходящегоДокумента,
    ВТ_Адреса.Представление КАК ЮридическийАдрес,
    ВТ_списание.СуммаПлатежа,
    СписаниеСРасчетногоСчета.ДокументОснование.ДокументОснование.Ссылка КАК ДокументОснование
    ПОМЕСТИТЬ ВТ_ПочтиКонец
    ИЗ
    Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_списание КАК ВТ_списание
    ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_списание.Ссылка
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Адреса КАК ВТ_Адреса
    ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_Адреса.ОбъектСсылка

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

    ВЫБРАТЬ
    ПриходныйКассовыйОрдер.Контрагент.Наименование,
    ПриходныйКассовыйОрдер.Контрагент.НаименованиеПолное,
    ПриходныйКассовыйОрдер.Дата,
    ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств,
    ПриходныйКассовыйОрдер.Основание,
    ",
    ВЫБОР
    КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным"
    ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным (в у.е.)"
    ТОГДА "Предоплата"
    КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками"
    ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)"
    ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с прочими поставщиками и подрядчиками"
    ТОГДА "Факт"
    ИНАЧЕ " "
    КОНЕЦ,
    ",
    ",
    ",
    ВложенныйЗапрос.СуммаПлатежа,
    "
    ИЗ
    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Ссылка,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
    ИЗ
    Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа) КАК ВложенныйЗапрос
    ПО ПриходныйКассовыйОрдер.Ссылка = ВложенныйЗапрос.Ссылка
    ГДЕ
    ПриходныйКассовыйОрдер.Проведен = ИСТИНА
    И ПриходныйКассовыйОрдер.СчетУчетаРасчетовСКонтрагентом.Код = "51"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ПочтиКонец.Контрагент,
    ВТ_ПочтиКонец.КонтрагентНаименованиеПолное,
    ВТ_ПочтиКонец.ДатаПлатежа,
    ВТ_ПочтиКонец.СтатьяДвиженияДенежныхСредств,
    ВТ_ПочтиКонец.НазначениеПлатежа,
    ВТ_ПочтиКонец.ПредметДоговора,
    ВТ_ПочтиКонец.ВидПлатежа,
    ВТ_ПочтиКонец.НомерВходящегоДокумента,
    ВТ_ПочтиКонец.ДатаВходящегоДокумента,
    ВТ_ПочтиКонец.ЮридическийАдрес,
    ВТ_ПочтиКонец.ДокументОснование,
    СчетПолученныйТовары.Номенклатура,
    СчетПолученныйТовары.Цена,
    СчетПолученныйТовары.Количество,
    ЕСТЬNULL(СчетПолученныйТовары.Сумма, ПоступлениеТоваровУслугУслуги.Сумма) КАК Сумма,
    ПоступлениеТоваровУслугУслуги.Содержание КАК СодержаниеУслуги,
    ПоступлениеТоваровУслугУслуги.Цена КАК ЦенаУслуги,
    ПоступлениеТоваровУслугУслуги.Количество КАК КоличествоУслуг,
    " КАК _,
    ВТ_ПочтиКонец.СуммаПлатежа
    ПОМЕСТИТЬ ВТ_Конец
    ИЗ
    ВТ_ПочтиКонец КАК ВТ_ПочтиКонец
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетПолученный.Товары КАК СчетПолученныйТовары
    ПО ВТ_ПочтиКонец.ДокументОснование.Ссылка = СчетПолученныйТовары.Ссылка
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
    ПО ВТ_ПочтиКонец.ДокументОснование.Ссылка = ПоступлениеТоваровУслугУслуги.Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Конец.Контрагент,
    ВТ_Конец.КонтрагентНаименованиеПолное,
    ВТ_Конец.ДатаПлатежа,
    ВТ_Конец.СтатьяДвиженияДенежныхСредств,
    ВТ_Конец.НазначениеПлатежа,
    ВТ_Конец.ПредметДоговора,
    ВТ_Конец.ВидПлатежа,
    ВТ_Конец.НомерВходящегоДокумента,
    ВТ_Конец.ДатаВходящегоДокумента,
    ВТ_Конец.ЮридическийАдрес,
    ВТ_Конец.ДокументОснование,
    ВТ_Конец.Номенклатура,
    ВТ_Конец.Цена,
    ВТ_Конец.Количество,
    ВТ_Конец.Сумма,
    ВТ_Конец.СодержаниеУслуги,
    ВТ_Конец.ЦенаУслуги,
    ВТ_Конец.КоличествоУслуг,
    ВТ_Конец._,
    ВТ_Конец.СуммаПлатежа
    ИЗ
    ВТ_Конец КАК ВТ_Конец
```

Заранее спасибо !!
---
Все решается просто:
1. Берем старую рабочую версию отчета
2. В СКД добавляем новый набор данных-запрос
3. В этом наборе данных выбирайте данные из ТЧ
4. Соединяем наборы данных по документу
5. PROFIT!
---
hasan-rusel, если хотите данные по полю "СуммаПлатежа" - то введите его как ресурс согласно (2 ), если хотите аналитику - то играйтесь с запросом и группировкой.
---
hasan-rusel, В запросах нет проверки на NULL,
---
alex_sh2008, есть.
ЕСТЬNULL называется
---
AlexO, Не думал что придется расшифровывать свой пост, в запросах приведенных выше нет проверки на NULL, в результате в основную выборку попадают по ресурсу "СуммаПлатежа" значения с NULL, суммирование в таком случае не будет.
---
alex_sh2008, куда добавить проверку ?
---
hasan-rusel, где выборка суммы идет из запроса поcле "ЛЕВОЕ СОЕДИНЕНИЕ", пример:
ВЫБРАТЬ
....
    ЕСТЬNULL(ВТ_списание.СуммаПлатежа, 0) КАК ...,
.....
ПОМЕСТИТЬ ВТ_ПочтиКонец
ИЗ
    Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_списание КАК ВТ_списание
        ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_списание.Ссылка
        ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Адреса КАК ВТ_Адреса
        ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_Адреса.ОбъектСсылка
---
alex_sh2008, (25) AnderWonder, без четкого разъяснения - вы даете какие-то противоположные подчас советы.
Хотя "на первый взгляд" - впечатление, что вы "понимаете, о чем речь" ))
---
AlexO, ANSI SQL
---
AlexO, нет времени проводить для Вас ликбез.
Вообще правильней было бы сделать как написал (29), но для этого придется переделывать запрос и схему. Через различный расчет ресурсов можно решить задачу оперативно, но следует иметь ввиду, что это ограничит возможность пользователям самостоятельно редактировать группировки.
---
AnderWonder, ограничит возможность пользователям самостоятельно редактировать группировки.

этого не нужно, нужен будет только 2 варианта отчета старый и новый (этот)

Можно подробнее как именно сделать через различный расчет ресурсов ? Какие ресурсы куда добавлять и пр.
---
hasan-rusel, для начала поставьте функцию Максимум для ресурса и рассчитывать по "Номенклатура, Цена, Количество" тогда в группировке "Номенклатура, Цена, Количество" появится правильное значение. Затем добавляете ещё раз это поле в ресурсы, "Рассчитывать по" указываете остальные поля вышестоящих группировок и общий итог, а функцию прописываете Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлатежа)","Номенклатура, Цена, Количество"))
---
AnderWonder, Максимум для ресурса
Максимум для ресурса СуммаПлатежа ?
Поле Выражение Рассчитывать по
СуммаПлатежа Максимум(СуммаПлатежа) Количество, Наименование, Цена

Так ?

 тогда в группировке "Номенклатура, Цена, Количество" появится правильное значение.
Это в настройках ? Там ничего не изменилось...
---
hasan-rusel, Это в настройках ? Там ничего не изменилось...Боюсь, вас уже завели в тупик. Действительно, начните с начала.
---
hasan-rusel, Выкиньте этот запрос, про анализируйте заново постановку задачи и напишите новый запрос, судя по содержанию у вас в этом запросе сборная солянка.
---
hasan-rusel, да, для ресурса "СуммаПлатежа". В настройках СКД ничего менять не нужно (если вы что-то поменяли, то верните как было). Правильное значение будет в сформированном отчете. Сформируйте и посмотрите такой ли результат вам нужен для этой группировки. А затем пропишите функцию ВычислитьВыражениеСГруппировкойМассив, как было написано.
---
AnderWonder, как решить еще проблему когда в 1 документе 2 одинаковые суммы ? если ставлю сумма(СуммаПлатежа), то сумма "улетает", а сейчас когда максимум(СуммаПлатежа) выходит так:
---
AnderWonder, Сделал, вроде получилось, но не совсем. Теперь на 3м уровне рисует верные цифры (зел) а на 2м уровне прежние превышающие в несколько раз (крас)
---
hasan-rusel, в "Рассчитывать по" ресурса где формула с "ВычислитьВыражениеСГруппировкойМассив" проставили все группировки? "Общий итог" там же поставили?
(46) можно вообще скрыть поле "СуммаПлатежа" в этой группировке (т.е. что бы оно было пустым), т.к. оно там в принципе не имеет смысла
---
AnderWonder, (48) pavelyar, всё, похоже разобрался, отдал на проверку.
---
Не забудьте выплатить вознаграждение ;-)
---
echo77, Да, конечно, спасибо за подсказку)
---
AnderWonder, да-да, проведите-ка.
Вообще правильней было бы сделать как написалТ.е. вы сначала давали какие-то советы в конкретных "пинках" СКД (не совсем понятных мне, и совсем не понятных автору вопроса), а потом - согласились, что полностью переделать отчет заново - будет хорошей идеей?
Ждем "ликбез" от вас.
---
alex_sh2008, поставил, ничего не изменилось.
---
hasan-rusel, проверьте ваш запрос в консоли запросов, и проверьте настройки компоновщика СКД
---
Все решается просто:
1. Берем старую рабочую версию отчета
2. В СКД добавляем новый набор данных-запрос
3. В этом наборе данных выбирайте данные из ТЧ
4. Соединяем наборы данных по документу
5. PROFIT!
---
echo77, Ну я вроде так и пытаюсь, просто в 1 запросе, не ?
---
hasan-rusel, в 1-м запросе это не то, т.к. получается одна таблица в каждой строке которой СуммаПлатежа
---
hasan-rusel, до того времени, когда я не взялся систематизировать свои знания по СКД и не начал записывать все "кейсы" и тонкости использования функций СКД я тоже так думал.
По вашему вопросу у меня есть отдельный кейс.
Вот что я по нему когда-то накидал:
- Необходимо вывести табличную часть документа и реквизит шапки СуммаДокумента
- «Грабли» с соединением таблицы Документа и его ТЧ приводят к «задвоению» суммы документа
- Варианты решения
   - Объединение таблиц в запросе
   - Соединение наборов данных СКД

Это не одно и тоже

(37) Это тоже решение, но после понимания как работает соединение наборов данных в СКД это выглядит как костыль
---
поле "сумма платежа" в группировку не добавляй, добавь его на вкладке ресурсы и на вкладке выбранные поля выведи это поле для всех группировок.
посмотри, как сделано у тебя поле "сумма", и по такому же принципу сделай "сумму платежа".
---
infostart user, Так у меня так и сделано.
---
infostart user, посмотри, как сделано у тебя поле "сумма", и по такому же принципу сделай "сумму платежа".

не подходит, там разные принципы, Сумму считает СКД, а СуммаПлатежа в запросе (не знаю как объяснить, но как-то так)
PS) если взять старый отчет (поле Сумма платежа) и этот (поле сумма) то в некоторых контрагентах эти значения отличаются.
---
hasan-rusel, Сумму считает СКД, а СуммаПлатежа в запросе Без разницы, СКД лишь суммирует по группировкам. Если не устраивает - то все ищется заранее (запросом, постобработкой результата запроса и т.д.), а в СКД отключаются итоги и прочие "суммы".
---
AlexO, запросом не получается( Ругается "недопустимое поле для группировки "КонтрагентНаименованиеПолное""
когда пытаюь сделать поле СуммаПлатежа суммируемым.
---
hasan-rusel, без разницы откуда появляется сумма. на сколько я понимаю "сумма" рассчитывается на вкладке "вычисляемые поля", а "сумма платежа" берется из запроса.
но, чтобы по этим полям выполнялся расчет по группировкам, они должны быть добавлены в ресурсы и выбраны из "доступных полей" в "выбранные поля".
---
infostart user, вкладка "вычисляемые поля" пуста, сумма так же как и СуммаПлатежа является ресурсом.
И они стоят в "выбранных полях":

http://s009.radikal.ru/i310/1503/cd/70310ec395b6.jpg
---
infostart user, Вот пример:
Некоторые поля сумма вообще пусты, а СуммаПлатежа нет (хоть и в несколько раз больше "нужной" цифры)

http://s020.radikal.ru/i700/1503/81/08147f7ee018.jpg
---
почему различаются суммы и почему есть пустые значение - это уже другой вопрос.
сейчас задача посчитать "сумму платежа" по нужным группировкам, тебе принцип подхода уже описали.
чтобы скд посчитала итоги по группировкам, нужно добавить поле "сумма платежа" в ресурсы и выбрать его из доступных полей в выбранные поля в группировках.
---
infostart user, Но я уже добавил СуммаПлатежей в ресурсы и добавил в выбранные поля во все нужные группировки, результат тот же.
---
hasan-rusel, результат тот же."Тот же" - это какой? На картинке покажите.
---
AlexO, без проблем

http://s013.radikal.ru/i325/1503/34/f619fef9c862.jpg
---
hasan-rusel, и где пояснения? Что у вас дублируется? Не вижу дублей в отчете.
---
AlexO, На скрине видно, что Сумма платежа = Сумма * Кол-во строк нижнего уровня (215 000 * 36 = 7 000 000)
---
hasan-rusel, считай среднее вот те и не будет умножить на 36
---
количество,КоличествоУслуг добавь в ресурсы и убери из группировок. В ресурсах есть поле рассчитывать по (если понадобится)
---
ValToDas, Что мне даст расчитывать по?

а Количество тут тоже не поможет, делал вот так и все в ресурсы, результат тот же.

```1c
    ЕСТЬNULL(СчетПолученныйТовары.Номенклатура.Наименование, ПоступлениеТоваровУслугУслуги.Содержание) КАК Наименование,
    ЕСТЬNULL(СчетПолученныйТовары.Цена, ПоступлениеТоваровУслугУслуги.Цена) КАК Цена,
    ЕСТЬNULL(СчетПолученныйТовары.Количество, ПоступлениеТоваровУслугУслуги.Количество) КАК Количество,
    ЕСТЬNULL(СчетПолученныйТовары.Сумма, ПоступлениеТоваровУслугУслуги.Сумма) КАК Сумма,
```
---
Судя из запроса, СуммаПлатежа входит в каждую строку результат запроса. Поэтому, естественно, оно будет в детальных записях СКД и рассчитываться для каждой из группировок по формуле ресурса. Что бы получить правильный результат, Вам необходимо настроить различный расчет ресурса для разных группировок.
---
AnderWonder, Как это сделать ? (различный расчет ресурса)
---
hasan-rusel, нужно завести в ресурсах формулы этого поля для каждой из группировок. Группировки указывать в "Рассчитывать по..". Для "Номенклатура, Цена, Количество" указать агрегатную функцию "Максимум". Для вышестоящих группировок и общих итогов использовать функцию СКД "ВычислитьВыражениеСГруппировкойМассив".
---
hasan-rusel, Как это сделать ? (различный расчет ресурса)Он предложил сделать разные "ресурсы" (поля с разным расчетом). и выводить их для разных группировок (настраивается в ресурсах, "Рассчитать по...")
---
А к какой конфигурации применимо?
---
Всем большое спасибо, тема закрыта !