Имя: Пароль:
1C
1С v8
Подмена Итогов в СКД
,
0 емое
 
05.12.11
13:18
Добрый день

Есть отчет с группировкой по справочнику элементов отчета с иерархией. В отчете есть 2 показателя: сумма и сумма нарастающим итогом.

Сейчас отчет выглядит так:
Группировка         Сумма         Сумма нарастающий итог
гр1. ур. 1          1000          1000
гр11. ур. 2        1000
 эл111. ур. 3      1500
 эл111. ур. 3      -500
гр2. ур. 1           70           1070
гр21. ур. 2        -30  
 эл211. ур. 3      -30
гр22. ур. 2        100
 эл221. ур. 3      100
гр3. ур. 1          -10           1060
гр31. ур. 2        -10
 эл311. ур. 3      -10

Нужно сделать в отчете одну колонку, где в зависимости от реквизита группы первого уровня будет выводить значение либо первой либо второй колонки. Сложность в том, что сумма должна измениться только по группе, по которой установлен соответствующий флаг, вся дочерняя структура не меняется, т.е. получается если для группы "гр3. ур. 1" установлен флаг вывода нарст. итога сумма должна быть 1060, и она не равна сумме дочерних элементов -10.

Получится должно так:
Группировка         Сумма        
гр1. ур. 1          1000          
гр11. ур. 2        1000
 эл111. ур. 3      1500
 эл111. ур. 3      -500
гр2. ур. 1           70          
гр21. ур. 2        -30  
 эл211. ур. 3      -30
гр22. ур. 2        100
 эл221. ур. 3      100
гр3. ур. 1          1060          
гр31. ур. 2        -10
 эл311. ур. 3      -10

Что нужно ковырять? Макет? Настройки схемы? Или где то в коде вывода можно подменить сумму итога?
1 Buster007
 
05.12.11
13:33
можно попробовать в ресурсах поставить то, что тебе надо.
Для ресурса "сумма" задать для групп верхнего уровня твою сумму с нарастающим итогом, а для прочих элементов задать обычную сумму )
2 емое
 
05.12.11
15:01
Добавил ресурс с выражением
"Сумма(Выбор Когда Статья.ВыводитьНИ Тогда СуммаНИ Иначе Сумма Конец)"

не срабатывает, проблема в том, что эти все выражения рассчитываются на уровне элементов, а потом суммированием собираются в иерархию и получаются суммы по группам.

Вот как заменить сумму по группе не меняя сумму вложенных элементов, вот в чем вопрос.
3 Amiralnar
 
05.12.11
15:02
Классика. "Рассчитывать итоги по:"
4 емое
 
05.12.11
15:06
Можно в двух словах, как использовать  "Рассчитывать итоги по:"?
5 Amiralnar
 
05.12.11
15:21
(4) Вкладка "Ресурсы"
6 емое
 
05.12.11
16:08
Насчет двух слов зачет, можно развернуть ответ по поводу "Рассчитывать итоги по:"?
7 Amiralnar
 
05.12.11
16:16
В конструкторе СКД есть вкладка, на которой определяются ресурсы. Там  есть колонка, в которой можно сказать, по каким группировкам рассчитывать данный ресурс.
8 емое
 
05.12.11
16:20
И как это поможет в моей ситуации?
9 PVV65
 
05.12.11
16:23
Может поможет "пользовательское поле - выражение" из настроек. Там как раз можно создать новую колонку с произвольным расчетом значения как для группировок так и для детальных записей.
10 емое
 
05.12.11
20:41
(9) не помогло. Написал для детальных записей "Сумма", для итоговых:
Выбор
   Когда Статья.ВыводитьНИ
       Тогда СуммаНИ
   Иначе Сумма
Конец

Для всех строк где на головном элементе  Статья.ВыводитьНИ = Истина вывелась СуммаНИ.
11 емое
 
05.12.11
20:54
(7) все что удалось добиться при помощи "Рассчитывать итоги по:" создал два итога - просто сумма для детальных записей и сумма нарастающим итогом для иерархии. Но это не решение, потому что
1. Это две колонки, а мне нужна одна, как их собрать в одну не понятно
2. В моем примере для гр31. ур. 2 должно быть -10, т.е. просто сумма а не нарастающим итогом.
12 Amiralnar
 
06.12.11
09:24
(11) Теперь обрабатывай вывод отчета и компонуй  данные колонок в одну.
13 емое
 
06.12.11
09:44
(12) Курил хрусталеву и другие источники...

везде пишут "Обратим внимание, что после определения границ области для макета система автоматически заполняет параметры макета и соответствующие выражения".

У меня так не происходит.

Задаю имена группировкам, добавляю макет группировки (или ресурса не важно) указываю нужную группировку (или пересечение для ресурсов) выделяю область, и ... ничего не происходит. Если в поле текст написать что либо и вывести отчет, область в отчет попадает, только не понятно как туда вписать выражение?
14 PVV65
 
06.12.11
09:53
(10) Что то у тебя не так. У меня все получается.
Напиши так

Выбор
   Когда Статья.ВыводитьНИ И Уровень = 1
       Тогда СуммаНИ
   Иначе Сумма
Конец
15 PVV65
 
06.12.11
09:54
(13) Сильно усложняешь. Твоя задача проще. Решается настройками.
16 PVV65
 
06.12.11
10:05
Только что нарисовал пример - все работает.
17 емое
 
06.12.11
10:13
сделал вычисляемое поле с выражением:

Выбор
   Когда Статья.ВыводитьНИ И Статья.Уровень() = 1
       Тогда СуммаНИ
   Иначе Сумма
Конец

Кстати, может надо было использовать выражение представления?

Ругается:

{ВнешнийОтчет.УправленческаяОтчетность.МодульОбъекта(181)}: Ошибка при вызове метода контекста (Вывести)
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "Статья.Уровень"
18 PVV65
 
06.12.11
10:15
(17) "Уровень" - это системное поле СКД, а не метод справочника.
19 PVV65
 
06.12.11
10:17
+(18) В конфигураторе надо писать "СистемныеПоля.Уровень".
20 емое
 
06.12.11
10:24
(19) не пойму как использовать СистемныеПоля.Уровень в кейсе:

Выбор
   Когда Статья.ВыводитьНИ И Статья.Уровень() = 1
       Тогда СуммаНИ
   Иначе Сумма
Конец
21 PVV65
 
06.12.11
10:25
(20)

Выбор
   Когда Статья.ВыводитьНИ И СистемныеПоля.Уровень = 1
       Тогда СуммаНИ
   Иначе Сумма
Конец
22 емое
 
06.12.11
10:26
(21) так пробовал, пишет Поле не найдено СистемныеПоля.Уровень

я этот кейс пытаюсь вставить как выражение вычисляемого поля, может не туда надо?
23 PVV65
 
06.12.11
10:29
(22) В настройка - Пользовательские поля.
24 PVV65
 
06.12.11
10:30
+(23) еще в (9) написал.
25 емое
 
06.12.11
10:33
О! Вот оно чо! Спасибо большое, на уровне пользовательских полей в настройках работает. Алилуя.
26 емое
 
06.12.11
12:27
Сработало как оказалось не совсем как хотелось :-)

В процессах экспериментов я установил флаг ВыводитьНИ для элемента нижнего уровня, и таким образом сработала эта галка а не та что стоит на группе первого уровня. Чтобы это обнаружить ушел последний час...

Т.е. получается как ни крути СКД все выражения вычисляет для элементов, а затем уже скручиваются в иерархию?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой