Скрыть строки со скрытыми колонками-ресурсами СКД
На примере самого простого отчета:
Набор данных - запрос на регистр оборотов. Пытаемся получить количество прихода номенклатуры. По номенклатуре есть приход, но в настройках отчета колонку "Приход" мы скрыли, в итоге выводится просто номенклатура. Есть возможность как-то скрыть такую номенклатуру, по которой как будто бы нет ресурса?
На примере другого отчета, зачем это нужно:
Есть 2 набора с количеством прихода и расхода. По одной номенклатуре есть лишь расход, но колонку с расходом мы скрыли, чтобы увидеть лишь приход номенклатуры. В итоге в отчет попадает куча строк, где нет прихода.
Набор данных - запрос на регистр оборотов. Пытаемся получить количество прихода номенклатуры. По номенклатуре есть приход, но в настройках отчета колонку "Приход" мы скрыли, в итоге выводится просто номенклатура. Есть возможность как-то скрыть такую номенклатуру, по которой как будто бы нет ресурса?
На примере другого отчета, зачем это нужно:
Есть 2 набора с количеством прихода и расхода. По одной номенклатуре есть лишь расход, но колонку с расходом мы скрыли, чтобы увидеть лишь приход номенклатуры. В итоге в отчет попадает куча строк, где нет прихода.
Найденные решения
(3) Попробовал. Так-то работает вроде как. Разумеется, структура/настройки у отчёта могут быть совершенно разные.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
ПоляКД = Новый Массив();
Для Каждого ВыбранноеПолеКД Из НастройкиКомпоновкиДанных.Выбор.Элементы Цикл
Если Не ВыбранноеПолеКД.Использование Тогда
ПоляКД.Добавить(ВыбранноеПолеКД.Поле);
КонецЕсли;
КонецЦикла;
ГруппировкаКомпоновкиДанных = НайтиГруппировку(НастройкиКомпоновкиДанных.Структура, Новый ПолеКомпоновкиДанных("Номенклатура"));
Если ГруппировкаКомпоновкиДанных <> Неопределено Тогда
Для Каждого ПолеКД Из ПоляКД Цикл
Элемент = ГруппировкаКомпоновкиДанных.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент.ЛевоеЗначение = ПолеКД;
Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
Элемент.ПравоеЗначение = 0;
КонецЦикла;
ЗначениеПараметра = ГруппировкаКомпоновкиДанных.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
ЗначениеПараметра.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
ЗначениеПараметра.Использование = Истина;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных, ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных();
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент();
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Функция НайтиГруппировку(Коллекция, ПолеКД)
Для Каждого ГруппировкаКомпоновкиДанных Из Коллекция Цикл
Для Каждого ПолеГруппировки Из ГруппировкаКомпоновкиДанных.ПоляГруппировки.Элементы Цикл
Если ПолеГруппировки.Поле = ПолеКД Тогда
Возврат ГруппировкаКомпоновкиДанных;
КонецЕсли;
КонецЦикла;
ГруппировкаКомпоновкиДанных = НайтиГруппировку(ГруппировкаКомпоновкиДанных.Структура, ПолеКД);
Если ГруппировкаКомпоновкиДанных <> Неопределено Тогда
Возврат ГруппировкаКомпоновкиДанных;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Попробовал. Так-то работает вроде как. Разумеется, структура/настройки у отчёта могут быть совершенно разные.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
ПоляКД = Новый Массив();
Для Каждого ВыбранноеПолеКД Из НастройкиКомпоновкиДанных.Выбор.Элементы Цикл
Если Не ВыбранноеПолеКД.Использование Тогда
ПоляКД.Добавить(ВыбранноеПолеКД.Поле);
КонецЕсли;
КонецЦикла;
ГруппировкаКомпоновкиДанных = НайтиГруппировку(НастройкиКомпоновкиДанных.Структура, Новый ПолеКомпоновкиДанных("Номенклатура"));
Если ГруппировкаКомпоновкиДанных <> Неопределено Тогда
Для Каждого ПолеКД Из ПоляКД Цикл
Элемент = ГруппировкаКомпоновкиДанных.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент.ЛевоеЗначение = ПолеКД;
Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
Элемент.ПравоеЗначение = 0;
КонецЦикла;
ЗначениеПараметра = ГруппировкаКомпоновкиДанных.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
ЗначениеПараметра.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
ЗначениеПараметра.Использование = Истина;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных, ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных();
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент();
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Функция НайтиГруппировку(Коллекция, ПолеКД)
Для Каждого ГруппировкаКомпоновкиДанных Из Коллекция Цикл
Для Каждого ПолеГруппировки Из ГруппировкаКомпоновкиДанных.ПоляГруппировки.Элементы Цикл
Если ПолеГруппировки.Поле = ПолеКД Тогда
Возврат ГруппировкаКомпоновкиДанных;
КонецЕсли;
КонецЦикла;
ГруппировкаКомпоновкиДанных = НайтиГруппировку(ГруппировкаКомпоновкиДанных.Структура, ПолеКД);
Если ГруппировкаКомпоновкиДанных <> Неопределено Тогда
Возврат ГруппировкаКомпоновкиДанных;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот