Имя: Пароль:
1C
 
СКД. Как скрыть не нужные группировки.
,
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) Ну то есть роль Остатки тебя не прельщает?