Отключение колонки отчета при отсутствии данных в строках
Как программно отключить поле(Колонку) при отсутствии данных по ней в строках.
То есть имеется отчет в нем есть группировка детальных записей:
"Контрагент" | "Номенклатура" | "Размер" | "Количество"
Так вот в большинстве случаев во всех строках колонки "Размер" отсутствуют данные.
Необходимо при отсутствии данных по этой колонке отключать ее использование.
Пытался в запросе создать параметр типа булево с подсчетом количества но не могу понять как этот параметр установить из запроса.
Отчет на СКД.
Просьба условное оформление по группировке не предлагать тк не умеет СКД нулевую ширину устанавливать.
Может у кого была такая задача, тема живая и нужная давайте погутарим!
То есть имеется отчет в нем есть группировка детальных записей:
"Контрагент" | "Номенклатура" | "Размер" | "Количество"
Так вот в большинстве случаев во всех строках колонки "Размер" отсутствуют данные.
Необходимо при отсутствии данных по этой колонке отключать ее использование.
Поле.Использование = Ложь;
Иначе Поле.Использование = Истина;
Пытался в запросе создать параметр типа булево с подсчетом количества но не могу понять как этот параметр установить из запроса.
ВЫБОР
КОГДА КОЛИЧЕСТВО(ВТ_ВсеОбъекты.Размер) > 0
ТОГДА &ДаНет = ИСТИНА
ИНАЧЕ &ДаНет = Истина
КОНЕЦ КАК ДаНет
Отчет на СКД.
Просьба условное оформление по группировке не предлагать тк не умеет СКД нулевую ширину устанавливать.
Может у кого была такая задача, тема живая и нужная давайте погутарим!
По теме из базы знаний
- Права на объект (расширение, отчет)
- Обзор полезных методов БСП 3.1.4
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Мобильный помощник эксперта 1С (приложение android, позволяющее строить отчеты на СКД по логам технологического журнала и не только)
- API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3
Найденные решения
(1) параметры нельзя устанавливать из запроса. Они работают наоборот. На момент запроса параметры должны быть установлены (вместо них подставляются их значения).
Первое, что пришло в голову, это получать программно в ТЗ. Анализировать полученный ТЗ. И уже по итогу, если необходимо, скрывать колонку отчета и формировать отчет уже в табличный документ. Из минусов: двойное выполнение отчета.
Пример:
Первое, что пришло в голову, это получать программно в ТЗ. Анализировать полученный ТЗ. И уже по итогу, если необходимо, скрывать колонку отчета и формировать отчет уже в табличный документ. Из минусов: двойное выполнение отчета.
Пример:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
// 1
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТЗ = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Если ТЗ.Итог("ПолеКотороеНужноСкрыть") = 0 Тогда
ОтключаемаяКолонка = Новый ПолеКомпоновкиДанных("ПолеКотороеНужноСкрыть");
Для Каждого Колонка Из Настройки.Выбор.Элементы Цикл
Если Колонка.Поле = ОтключаемаяКолонка Тогда
Колонка.Использование = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) параметры нельзя устанавливать из запроса. Они работают наоборот. На момент запроса параметры должны быть установлены (вместо них подставляются их значения).
Первое, что пришло в голову, это получать программно в ТЗ. Анализировать полученный ТЗ. И уже по итогу, если необходимо, скрывать колонку отчета и формировать отчет уже в табличный документ. Из минусов: двойное выполнение отчета.
Пример:
Первое, что пришло в голову, это получать программно в ТЗ. Анализировать полученный ТЗ. И уже по итогу, если необходимо, скрывать колонку отчета и формировать отчет уже в табличный документ. Из минусов: двойное выполнение отчета.
Пример:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
// 1
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТЗ = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Если ТЗ.Итог("ПолеКотороеНужноСкрыть") = 0 Тогда
ОтключаемаяКолонка = Новый ПолеКомпоновкиДанных("ПолеКотороеНужноСкрыть");
Для Каждого Колонка Из Настройки.Выбор.Элементы Цикл
Если Колонка.Поле = ОтключаемаяКолонка Тогда
Колонка.Использование = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Показать
(1)
Нет, т.к. задача практически является бредом.
Пользователь сам должен решать, какие поля выводить, а какие нет - он задает структуру отчета. Ну, а если так сильно хочется, то решается она с помощью программного вывода. Есть куча примеров.
Может у кого была такая задача, тема живая и нужная давайте погутарим!
Нет, т.к. задача практически является бредом.
Пользователь сам должен решать, какие поля выводить, а какие нет - он задает структуру отчета. Ну, а если так сильно хочется, то решается она с помощью программного вывода. Есть куча примеров.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот