Доброго всем дня!
Вопрос по поводу СКД. Конфигурация Комплексная автоматизация, редакция 1.1 (1.1.11.2)
Необходимо просуммировать итоги по группировкам (в моем случае по организациям), в то время как детальные записи по группировкам суммировать не надо. Пробовали работать и с ресурсами ,но бесполезно, наверное надо изменять запрос...
Никак не получается, может кто знает как решить поставленную задачу?
У меня две группировки: по организациям и по виду(банковский счет/касса). Так вот, необходимо, чтобы детальные записи не суммировались по группировке банковский счет/сумма, а выводилась одна сумма ,для этого я в ресурсах указала Максимум(), добившись этим требуемого результата. А вот для группировки Организация необходимо чтобы просуммировались итоговые суммы по группировке Банковский счет/касса, тут уже Максимум() не прокатит, необходима Сумма(). То есть, то, что выделено зеленым - это есть сумма того, что выделено синим цветом.
(8)(9) Ну да, я это и имел в виду в (7). Ресурс добавляешь дважды: первый раз агрегатная функция "Максимум", Рассчитывать по... "Банковский счет/касса", второй - "Сумма", Рассчитывать по... "Организация".
Попробуй в указании ресурсов закинуть эту колонку два раза. Т.е. добавляешь первый раз - указываешь агрегатную функцию "Максимум" и указываешь по нём рассчитывать, а второй раз его же в ресурсы добавляешь и агрегатная функция "Сумма" - указываешь по каким группировкам его рассчитывать.
делала я уже так, первый раз агрегатная функция Максимум(), Рассчитывать по Банковский счет/касса, а второй раз - агрегатная функция Сумма(), Рассчитывать по Организация. В итоге во 2 случае он суммирует все числа, все детальные записи, а мне надо, чтоб суммировались суммы только первой группировки.
(12) Использование вложенных агрегатных функций не допускается. Обнуление итогов по статьям ничего не даст - для группировок будет считаться сумма детальных записей, входящих в группировку, независимо от того, что указано в других ресурсах.
(11) Тогда, думаю, нужно разбираться с ВычислитьВыражение(), либо мудрить с запросом.
не совсем понятно... можете подробнее объяснить?
Вот что сделала в ресурсах, вроде те цифры, что нужны были, но вот незадача, теперь не разворачивает подробно статьи по детальным записям, так как они у меня в ресурсах.
(13) 1_C, Спасибо, люди добрые, за эту тему и ответы в ней.
Четыре часа наверное просидел схожий по структуре простенький отчет всяко разно пытался научить цену по группировкам не суммировать из детальных записей. И группировки накладывал и итогами думал уже попробовать. А ларчик-то просто открывался ! Особое спасибо за скрин !
На семерке - то давно бы уже догадался как сделать, а 8.2 только осваиваю :)
статью ДДС я добавила в ресурсы по рекомендации RustamZz. В итоге все суммы считаются нормально, но из-за этих ресурсов не отображаются детальные записи.
Мучаюсь с такой же ситуацией.
Есть две группировки: Должник, Документ. Нужно, чтобы в группировке документ выводилось минимальное значение поля Долг, а в группировке должник должна быть сумма этих значений и в общих итогах.
Пробовал несколько одинаковых ресурсов с разными формулами для разных группировок, выдает суммарное значение по всем элементам, а не сумму минимальных значений.
Пробовал ВычислитьВыражение() в вычисляемых полях.
Как-то так:
ВычислитьВыражение("Сумма(Долг)","Должник", "Группировка").
Во-первых не выводиться в группировках, во-вторых выводит общую сумму всех элементов.
Почитал форумы, говорят решать на уровне второго набора данных уже свернутого по нужным группировкам и дальше заводить два ресурса. Но у меня гигантский многостраничный запрос, он и так долго работает. Почитал ИТС, там встретил такую фразу, что итоги рассчитываются по детальным записям, а мне нужно по значениям итогов в группировках. Сумма минимумов, если конкретно. Жаль, что только уже не перепробовал, кроме второго набора данных, никак не выходит желаемое, видимо придется переписывать запрос.
(27) qwertyman, Для подсчета "Суммы минимумов" правильно поступить так: в выражении для ресурса (например "НашРесурс") написать
Сумма(ВычислитьВыражениеСГруппировкойМассив("Минимум(НашРесурс)","НашаГруппировкаСМинимумами")), а рассчитывать это выражение нужно по вышестоящей группировке.
(29) Tsaregorodtsev, Так работает только для первой вышестоящей группировки, а как сделать для второй вышестоящей группировки суммирование вложенных группировок, рассчитанных по указанной Вами формуле ?
Т.е. есть три группировки :
- итог нижней группировки считается как "Минимум"
- итог вышестоящей считается как сумма нижней, по указанной Вами формуле
- итог следующей вышестоящей должен считаться как сумма предыдущей группировки - если оставить указанную Вами формулу, то суммируются только минимумы по нижней группировке
(33) and-t, Думаю так: Добавляешь еще раз <Ресурс> + Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(НашРесурс)","НашаВтораяГруппировка")) и <Рассчитывать по...> третья группировка
(33) and-t, вопрос актуальный, предложенный ранее вариант работает некорректно, т.к. всё равно будет браться сумма по детальным записям. Если кто знает - отпишитесь плз
(29) Tsaregorodtsev, спасибо огромное. А кто нить знает, есть нормальное описание где нить про язык выражений? С примерами, а не просто небольшая справка.
(29) Tsaregorodtsev, ай спасибо тебе, И тебе 1_С за то что создал эту тему!!!! Пол дня бился, и уже был готов сначала подсчитать сколько у меня этих минимумов, а потом делить на количество, что бы сумма корректная была. Но эта тема спасла мой отчет от иррациональности!!!!
(31) AlexKo84,
Можно, если я правильно понял - данные для Ч берутся из Ч1. Тогда, из запроса получаем данные Ч1, а поле Ч делаем в "Поля пользователя"- тип "Выражение". Там для "Детальных записей" пишем такое:
"[Ч1]",
а для "Итоговых записей" (они же группировки):
"Максимум([Ч1])"
После этого в дереве реквизитов открываете папку "Пользовательские поля" и видите там ресурс "Ч". Выводите его и радуетесь нужной вам форме.
В тесу.
УТ 10.3 Отчет по продажам
За период нужно рассчитать количество уникальных клиентов (количество(различные)) на каждый день периода
и в итоге по группировке (Агент - реквизит документа продажи) получить сумму этих продаж То есть как бы Сумма(Количество (различные Точка)) Точка - это контрагент (торговая точка)
То есть, если за 1-й день было 2 уникальных, за 2-1 день 3 уникальных, а за 3-1 день - 1 уникальный в итоге д.б. 6
Пробовал Сумма(ВычислитьВыражениеСГруппировкойМассив("Количество(Различные Точка)","Контрагент")) для дополнительного реквизита
Получается то же, что и для Реквизита Точка (Количество(Различные Точка)).
Где я ошибся?
Под Группировкой Агент находятся детальные записи? или группировка Контрагент без детальных.
(38) echo77,
Я сделал. Добавил отдельный запрос в СКД с выборкой уникальных документов за период по принципу - был хоть 1 - "1", иначе - "0"
Состыковал по дате, агенту, контрагенту - всё срослось...
Правда, вылезла некая побочная "фишка" с суммами документов: если не добавлять детальных записей с документом продажи, суммы документов считает неправильно.
Кому интересно, могу скинуть отчет.
Не нужно тут использовать "Вычислить" и "Вычислить вырежение".
Нужно в источнике данных у реквизита "Остаток на начало" поставить роль "Остатки", имя роли "Сумма", тип "Начальный остаток".
У конечного остатка аналогично, только тип "Конечный остаток".
И все. Расчет ресурсов как у всех - по всем полям без отбора. СКД сам будет давать правильные данные.
Есть несколько предложения по запросу.
НаборДанных1:
Обороты за период лучше взять из БД в неизменном виде - т.е. ничего не группировать. А вот для получения цен на каждую дату продажи сделать отдельный вложенный запрос. Так же посмотрите в сторону использования временных таблиц
Вычисляемые поля:
Месяц и день, лучше записать просто формулой:
НачалоПериода(Дата,"Месяц")
а для того чтобы привести представление к нужному виду("ДФ = ""ММММ гггг""") воспользоваться свойством оформление того же вычисляемого поля, т.к. в данном случае у вас поле типа строка - во-первых, по нему трудно будет фильтровать, во вторых, вам пришлось дополнительно выражение упорядочивания прописывать
(43) echo77,
Агент - это "местное" добавление (от Моби-С) - это торговый представитель, непосредственно осуществляющий заказ товара через КПК.
Попробую так.
Была похожая ситуация в СКД: из документа выбиралась вся табличная часть (товары) и соединялась с итогом из другой табличной части этого же документа (СуммаРабот) - выходило так, что итог дублировался в каждой строке из 1й ТЧ. Ну а при указании что это (СуммаРабот) ресурс и расчете по нему итогов, СКД суммировала и выходила СуммаРабот заоблачной (во столько раз больше, сколько строк товаров).
В общем решил это добавлением в СКД еще одного НабораДанных в котором была только эта сумма и настройка связи на закладке Связи наборов данных по ссылке документа с первым набором данных. После этого *задвоение-троение* итоговых значений исчезли, а напротив каждой строки номенклатуры была итоговая цифра работ по этому документу из другой тч.
Апну тему, поскольку в очередной раз пришлось описывать итоги только по определенным группировкам, снова забыл как, снова гуглил, снова решил.
И эту ветку перечитал, понял, надо запротоколировать решение:
Есть сложный многосоставной запрос со сложными соединениями таблиц. Упрощу для пояснения:
В одной из таблиц - номенклатура, статьи и количество. В другой только статьи и сумма расходов (назовем "Затрата", это число).
Отчет выводит группировки: "Статья" - "Номенклатура", и ресурсы.
Нужно выводить итоги по сумме только для статей, а количество для номенклатуры и статей. (Если мы начнем суммировать расходы как обычно, то получим задвоения, если одной статье соответствует две и более номенклатур.)
Количество - обычный ресурс с выражением "Сумма": Сумма(Количество).
А вот для расходов делаю вычисляемое поле, равное 0. А в выражении ресурса пишу "Сумма(Затрата)". Поле "Рассчитывать по" указываю "Статья".
Всё.
Немаловажно для соединения таких таблиц!
Таблица с номенклатурой - слева!
Соединение я делал в СКД как два набора данных.
Таблица с расходами - справа. Соединение по статье.
(Если всё делать одним запросом, то в итоговой выборке каждой номенклатуре была бы рассчитана Затрата и финт с вычисляемым полем и ресурсом не сработал бы).