Есть отчет на СКД (БП), в котором поле СуммаПлатежа считается из запроса, в старой версии отчета все работало нормально, стоило добавить группировку (ТЧ номенклатура/цена/колво/сумма), как поле СуммаПлатежа "дублируется на каждую строку ТЧ, соотв. конечная цифра не верная, подскажите как поправить ?
ВЫБРАТЬ
СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка КАК Ссылка,
СписаниеСРасчетногоСчетаРасшифровкаПлатежа.ДоговорКонтрагента КАК ДоговорКонтрагента,
СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа,
СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом,
ВЫБОР
КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным"
ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным (в у.е.)"
ТОГДА "Предоплата"
КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками"
ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)"
ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с прочими поставщиками и подрядчиками"
ТОГДА "Факт"
ИНАЧЕ " "
КОНЕЦ КАК ВидПлатежа
ПОМЕСТИТЬ ВТ_списание
ИЗ
Документ.СписаниеСРасчетногоСчета.РасшифровкаПлатежа КАК СписаниеСРасчетногоСчетаРасшифровкаПлатежа
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Контрагенты.Наименование КАК Наименование,
ВложенныйЗапрос.Вид КАК Вид,
ВложенныйЗапрос.ОбъектСсылка КАК ОбъектСсылка,
ВложенныйЗапрос.Представление КАК Представление
ПОМЕСТИТЬ ВТ_Адреса
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
КонтактнаяИнформация.Объект.Ссылка КАК ОбъектСсылка,
КонтактнаяИнформация.Вид КАК Вид,
КонтактнаяИнформация.Представление КАК Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Вид.Наименование = "Юридический адрес") КАК ВложенныйЗапрос
ПО Контрагенты.Ссылка = ВложенныйЗапрос.ОбъектСсылка.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СписаниеСРасчетногоСчета.Контрагент.Наименование КАК Контрагент,
СписаниеСРасчетногоСчета.Контрагент.НаименованиеПолное,
СписаниеСРасчетногоСчета.Дата КАК ДатаПлатежа,
ВТ_списание.СтатьяДвиженияДенежныхСредств,
СписаниеСРасчетногоСчета.НазначениеПлатежа,
СписаниеСРасчетногоСчета.ДоговорКонтрагента.Комментарий КАК ПредметДоговора,
ВТ_списание.ВидПлатежа,
СписаниеСРасчетногоСчета.НомерВходящегоДокумента,
СписаниеСРасчетногоСчета.ДатаВходящегоДокумента,
ВТ_Адреса.Представление КАК ЮридическийАдрес,
ВТ_списание.СуммаПлатежа,
СписаниеСРасчетногоСчета.ДокументОснование.ДокументОснование.Ссылка КАК ДокументОснование
ПОМЕСТИТЬ ВТ_ПочтиКонец
ИЗ
Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_списание КАК ВТ_списание
ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_списание.Ссылка
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Адреса КАК ВТ_Адреса
ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_Адреса.ОбъектСсылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПриходныйКассовыйОрдер.Контрагент.Наименование,
ПриходныйКассовыйОрдер.Контрагент.НаименованиеПолное,
ПриходныйКассовыйОрдер.Дата,
ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств,
ПриходныйКассовыйОрдер.Основание,
"",
ВЫБОР
КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным"
ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным (в у.е.)"
ТОГДА "Предоплата"
КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками"
ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)"
ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с прочими поставщиками и подрядчиками"
ТОГДА "Факт"
ИНАЧЕ " "
КОНЕЦ,
"",
"",
"",
ВложенныйЗапрос.СуммаПлатежа,
""
ИЗ
Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Ссылка,
ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа,
ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
ИЗ
Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа) КАК ВложенныйЗапрос
ПО ПриходныйКассовыйОрдер.Ссылка = ВложенныйЗапрос.Ссылка
ГДЕ
ПриходныйКассовыйОрдер.Проведен = ИСТИНА
И ПриходныйКассовыйОрдер.СчетУчетаРасчетовСКонтрагентом.Код = "51"
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПочтиКонец.Контрагент,
ВТ_ПочтиКонец.КонтрагентНаименованиеПолное,
ВТ_ПочтиКонец.ДатаПлатежа,
ВТ_ПочтиКонец.СтатьяДвиженияДенежныхСредств,
ВТ_ПочтиКонец.НазначениеПлатежа,
ВТ_ПочтиКонец.ПредметДоговора,
ВТ_ПочтиКонец.ВидПлатежа,
ВТ_ПочтиКонец.НомерВходящегоДокумента,
ВТ_ПочтиКонец.ДатаВходящегоДокумента,
ВТ_ПочтиКонец.ЮридическийАдрес,
ВТ_ПочтиКонец.ДокументОснование,
СчетПолученныйТовары.Номенклатура,
СчетПолученныйТовары.Цена,
СчетПолученныйТовары.Количество,
ЕСТЬNULL(СчетПолученныйТовары.Сумма, ПоступлениеТоваровУслугУслуги.Сумма) КАК Сумма,
ПоступлениеТоваровУслугУслуги.Содержание КАК СодержаниеУслуги,
ПоступлениеТоваровУслугУслуги.Цена КАК ЦенаУслуги,
ПоступлениеТоваровУслугУслуги.Количество КАК КоличествоУслуг,
"" КАК _,
ВТ_ПочтиКонец.СуммаПлатежа
ПОМЕСТИТЬ ВТ_Конец
ИЗ
ВТ_ПочтиКонец КАК ВТ_ПочтиКонец
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетПолученный.Товары КАК СчетПолученныйТовары
ПО ВТ_ПочтиКонец.ДокументОснование.Ссылка = СчетПолученныйТовары.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
ПО ВТ_ПочтиКонец.ДокументОснование.Ссылка = ПоступлениеТоваровУслугУслуги.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Конец.Контрагент,
ВТ_Конец.КонтрагентНаименованиеПолное,
ВТ_Конец.ДатаПлатежа,
ВТ_Конец.СтатьяДвиженияДенежныхСредств,
ВТ_Конец.НазначениеПлатежа,
ВТ_Конец.ПредметДоговора,
ВТ_Конец.ВидПлатежа,
ВТ_Конец.НомерВходящегоДокумента,
ВТ_Конец.ДатаВходящегоДокумента,
ВТ_Конец.ЮридическийАдрес,
ВТ_Конец.ДокументОснование,
ВТ_Конец.Номенклатура,
ВТ_Конец.Цена,
ВТ_Конец.Количество,
ВТ_Конец.Сумма,
ВТ_Конец.СодержаниеУслуги,
ВТ_Конец.ЦенаУслуги,
ВТ_Конец.КоличествоУслуг,
ВТ_Конец._,
ВТ_Конец.СуммаПлатежа
ИЗ
ВТ_Конец КАК ВТ_Конец
(1) Все решается просто:
1. Берем старую рабочую версию отчета
2. В СКД добавляем новый набор данных-запрос
3. В этом наборе данных выбирайте данные из ТЧ
4. Соединяем наборы данных по документу
5. PROFIT!
(1) hasan-rusel, если хотите данные по полю "СуммаПлатежа" - то введите его как ресурс согласно (2 ), если хотите аналитику - то играйтесь с запросом и группировкой.
(14) AlexO, Не думал что придется расшифровывать свой пост, в запросах приведенных выше нет проверки на NULL, в результате в основную выборку попадают по ресурсу "СуммаПлатежа" значения с NULL, суммирование в таком случае не будет.
(21) hasan-rusel, где выборка суммы идет из запроса поcле "ЛЕВОЕ СОЕДИНЕНИЕ", пример:
ВЫБРАТЬ
....
ЕСТЬNULL(ВТ_списание.СуммаПлатежа, 0) КАК ...,
.....
ПОМЕСТИТЬ ВТ_ПочтиКонец
ИЗ
Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_списание КАК ВТ_списание
ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_списание.Ссылка
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Адреса КАК ВТ_Адреса
ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_Адреса.ОбъектСсылка
(23) alex_sh2008, (25) AnderWonder, без четкого разъяснения - вы даете какие-то противоположные подчас советы.
Хотя "на первый взгляд" - впечатление, что вы "понимаете, о чем речь" ))
(27) AlexO, нет времени проводить для Вас ликбез.
Вообще правильней было бы сделать как написал (29), но для этого придется переделывать запрос и схему. Через различный расчет ресурсов можно решить задачу оперативно, но следует иметь ввиду, что это ограничит возможность пользователям самостоятельно редактировать группировки.
(35) hasan-rusel, для начала поставьте функцию Максимум для ресурса и рассчитывать по "Номенклатура, Цена, Количество" тогда в группировке "Номенклатура, Цена, Количество" появится правильное значение. Затем добавляете ещё раз это поле в ресурсы, "Рассчитывать по" указываете остальные поля вышестоящих группировок и общий итог, а функцию прописываете Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлатежа)","Номенклатура, Цена, Количество"))
(38) hasan-rusel, Выкиньте этот запрос, про анализируйте заново постановку задачи и напишите новый запрос, судя по содержанию у вас в этом запросе сборная солянка.
(38) hasan-rusel, да, для ресурса "СуммаПлатежа". В настройках СКД ничего менять не нужно (если вы что-то поменяли, то верните как было). Правильное значение будет в сформированном отчете. Сформируйте и посмотрите такой ли результат вам нужен для этой группировки. А затем пропишите функцию ВычислитьВыражениеСГруппировкойМассив, как было написано.
(42) AnderWonder, как решить еще проблему когда в 1 документе 2 одинаковые суммы ? если ставлю сумма(СуммаПлатежа), то сумма "улетает", а сейчас когда максимум(СуммаПлатежа) выходит так:
(37) AnderWonder, Сделал, вроде получилось, но не совсем. Теперь на 3м уровне рисует верные цифры (зел) а на 2м уровне прежние превышающие в несколько раз (крас)
(45) hasan-rusel, в "Рассчитывать по" ресурса где формула с "ВычислитьВыражениеСГруппировкойМассив" проставили все группировки? "Общий итог" там же поставили?
(46) можно вообще скрыть поле "СуммаПлатежа" в этой группировке (т.е. что бы оно было пустым), т.к. оно там в принципе не имеет смысла
Т.е. вы сначала давали какие-то советы в конкретных "пинках" СКД (не совсем понятных мне, и совсем не понятных автору вопроса), а потом - согласились, что полностью переделать отчет заново - будет хорошей идеей?
Ждем "ликбез" от вас.
(1) Все решается просто:
1. Берем старую рабочую версию отчета
2. В СКД добавляем новый набор данных-запрос
3. В этом наборе данных выбирайте данные из ТЧ
4. Соединяем наборы данных по документу
5. PROFIT!
(34) hasan-rusel, до того времени, когда я не взялся систематизировать свои знания по СКД и не начал записывать все "кейсы" и тонкости использования функций СКД я тоже так думал.
По вашему вопросу у меня есть отдельный кейс.
Вот что я по нему когда-то накидал:
- Необходимо вывести табличную часть документа и реквизит шапки СуммаДокумента
- «Грабли» с соединением таблицы Документа и его ТЧ приводят к «задвоению» суммы документа
- Варианты решения
- Объединение таблиц в запросе
- Соединение наборов данных СКД
Это не одно и тоже
(37) Это тоже решение, но после понимания как работает соединение наборов данных в СКД это выглядит как костыль
поле "сумма платежа" в группировку не добавляй, добавь его на вкладке ресурсы и на вкладке выбранные поля выведи это поле для всех группировок.
посмотри, как сделано у тебя поле "сумма", и по такому же принципу сделай "сумму платежа".
посмотри, как сделано у тебя поле "сумма", и по такому же принципу сделай "сумму платежа".
не подходит, там разные принципы, Сумму считает СКД, а СуммаПлатежа в запросе (не знаю как объяснить, но как-то так)
PS) если взять старый отчет (поле Сумма платежа) и этот (поле сумма) то в некоторых контрагентах эти значения отличаются.
Без разницы, СКД лишь суммирует по группировкам. Если не устраивает - то все ищется заранее (запросом, постобработкой результата запроса и т.д.), а в СКД отключаются итоги и прочие "суммы".
(6) AlexO, запросом не получается( Ругается "недопустимое поле для группировки "КонтрагентНаименованиеПолное""
когда пытаюь сделать поле СуммаПлатежа суммируемым.
(4) hasan-rusel, без разницы откуда появляется сумма. на сколько я понимаю "сумма" рассчитывается на вкладке "вычисляемые поля", а "сумма платежа" берется из запроса.
но, чтобы по этим полям выполнялся расчет по группировкам, они должны быть добавлены в ресурсы и выбраны из "доступных полей" в "выбранные поля".
почему различаются суммы и почему есть пустые значение - это уже другой вопрос.
сейчас задача посчитать "сумму платежа" по нужным группировкам, тебе принцип подхода уже описали.
чтобы скд посчитала итоги по группировкам, нужно добавить поле "сумма платежа" в ресурсы и выбрать его из доступных полей в выбранные поля в группировках.
а Количество тут тоже не поможет, делал вот так и все в ресурсы, результат тот же.
ЕСТЬNULL(СчетПолученныйТовары.Номенклатура.Наименование, ПоступлениеТоваровУслугУслуги.Содержание) КАК Наименование,
ЕСТЬNULL(СчетПолученныйТовары.Цена, ПоступлениеТоваровУслугУслуги.Цена) КАК Цена,
ЕСТЬNULL(СчетПолученныйТовары.Количество, ПоступлениеТоваровУслугУслуги.Количество) КАК Количество,
ЕСТЬNULL(СчетПолученныйТовары.Сумма, ПоступлениеТоваровУслугУслуги.Сумма) КАК Сумма,
Судя из запроса, СуммаПлатежа входит в каждую строку результат запроса. Поэтому, естественно, оно будет в детальных записях СКД и рассчитываться для каждой из группировок по формуле ресурса. Что бы получить правильный результат, Вам необходимо настроить различный расчет ресурса для разных группировок.
(22) hasan-rusel, нужно завести в ресурсах формулы этого поля для каждой из группировок. Группировки указывать в "Рассчитывать по..". Для "Номенклатура, Цена, Количество" указать агрегатную функцию "Максимум". Для вышестоящих группировок и общих итогов использовать функцию СКД "ВычислитьВыражениеСГруппировкойМассив".