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

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


Туда же но программно....
5. toypaul 63 18.02.21 14:57 Сейчас в теме
Надо всю иерархию что ли было скрыть? Почему в группировке тогда не поставить было просто "Без иерархии". И не надо мудрить с высотой строки и т.п.
6. AnryMc 842 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 842 19.02.21 05:34 Сейчас в теме
(8)
в параметрах укажите выражение


В каком? Какое?
Оставьте свое сообщение
Вакансии
Программист/тестировщик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий консультант 1С:ERP
Москва
зарплата от 200 000 руб.
Полный день