Версия для печати темы (https://pro1c.org.ua/index.php?s=d5b85ce1bc948baef0f2a741bab1a394&showtopic=33391)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Как вычислить значение ресурса для группировки по значениям ресурса нижестоящей группировки

Автор: Отцовский 22.11.16, 17:03

Задача вроде бы простая: надо сделать отчет по взаиморасчетам с покупателями.
Группировки:
Организация
Контрагент
Заказ
Ресурсы:
НашДолгКонтрагенту
ДолгКонтрагентаНам

По каждому конкретному заказу либо нам должны, либо мы. Тут вопросов нет.
Если для вычисления ресурсов группировки "Контрагент" применить функцию СУММА(ДолжныНам) и СУММА(ДолжныМы), то получаются значения, допустим, 200 и 180.
Меня это не устроило и я свернул долг, использовав конструкцию ВЫБОР, в результате получил свёрнутый долг 20 и 0. Всё хорошо. Но вот для вышестоящей группировки "Организация", а также для ОбщихИтогов надо суммировать не развернутые долги по заказам, а свернутые долги по контрагентам, т.е. не 200 и 180 для одного контрагента и, к примеру, 150 и 220 для другого, а 20 и 0 для одного и 0 и 70 для другого, чтобы в итоге по организации было 20 и 70. И вот тут мои знания начинающего СКДшника кончились. Наверняка ж есть какое-то стандартное решение - задача ж типичная. Знаю, что есть функция ВЫЧИСЛИТЬЗНАЧЕНИЕ(), но описание к ней уж больно мудрёное, как её присобачить к моей проблеме - ума не приложу. А может и не её вовсе?

Ребята, буду благодарен за подсказку.

Автор: Acid 22.11.16, 17:22

Группировки выводятся поочередно. Нижестоящую группировку увидеть нельзя, потому что ее "еще нет".

Автор: Отцовский 22.11.16, 17:30

Acid @ Сегодня, 17:22 * ,
Это понятно, что нижестоящей группировки нет. Но долги то есть, и есть проблема в их суммировании - значит должен быть и способ решения.
Самый простой - отказаться от СКД и за 10 мин. сделать всё самому традиционным способом. Но такой способ мне известен, и он меня не устраивает.

Автор: bakalavr 22.11.16, 22:18

Я бы попробовал получить таблицу такого вида:
Организация, Контрагент, Заказ, ДолгКонтрагента, НашДолг, ДолгКонтрагентаРазвернуто, НашДолгРазвернуто
Организация1, Контрагент1, null, 20, 0, 0, 0
Организация1, Контрагент1, Заказ1, 0, 0, 200, 0
Организация1, Контрагент1, Заказ1, 0, 0, 0, 180

Затем на вкладке ресурсов для группировки Заказ рассчитывать развернутые итоги, для остальных группировок свернутые

Автор: Отцовский 22.11.16, 23:30

bakalavr @ Сегодня, 22:18 * ,
Спасибо. Именно так я и сделал, пока дожидался подсказки лучшего решения, более элегантного. Как-то не верится, что его нет.

Автор: Acid 22.11.16, 23:45

Задача на самом деле не простая. Потому что есть еще дни просрочки, товарный кредит (аппетит прийдет во время еды)
Решается это все вложенными запросами, объединениями и вспомогательными полями. Вот вспомогательные поля содержат нужную для вычислений инфу (как вы про Выбор написали), и в самой СКД они присутствуют, но в отчет не выводятся.
Приемов реализации масса. Нужно подобрать подходящий.
Например, можно собрать таблицу значений, и уже ее подсунуть СКД.

Автор: Отцовский 23.11.16, 9:27

Acid @ Вчера, 23:45 * ,
Спасибо.

Да, вы правы на счет "аппетита" )))
Задача изначально была не так проста, как я её описал. Трудно себе представить такой примитивный отчет в реально работающей конфигурации. Даже у простого ФОПа и то есть свои заморочки. Но я умею их разморочивать. Я просто постарался максимально упростить описание для выделения именно "камня преткновения". А то что вокруг него ещё целые горы других "камней", так у нас есть для этого богатый набор "альпинистского снаряжения" )))
Справился я и с этим "камнем", но с применением средств языка запросов. А мне так хотелось нагрузить этой проблемой саму СКД, пусть бы она попыхтела ))). А то пишут: "СКД - мощный инструмент разработки отчетов". Мощный то он мощный, да вот выходит: простых задач решать не умеет. Вывод, конечно, провокаторский. Авось кто-то ещё что-то предложит ))).

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua