Как не выводить некоторые строки группировки в отчете на СКД?

1. AnryMc 849 18.02.21 10:52 Сейчас в теме
Дано:
В бухгалтерских отчётах (например - "Анализ субконто") есть "галочка" - "по субсчетам".
Если её ("по субсчетам") установить, то отчёт на СКД выводит всю иерархию от класса счета до конкретного счета остатка (оборота).
Если субсчетов много - то повторяется много "одинаковых" строк.

ВОПРОС: Можно ли выводить только конкретный субсчет остатка/оборота (без всей вышестоящей иерархии)?

ПОДВОПРОСЫ:

1) Можно ли этого добиться настройками у пользователя?
2) Как этого можно добиться "минимальным" вмешательством в код отчета

На приведенном рисунке: красным - что я хочу "удалить", зеленым - что оставить

З.Ы. В коде отчета "модуль менеджера" единственное упоминание реквизита (параметра СКД) "ПоСубсчетам"
Процедура ПередКомпоновкойМакета(ПараметрыОтчета, Схема, КомпоновщикНастроек) Экспорт
//.............
	Если Не ПараметрыОтчета.ПоСубсчетам Тогда
		ЗначениеОтбора = БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(Структура.Отбор, "SystemFields.LevelInGroup", КоличествоУровнейСчет, ВидСравненияКомпоновкиДанных.МеньшеИлиРавно);
		ЗначениеОтбора.Применение = ТипПримененияОтбораКомпоновкиДанных.Иерархия;
		БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметрВывода(Структура, "ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
	КонецЕсли;


P.S.S. У счетов есть реквизит "ЗапретитьИспользоватьВПроводках" в отчете должны показываться только счета со значением "ЛОЖЬ"
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. toypaul 63 18.02.21 12:22 Сейчас в теме
"без всей вышестоящей иерархии" - разбирали в этом курсе https://learn.programstore.ru/skd2-intensiv в блоке №3

делается через собственную иерархию. это если я правильно вник в задачу
3. finik1 18.02.21 13:49 Сейчас в теме +1 $m
Можно выкрутиться и на пользовательских настройках, через условное оформление.

Добавляете элемент условного оформления, в оформлении указываете максимальную высоту = 1. Оформляемые поля: счет и показатель. Использовать: в иерархической группировке.

Иерархия счетов после этого скрывается. Группировка по счетам остается (см скриншот Результат)

Конечно не идеальный вариант, но максимально дешевый и для его получения совсем не нужен программист.
Прикрепленные файлы:
4. AnryMc 849 18.02.21 14:37 Сейчас в теме
(3) Спасибо, а то я уже
	ТабШирина = Результат.ШиринаТаблицы; //8
	ТабВысота = Результат.ВысотаТаблицы; //223
	
	Для текСтрока = 1 По ТабВысота Цикл
		
		текИмя = "R"+текСтрока+"C1:R"+текСтрока+"C1";
		
		текТекст = Результат.Область(текИмя).Текст;
		
		Если НЕ ВидимостСтроки(СокрЛП(текТекст)) Тогда
				
			Результат.Область(текСтрока,,текСтрока,).АвтоВысотаСтроки = ЛОЖЬ;	
			Результат.Область(текСтрока,,текСтрока,).ВысотаСтроки = 1;
			
		КонецЕсли;
			
		КонецЦикла;
Показать


Туда же но программно....
5. toypaul 63 18.02.21 14:57 Сейчас в теме
Надо всю иерархию что ли было скрыть? Почему в группировке тогда не поставить было просто "Без иерархии". И не надо мудрить с высотой строки и т.п.
6. AnryMc 849 18.02.21 15:08 Сейчас в теме
(5)
Надо всю иерархию что ли было скрыть Почему в группировке тогда не поставить было просто "


В настройках отчета "Анализ субконто" (У пользователя) в группе "Группировка" нет возможности выбрать "Счет".
7. SlavaKron 18.02.21 16:06 Сейчас в теме +1 $m
(6) В общем-то (5) прав, да вы и сами уже даже нашли куда надо было подписаться. Достаточно изменить тип соответствующей группировки. У меня получилось сделать в расширении после ПередКомпоновкойМакета:
&После("ПередКомпоновкойМакета")
Процедура Расш1_ПередКомпоновкойМакета(ПараметрыОтчета, Схема, КомпоновщикНастроек)
	Поле = Новый ПолеКомпоновкиДанных("Счет");
	ПолеГруппировкиСчет = НайтиПолеГруппировкиРекурсивно(КомпоновщикНастроек.Настройки.Структура, Поле);
	Если ПолеГруппировкиСчет <> Неопределено Тогда
		ПолеГруппировкиСчет.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
	КонецЕсли;	
КонецПроцедуры

Функция НайтиПолеГруппировкиРекурсивно(Структура, Поле)
	
	Для Каждого ЭлементСтруктуры Из Структура Цикл
		Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда
			Для Каждого ПолеГруппировки Из ЭлементСтруктуры.ПоляГруппировки.Элементы Цикл
				Если ТипЗнч(ПолеГруппировки) = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
					Если ПолеГруппировки.Поле = Поле Тогда
						Возврат ПолеГруппировки;
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
			НайденноеПоле = НайтиПолеГруппировкиРекурсивно(ЭлементСтруктуры.Структура, Поле);
			Если НайденноеПоле <> Неопределено Тогда
				Возврат НайденноеПоле;
			КонецЕсли;
		КонецЕсли;		
	КонецЦикла;
	
	Возврат Неопределено;
	
КонецФункции
Показать
Прикрепленные файлы:
8. meriferi 18.02.21 19:18 Сейчас в теме
в параметрах укажите выражение
9. AnryMc 849 19.02.21 05:34 Сейчас в теме
(8)
в параметрах укажите выражение


В каком? Какое?
Оставьте свое сообщение

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