Система компоновки данных. Убрать самый верхний уровень группировки.

1. Mnemonik 10.08.11 11:50 Сейчас в теме
Здравствуйте! Как убрать из отчета ненужную строку?
Более подробно, в схеме есть группировка - таблица, строки таблицы это элементы справочника с иерархией. Т.е. все выводится как надо, но есть нюанс выводится самый верхний элемент из иерархического справочника и всё правильно ведь группировка строк с иерархией. Но в данном случае этот элемент не нужен в отчете так как смысловая нагрузка на этот элемент справочника только с технической стороны, а вот для пользователя он не нужен тем более ещё и итоговые суммы по этому элементу. Через отбор не получается. Как сделать подскажите? Если только программно, то как?


Платформа 8.2.13.205
Отчет вшит в конфигурацию форма управляемая. Основной режим запуска базы обычное приложение.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Octopus 339 10.08.11 12:34 Сейчас в теме
В пользовательстком режиме в настройке компоновки группировка не убирается?
3. Mnemonik 10.08.11 12:51 Сейчас в теме
Убирается почему же нет, но её убирать не надо, надо сделать чтоб из этой группировки не выводилась одна строка (элемент справочника самого верхнего уровня), а все остальные выводились с иерархией.
4. Mnemonik 10.08.11 14:14 Сейчас в теме
Вот картинка печатной формы отчета. Красной стрелкой выделил какую строку убрать.
Прикрепленные файлы:
5. kip989 10.04.13 20:50 Сейчас в теме
6. StreamLVM 209 02.08.13 14:45 Сейчас в теме
Я победил, хоть и не совсем красиво:

Процедура ПринятьНастройки()
Если КомпоновщикНастроек.Настройки.Структура.Количество() > 0 Тогда
Для каждого текГруппировка из КомпоновщикНастроек.Настройки.Структура[0].Строки Цикл
ПроверитьГруппировкуНастройки(текГруппировка,мУровень);
КонецЦикла;
КонецЕсли;
КонецПроцедуры

Процедура ПроверитьГруппировкуНастройки(текПолеГруппировки,мУровень)

Для каждого ЭлементГруппировки из текПолеГруппировки.ПоляГруппировки.Элементы Цикл
Если ЭлементГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия ИЛИ
ЭлементГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.ТолькоИерархия Тогда
Если Строка(ЭлементГруппировки.Поле) = "Контрагент" Тогда
мУсловноеОформление = текПолеГруппировки.УсловноеОформление;
мУсловноеОформление.Элементы.Очистить();
Если мУровень > 0 Тогда
ЭлементУсловногоОформления = мУсловноеОформление.Элементы.Добавить();
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СистемныеПоля.УровеньВГруппировке");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ЭлементОтбора.ПравоеЗначение = мУровень;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("МаксимальнаяВысота", 1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если текПолеГруппировки.Структура.Количество() > 0 Тогда
ПроверитьГруппировкуНастройки(текПолеГруппировки.Структура[0],мУровень);
КонецЕсли;

КонецПроцедуры
Показать

мУровень - Нужный уровень по какой обрезаем
У меня это для группировки контрагента, но Вы можете сделать для любой
7. -FeNiX- 03.09.13 15:52 Сейчас в теме
Не очень понимаю данный код.
Не могли бы показать, как это сделать ручными настройками для какой-то определенной группы справочника?
9. Bas_ERP_UX 01.12.21 12:43 Сейчас в теме
Найдено следующее решение.
Алгоритм:
- Результат выполнения СКД схемы выведен в Табличный Документ;
- Определяем Область группировки верхнего уровня (с начала и до конца отчета - то что охвачено "+");
- Снимаем группировку на области в отчете, применяем метод

ОбластьЯчеекТабличногоДокумента.Разгруппировать (SpreadsheetDocumentRange.Ungroup)
Разгруппировать (Ungroup)
Доступен, начиная с версии 8.0.

Область.Разгруппировать();

- Удаляем ненужную строку, берем область по одной строке с наименованием нам не нужной группировки и применяем следующий метод

ТабличныйДокумент.УдалитьОбласть (SpreadsheetDocument.DeleteArea)
УдалитьОбласть (DeleteArea)
Доступен, начиная с версии 8.0.
Синтаксис:
УдалитьОбласть(<ИсходнаяОбласть>, <Сдвиг>)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот