- Отображение заголовков, параметров данных и отборов в системе компоновки данных
- АйТиБложик
- Настройка шапки отчета в СКД
- 1. Настройка заголовков на вкладке СКД «Наборы данных»
- 2. Настройка заголовков полей на вкладке СКД «Настройки»
- 3. Программная установка заголовков полей
- 4. Задание шапки отчета с помощью макета
- 5. Доработка результата (табличного документа)
Отображение заголовков, параметров данных и отборов в системе компоновки данных
Система компоновки данных предоставляет широкие возможности по управлению отображением заголовков, параметров данных и отборов. Для управления отображением заголовков, параметров данных и отборов используются настройки компоновки данных. При использовании конструктора схемы компоновки данных необходимо перейти на вкладку Настройки , а затем выбрать вкладку Другие настройки . На данной вкладке находятся параметры Выводить заголовок , Заголовок , Выводить параметры данных и Выводить отбор позволяющие управлять отображением заголовков, параметров данных и отборов в отчете.
Заголовком в системе компоновки данных является текст, выводимый в начале отчета или группировки. Заголовок может задаваться для отчета в целом, таблицы, диаграммы, а так же для отдельных группировок.
Для управления отображением заголовков используются следующие параметры :
- Выводить заголовок — управление отображением заголовка. Существуют следующие варианты отображения заголовка :
- Авто — отображение заголовка определяется автоматически. Если в заголовке указан текст, то текст заголовок отображается, иначе нет ;
- Не выводить — заголовок не отображается ;
- Выводить — заголовок отображается всегда.
- Заголовок — текст заголовка
Параметры данных отображаются только в начале отчета.
Для управления отображением значений параметров данных используется параметр Выводить параметры данных .
- Авто — отображение параметров данных определяется автоматически. Если параметры данных указаны, то отображается текст вида » Параметры данных : параметр1 > = значение1 >» , иначе параметры данных не отображаются ;
- Не выводить — параметры данных не отображаются ;
- Выводить — параметры данных отображаются всегда. Если параметры данных не указаны, то отображается только текст вида » Параметры данных : » .
Отбор может отображаться как для отчета, таблицы или диаграммы, так и для отдельных группировок.
Для управления отображением отбора используется параметр Выводить отбор .
- Авто — отображение отбора определяется автоматически. Если отбор установлен, то отображается текст вида » Отбор : текст отбора >» , иначе отбор не отображается ;
- Не выводить — отбор не отображается ;
- Выводить — отбор отображается всегда. Если отбор не установлен, то отображается только текст вида » Отбор : » .
Источник
АйТиБложик
Маленький IT блог с характером 1С.
Настройка шапки отчета в СКД
- Получить ссылку
- Электронная почта
- Другие приложения
Создадим внешний отчет, который будет выводить отчетную информацию об остатках номенклатуры и её обороте. Требуемая информация запрашивается запросом с помощью набор данных типа «Запрос», который содержит текст запроса:
ВЫБРАТЬ
_ДемоНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ АктуальнаяНоменклатура
ИЗ
Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
НЕ _ДемоНоменклатура.ПометкаУдаления
И НЕ _ДемоНоменклатура.ЭтоГруппа
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
АктуальнаяНоменклатура.Номенклатура,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.МестоХранения,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоНачальныйОстаток,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоКонечныйОстаток,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоПриход,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоРасход,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоОборот
ИЗ
АктуальнаяНоменклатура КАК АктуальнаяНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._ДемоОстаткиТоваровВМестахХранения.ОстаткиИОбороты КАК _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты
ПО АктуальнаяНоменклатура.Номенклатура = _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Номенклатура
В итоге отчет содержит следующие поля (см. рисунок 1):
Рисунок 1. Поля отчета |
Так как информация берется из виртуальной таблицы «ОстаткиИОбороты», то СКД автоматически создает два параметра данных НачалоПериода и КонецПериода, которые необходимы для задания пределов периода выборки данных. Я предпочитаю с такими параметрами не работать напрямую, а задавать их значения через другой параметр, который будет доступен пользователю для редактирования (см. рисунок 2).
Рисунок 2. Параметры данных |
Структура отчета выводит детальные записи, результат работы отчета см. на рисунке 3.
Рисунок 3. Результат отчета |
Отчет со своей задачей справляется, но шапка отчета довольно сухая. За время работы, я нашел несколько способов оформления шапки отчета:
- Настройка заголовков полей на вкладке СКД «Наборы данных»;
- Настройка заголовков полей на вкладке СКД «Настройки»;
- Программная установка заголовков полей;
- Задание шапки отчета с помощью макета;
- Доработка результата (табличного документа);
Рассмотрим их подробно.
1. Настройка заголовков на вкладке СКД «Наборы данных»
Здесь все просто, ставим галочку напротив свойства поля «Заголовок» (т.е. отменяем автозаголовок) и вводим необходимый текст заголовка (см. рисунок 4).
Рисунок 4. Изменения названия заголовка в наборе данных |
Если требуется задать оформление для всего поля, а не только для его заголовка, то существует свойство поля «Оформление», с помощью которого можно задать некое оформление поля, например, изменить шрифт или задать цвет фона (см. рисунок 5).
Рисунок 5. Оформление полей в наборе данных |
На этом мои знания про вкладку «Наборы данных» заканчиваются.
2. Настройка заголовков полей на вкладке СКД «Настройки»
Для задания заголовка поля, необходимо выделить нужное поле, правой кнопкой мыши вызвать контекстное меню и выбрать пункт «Установить заголовок» (см. рисунок 6)
Рисунок 6. Установка заголовков полей в настройках отчета |
Что бы сгруппировать поля (например, по типу информации), нужно добавить группировочное поле и поместить в него требуемые поля (см. рисунок 7), вложенность неограниченная.
Рисунок 7. Группировка полей в настройках отчета |
Так же можно поиграться со свойством группировочного поля «Расположение», от которого зависит вид группировки полей.
Данные действия можно производить и в режиме 1С:Предприятия, открыв настройки отчета, НО, в состав настроек отчета должен быть включен пункт «Выбранные поля» (см. рисунок 8).
Рисунок 8. Расширение настроек отчета |
После всех проделанных операций внешний вид отчета изменился следующим образом (см. рисунок 9):
Рисунок 9. Внешний вид отчета после настройки СКД |
На этом легкая часть по настройке шапки отчета закончена. Из плюсов выше перечисленных действий: вся настройка выполняется стандартными средствами. Из минусов: отсутствие возможности задания многострочного заголовка поля.
3. Программная установка заголовков полей
Платформа позволяет программно устанавливать заголовки полей, более того, устанавливать многострочные, что в свою очередь дает возможность гибко и динамически задавать заголовки полей при формировании отчета.
Для этого в модуле отчета определим процедуру ПриКомпоновкеРезультата. В этой процедуре напишем код по заданию заголовка полей.
// 1. Получаем пользовательские настройки.
НастройкиКД = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
// 2. Получаем значение параметра «Период» из которого определяем дату начала и окончания периода.
ПараметрПериод = Новый ПараметрКомпоновкиДанных(«Период»);
Период = НастройкиКД.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрПериод).Значение;
НачалоПериода = Период.ДатаНачала;
КонецПериода = Период.ДатаОкончания;
// 3. Подготовим информацию о переопределении заголовка полей. Для этого, создадим
// массив, который будет содержать информацию: ИмяПоля — значения свойства «Путь» в
// наборе данных (см. рисунок 1), Заголовок — текст заголовка.
СписокПолей = Новый Массив;
стрНачалоПериода = Формат(НачалоПериода, «ДФ=dd.MM.yyyy; ДП=’Пустая дата'»);
ПолеНачальныйОстаток = Новый Структура(«ИмяПоля, Заголовок», «КоличествоНачальныйОстаток», «Остаток на » + Символы.ПС + стрНачалоПериода);
СписокПолей.Добавить(ПолеНачальныйОстаток);
стрКонецПериода = Формат(КонецПериода, «ДФ=dd.MM.yyyy; ДП=’Пустая дата'»);
ПолеКонечныйОстаток = Новый Структура(«ИмяПоля, Заголовок», «КоличествоКонечныйОстаток», «Остаток на » + Символы.ПС + стрКонецПериода);
СписокПолей.Добавить(ПолеКонечныйОстаток);
// 4. Получим список полей, который находятся в группировке «Остатки» (см. рисунок 7) и
// зададим новый заголовок, обойдя элементы в цикле.
ВыбранныеПоля = НастройкиКД.Выбор.Элементы; // Первый уровень полей.
ВыбранныеПоляОстатки = ВыбранныеПоля[6].Элементы; // Поля группировки остатки.
Для каждого ВыбранноеПоле Из ВыбранныеПоляОстатки Цикл
Для Каждого ЭлементМассива Из СписокПолей Цикл
ПолеКомпоновки = Новый ПолеКомпоновкиДанных(ЭлементМассива.ИмяПоля);
Если ВыбранноеПоле.Поле = ПолеКомпоновки Тогда
ВыбранноеПоле.Заголовок = ЭлементМассива.Заголовок;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// 5. Загрузим измененный пользовательские настройки обратно.
ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);
Результат отчета (см. рисунок 10):
Рисунок 10. Многострочный текст заголовка |
Способ потяжелее, чем все выше перечисленные, но мне нравится.
4. Задание шапки отчета с помощью макета
Для более гибкой настройки внешнего вида отчета в СКД предусмотрено создание макетов. В настройках отчета создадим еще одну группировку «детальные записи» и установим имя «СтрокаДЗ» для этой группировки (см. рисунок 11).
Рисунок 11. Установка имени для группировки |
На вкладке «Макеты» добавим макет заголовка группировки. Для макета в табличном документе создадим шапку отчета (шапка отчета должна содержать столько заголовков полей, сколько выводит полей детальная запись) и укажем область табличного документа для макета (см. рисунок 12).
Рисунок 12. Маке заголовка группировки |
В итоге отчет имеет следующего вида шапку(см. рисунок 13):
Рисунок 13. Макет СКД в качестве шапки отчета |
По моему мнению, макеты имеют один большой минус, это невозможность перестраиваться под заданную пользовательскую группировку, поэтому их следует использовать в том случае, если отчетная форма регламентированная и не может быть изменена. Попробуйте задать группировку для группировки «СтрокаДЗ» и увидите, что макет сбился.
На сайте информационно-технологического сопровождения приведена статья Использование предопределенных макетов, которая подробно описывает приемы использования макетов в СКД.
5. Доработка результата (табличного документа)
В этом способе используется замечательный метод табличного документа НайтиТекст(), но для применения данного способа требуется отключение стандартной обработки формирования результата отчета.
Приступим. Отключаем стандартное формирование, для этого в модуле отчета для события ПриКомпоновкеРезультата установим переменную СтандартнаяОбработка в значение Ложь и напишем собственную компоновку результата:
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
ЭтотОбъект.СхемаКомпоновкиДанных,
ЭтотОбъект.КомпоновщикНастроек.Настройки,
ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Более подробно программная компоновка результата отчета описана в статье СКД. Программная компоновка результата.
Скомпонованный результат выводится в табличный документ — это переменная ДокументРезультат. Далее, после формирования результата и вывода его в табличный документ пишем код для замены одного текста ячейки на другой. Например, изменим в шапке отчета название группировки «Остатки» на «Остатки номенклатуры» (см. рисунок 14):
Ячейка = ДокументРезультат.НайтиТекст(«Остатки»);
Если Ячейка <> Неопределено Тогда
Ячейка.Текст = «Остатки номенклатуры»;
КонецЕсли;
Рисунок 14. Изменение табличного документа |
Так же для найденной ячейки можно задать форматирование, см. свойства ячейки табличного документа в синтакс-помощнике.
Данный способ я обнаружил для себя недавно, он прост и позволяет очень гибко работать с шапкой отчета, главное, что бы текст ячейки имел уникальный текст.
Источник