|
СКД. Как скрыть не нужные группировки. | ☑ | ||
---|---|---|---|---|
0
ЭЦ
09.08.23
✎
13:25
|
ГОСПОДА !
Имеется отчет на СКД. Выводит остаток товара на начало периода и приход - расход в течение периода. (Это условный пример для иллюстрации вопроса) Запрос имеет следующий вид : //--------------------------------------- ВЫБРАТЬ ВТ_НАЧ_ОСТАТОК.Товар ВТ_НАЧ_ОСТАТОК.Остаток, NULL КАК ДокументДвижения, 0 КАК Приход, 0 КАК Расход ИЗ ВТ_НАЧ_ОСТАТОК ОБЪЕДИНИТЬ ВЫБРАТЬ ВТ_НАЧ_ОСТАТОК.Товар 0 КАК Остаток, ВТ_ДОКУМЕНТЫ.Ссылка КАК ДокументДвижения, ВЫБОР КОГДА ВТ_ДОКУМЕНТЫ.Количество > 0 ТОГДА ВТ_ДОКУМЕНТЫ.Количество ИНАЧЕ 0 КАК Приход, ВЫБОР КОГДА ВТ_ДОКУМЕНТЫ.Количество < 0 ТОГДА -ВТ_ДОКУМЕНТЫ.Количество ИНАЧЕ 0 КАК Расход ИЗ ВТ_ДОКУМЕНТЫ //--------------------------------------- В СКД настраиваем группировку по Товару и детальные записи - по документам. Остаток, Приход и Расход - Ресурсы. Запускаем на выполнение получаем требуемый отчет. Группировка Товар - выглядит нормально а в детальных записях имеем строчки с документами движений и пустую строку с Документ = NULL и Остатком. Хотелось бы, чтобы этой строки не было в отчете, т.к. Нач. остаток имеет смысл только на уровне Товар. Как это реализовать - прошу подсказать |
|||
1
ЭЦ
09.08.23
✎
13:27
|
Сори запрос должен выглядеть так:
//--------------------------------------- ВЫБРАТЬ ВТ_НАЧ_ОСТАТОК.Товар ВТ_НАЧ_ОСТАТОК.Остаток, NULL КАК ДокументДвижения, 0 КАК Приход, 0 КАК Расход ИЗ ВТ_НАЧ_ОСТАТОК ОБЪЕДИНИТЬ ВЫБРАТЬ ВТ_ДОКУМЕНТЫ.Товар 0 КАК Остаток, ВТ_ДОКУМЕНТЫ.Ссылка КАК ДокументДвижения, ВЫБОР КОГДА ВТ_ДОКУМЕНТЫ.Количество > 0 ТОГДА ВТ_ДОКУМЕНТЫ.Количество ИНАЧЕ 0 КАК Приход, ВЫБОР КОГДА ВТ_ДОКУМЕНТЫ.Количество < 0 ТОГДА -ВТ_ДОКУМЕНТЫ.Количество ИНАЧЕ 0 КАК Расход ИЗ ВТ_ДОКУМЕНТЫ //--------------------------------------- |
|||
2
Kigo_Kigo
09.08.23
✎
16:29
|
Убираем детальные записи прописываем колонки которые надо, или убираем Документ = NULL и Остатком из выводимых полей
|
|||
3
ЭЦ
09.08.23
✎
17:31
|
(2) Убрать детальные записи нельзя т.к. тогда не увидим документы движения
|
|||
4
vicof
09.08.23
✎
17:58
|
Плюс роли у полей настраиваем
|
|||
5
echo77
09.08.23
✎
18:58
|
Можно в детальных записях отбор установить Документ Заполнено, настройки отбора для элемента структуры скрыть
|
|||
6
ЭЦ
14.08.23
✎
16:19
|
(4) Поставил роль - "Игнорировать значение NULL"
- ни как не повлияло - странно. (5) Поставил отбор на Заполнено - повлияло - записи пропали |
|||
7
ЭЦ
14.08.23
✎
16:26
|
Теперь хотелось бы выполнить проверку : Что Остаток + Приход - Расход >= 0
Если это условие не выполняется то Вычисляемое поле "Ошибка" должно равно 1 - иначе 0 Соответственно сравнение должно выполняться только для группировки Номенклатура в детальных записях сравнение смысла не имеет |
|||
8
ЭЦ
14.08.23
✎
16:30
|
В ресурсах для поля "Ошибка" установил Вычислять по Номенклатура
|
|||
9
Donkey_hot
14.08.23
✎
16:30
|
(7) За чем же дело стало? Вычисляемое поле в ресурс, рассчитывать только по нужной группировке.
|
|||
10
ЭЦ
14.08.23
✎
16:31
|
Не помогло - вычисляет Ошибку для детальных записей
|
|||
11
Donkey_hot
14.08.23
✎
16:35
|
(10) Проще всего условным оформлением скрыть, наверное. А так - да, вычисляется по указанной группировке и подчиненным ей.
|
|||
12
ЭЦ
14.08.23
✎
16:35
|
Ресурс вычисляет СУММУ(), а само вычисляемое поле вычисляет либо 0 литбо 1. Т.е. требуется, чтоы в детальных записях вычисляемое поле не вычислялось, а вычислялось только на уровне группировки Номенклатура
|
|||
13
Donkey_hot
14.08.23
✎
16:44
|
Конкретно в Вашем случае должно работать ВЫБОР КОГДА МАКСИМУМ(НачальныйОстаток) + СУММА(Приход) - СУММА(Расход) > 0 ТОГДА 0 ИНАЧЕ 1 КОНЕЦ. Но вообще стоит задуматься о создании регистра накопления.
|
|||
14
ЭЦ
14.08.23
✎
16:54
|
(13) Это дает правильный результат на уровне группировки Номенклатура.
В детальных записях и на более верхних уровнях - не правильно |
|||
15
ЭЦ
14.08.23
✎
16:55
|
Соответственно если прописываем это в ресурсах. Вычисляемое поле использовать агрегатные функции не дает
|
|||
16
ЭЦ
14.08.23
✎
16:59
|
Для полноты картины дополним запрос
//--------------------------------------- ВЫБРАТЬ ВТ_НАЧ_ОСТАТОК.Товар.ВидТовара КАК ВидТовара, ВТ_НАЧ_ОСТАТОК.Товар, ВТ_НАЧ_ОСТАТОК.Остаток, NULL КАК ДокументДвижения, 0 КАК Приход, 0 КАК Расход ИЗ ВТ_НАЧ_ОСТАТОК ОБЪЕДИНИТЬ ВЫБРАТЬ ВТ_НАЧ_ОСТАТОК.Товар.ВидТовара КАК ВидТовара, ВТ_ДОКУМЕНТЫ.Товар 0 КАК Остаток, ВТ_ДОКУМЕНТЫ.Ссылка КАК ДокументДвижения, ВЫБОР КОГДА ВТ_ДОКУМЕНТЫ.Количество > 0 ТОГДА ВТ_ДОКУМЕНТЫ.Количество ИНАЧЕ 0 КАК Приход, ВЫБОР КОГДА ВТ_ДОКУМЕНТЫ.Количество < 0 ТОГДА -ВТ_ДОКУМЕНТЫ.Количество ИНАЧЕ 0 КАК Расход ИЗ ВТ_ДОКУМЕНТЫ //--------------------------------------- |
|||
17
ЭЦ
14.08.23
✎
17:04
|
В детальных записях вычислять ошибку вообще не надо.
На уровне номенклатура - надо вычислить ошибку А на уровне ВидНоменклатуры - надо вычислить количество ошибок |
|||
18
ЭЦ
14.08.23
✎
17:06
|
Сори вместо ВидНоменклатуры надо читать ВидТовара
|
|||
19
ЭЦ
14.08.23
✎
17:10
|
Думаю, что все это придется самому в запросе вычислять.
СКД, похоже, не потянет |
|||
20
vicof
14.08.23
✎
18:54
|
(6) Ну то есть роль Остатки тебя не прельщает?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |