Меню Закрыть

1С скд макет шапки отчета

Содержание

Маленький IT блог с характером 1С.

Страницы

Поиск по блогу

вторник, 8 марта 2016 г.

Настройка шапки отчета в СКД

Создадим внешний отчет, который будет выводить отчетную информацию об остатках номенклатуры и её обороте. Требуемая информация запрашивается запросом с помощью набор данных типа "Запрос", который содержит текст запроса:
ВЫБРАТЬ
_ДемоНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ АктуальнаяНоменклатура
ИЗ
Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
НЕ _ДемоНоменклатура.ПометкаУдаления
И НЕ _ДемоНоменклатура.ЭтоГруппа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
АктуальнаяНоменклатура.Номенклатура,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.МестоХранения,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоНачальныйОстаток,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоКонечныйОстаток,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоПриход,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоРасход,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоОборот
ИЗ
АктуальнаяНоменклатура КАК АктуальнаяНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._ДемоОстаткиТоваровВМестахХранения.ОстаткиИОбороты КАК _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты
ПО АктуальнаяНоменклатура.Номенклатура = _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Номенклатура

В итоге отчет содержит следующие поля (см. рисунок 1):

Рисунок 1. Поля отчета

Так как информация берется из виртуальной таблицы "ОстаткиИОбороты", то СКД автоматически создает два параметра данных НачалоПериода и КонецПериода, которые необходимы для задания пределов периода выборки данных. Я предпочитаю с такими параметрами не работать напрямую, а задавать их значения через другой параметр, который будет доступен пользователю для редактирования (см. рисунок 2).

Рисунок 2. Параметры данных

Структура отчета выводит детальные записи, результат работы отчета см. на рисунке 3.

Рисунок 3. Результат отчета

Отчет со своей задачей справляется, но шапка отчета довольно сухая. За время работы, я нашел несколько способов оформления шапки отчета:

  1. Настройка заголовков полей на вкладке СКД "Наборы данных";
  2. Настройка заголовков полей на вкладке СКД "Настройки";
  3. Программная установка заголовков полей;
  4. Задание шапки отчета с помощью макета;
  5. Доработка результата (табличного документа);

Рассмотрим их подробно.

1. Настройка заголовков на вкладке СКД "Наборы данных"

Здесь все просто, ставим галочку напротив свойства поля "Заголовок" (т.е. отменяем автозаголовок) и вводим необходимый текст заголовка (см. рисунок 4).

Рисунок 4. Изменения названия заголовка в наборе данных

Если требуется задать оформление для всего поля, а не только для его заголовка, то существует свойство поля "Оформление", с помощью которого можно задать некое оформление поля, например, изменить шрифт или задать цвет фона (см. рисунок 5).

Рисунок 5. Оформление полей в наборе данных

На этом мои знания про вкладку "Наборы данных" заканчиваются.

2. Настройка заголовков полей на вкладке СКД "Настройки"

Для задания заголовка поля, необходимо выделить нужное поле, правой кнопкой мыши вызвать контекстное меню и выбрать пункт "Установить заголовок" (см. рисунок 6)

Рисунок 6. Установка заголовков полей в настройках отчета

Что бы сгруппировать поля (например, по типу информации), нужно добавить группировочное поле и поместить в него требуемые поля (см. рисунок 7), вложенность неограниченная.

Рисунок 7. Группировка полей в настройках отчета

Так же можно поиграться со свойством группировочного поля "Расположение", от которого зависит вид группировки полей.

Данные действия можно производить и в режиме 1С:Предприятия, открыв настройки отчета, НО, в состав настроек отчета должен быть включен пункт "Выбранные поля" (см. рисунок 8).

Рисунок 8. Расширение настроек отчета

После всех проделанных операций внешний вид отчета изменился следующим образом (см. рисунок 9):

Рисунок 9. Внешний вид отчета после настройки СКД

На этом легкая часть по настройке шапки отчета закончена. Из плюсов выше перечисленных действий: вся настройка выполняется стандартными средствами. Из минусов: отсутствие возможности задания многострочного заголовка поля.

Читайте также:  Asus engt430 di 1gd3 lp

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. Доработка результата (табличного документа)

В этом способе используется замечательный метод табличного документа НайтиТекст(), но для применения данного способа требуется отключение стандартной обработки формирования результата отчета.

Приступим. Отключаем стандартное формирование, для этого в модуле отчета для события ПриКомпоновкеРезультата установим переменную СтандартнаяОбработка в значение Ложь и напишем собственную компоновку результата:
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
ЭтотОбъект.СхемаКомпоновкиДанных,
ЭтотОбъект.КомпоновщикНастроек.Настройки,
ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Более подробно программная компоновка результата отчета описана в статье СКД. Программная компоновка результата.

Читайте также:  Фотон 9 ио 409 8 схема подключения

Скомпонованный результат выводится в табличный документ — это переменная ДокументРезультат. Далее, после формирования результата и вывода его в табличный документ пишем код для замены одного текста ячейки на другой. Например, изменим в шапке отчета название группировки "Остатки" на "Остатки номенклатуры" (см. рисунок 14):
Ячейка = ДокументРезультат.НайтиТекст("Остатки");
Если Ячейка <> Неопределено Тогда
Ячейка.Текст = "Остатки номенклатуры";
КонецЕсли;

Рисунок 14. Изменение табличного документа

Так же для найденной ячейки можно задать форматирование, см. свойства ячейки табличного документа в синтакс-помощнике.

Данный способ я обнаружил для себя недавно, он прост и позволяет очень гибко работать с шапкой отчета, главное, что бы текст ячейки имел уникальный текст.

1. Произвольная шапка отчета

В этой статье я хочу рассказать о том, как в СКД сформировать произвольную шапку отчета.
Задача кажется простой, но на самом деле есть в этом деле тонкости, разбираясь в которых можно потратить драгоценное время.

Начну с того, что пример буду приводить на конкретной «хотелке» заказчика.
Есть отчет, который выводит информацию о продажах и остатках. Отчет рассчитывает динамику продаж и на ее основании показывает необходимое к заказу количество. И отталкиваясь от той же динамики, рассчитывает излишек товара на складе. Но это все «присказка», а вот как выглядит шапка в отчете изначально:

Требования заказчика проекта – «навести красоту» и добавить информативности:

— ячейки «Средняя продажа» и «Требуемый запас» объединить с ячейками выше;
— над ячейками «Количество», «Вес кг», «Количество (ящ)» написать «Рекомендуемый заказ»;
— ячейки «Излишек Заданный», «Средняя продажа», «Требуемый запас» сделать динамически формируемыми, чтобы в зависимости от заданных параметров они меняли значение заголовка;
— также после колонки «Номенклатура» имеются колонки с данными о продаж за 4 предыдущих периода, в шапке каждой такой колонки должны выводится даты в зависимости от выбранного периода. Но это, по сути, та же задача, что и предыдущая: нужно выводить название колонки в зависимости от выбранных параметров.

Для наглядности, вот как выглядят параметры отчета 1С:

Начнем преображение.
Для начала в настройках нужно установить имена для наших группировок.

После этого переходим на вкладку «Макет». Начинаем с колонки «Средняя продажа». В настройках у нее задано имя СредняяПродажа10.
Добавляем макет группировки.

В настройках макета группировки указываем наше имя группировки и тип макета «Заголовок».

Первое. Для того чтобы поле с названием занимало две ячейки, в макете необходимо выделить именно две строки под область.

Чтобы заголовок мог менять название, задаем в свойствах ячейки вариант заполнения «Шаблон».

И конечно же, в тексте должен быть указан параметр в квадратных скобках. В примере он – «КолДнейПродаж».

Теперь в параметрах мы просто задаем выражение (это параметр отчета).

Что мы имеем в итоге? При изменении параметра «Количество дней продаж» колонка будет менять свое название. И к тому же будет занимать две ячейки, гармонично вписываясь к остальным.

Аналогичный подход мы применяем к колонкам «Интервал, Требуемый запас». Вот уже и полдела сделано! Вот как выглядят наши колонки после изменения (параметры указаны в начале статьи).

Читайте также:  Веб камера для наружного наблюдения

2. Создание макета поля 1С

Теперь о колонке «Излишек заданный». В 1С настройках СКД указана группировка по полю «ДопПолеЗаданный». В эту группировку выводятся ресурсы «Количество, Сумма». Дополнительное поле было создано в вычисляемых полях как раз с целью группировки ресурсов с заголовком над ними.

В таком случае мы уже можем задать этой группировке произвольный заголовок.
Но на этот раз мы создаем макет поля 1С.

Указываем наше поле.

Далее действуем по предыдущему примеру. В свойствах области указываем тип заполнения «Шаблон». В области макета пишем «нужные слова».

И в параметрах указываем выражение для заполнения параметра шаблона.

После применения вышеописанных действий шапка отчета преобразилась:

После всех этих манипуляций я с грустью вспоминаю работу с обычным макетом. СКД отчет в 1С 8.3 добавляет много возможностей и простоты методов составления отчетов, но в то же время заставляет пополнять багаж знаний незнакомым и иногда редким в использовании функционалом 1С. Таким, например, как произвольный макет.

Статьи

1С 8.2. Произвольные макеты в СКД (Система компоновки данных). Не стандартная «Шапка» и «Подвал».

Автор: программист Суровцев Василий

Данная статья будет полезна тем программистам, которые уже разрабатывали отчеты на системе компоновки данных, но не пользовались встроенным механизмом задания макетов.

При разработке отчетов иногда необходимо использовать не стандартный заголовок, или нужно добавить подписи. В статье рассмотрено два варианта:

  1. Встроенный механизм задания макетов непосредственно в СКД
  2. 2. Дополнение результата СКД в коде, с помощью обычных макетов.

Предположим, у нас уже есть отчет на компоновке данных, который выглядит следующим образом.

Нам необходимо добавить заголовок и подпись, чтобы отчет выглядел так:

Вариант 1. Можно воспользоваться механизмом разработки макетов непосредственно в СКД.

Сначала нам нужно добавить группировки и задать им имена в дереве группировок. Добавим одну группировку перед основной группировкой отчёта, и установим ей имя «Шапка». Вторую группировку добавим в конец, и зададим ей имя «Подвал».

Далее, на вкладке макеты необходимо добавить два макета группировки и задать для них области. Если области достаточно сложные (например, часть ячеек объединены в одну), то их можно сделать в обычном макете и перенести сюда с помощью механизма «копировать, вставить». Здесь же, можно передать параметры.

На вкладке настройки для группировок «Шапка» и «Подвал» нужно отключить «основной» макет оформления, выбрав значение «без оформления». Если этого не сделать, то ячейки наших группировок будут в рамочке.

Так же для наших группировок необходимо отключить выбранные поля.

Примечание. Подобный вариант отчета, возможно разработать использую только СКД. Такой отчет будет работать как на обычном приложении, так и на управляемом.

Вариант 2. C использованием результата СКД и обычных макетов (рассмотрен вариант для обычного приложения)

Добавим в отчет обычный макет.

Зададим в нём области «Шапка и Подвал».

В модуле формы добавим код для кнопки «Сформировать», в котором сначала выведем область «Шапка», потом результат компоновки данных, затем область «Подвал».

Примечание. Для того чтобы отчет работал в управляемых приложениях необходимо модифицировать процедуру для кнопки «сформировать».

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.