1с скд заголовок отчета с параметрами
Заголовок с параметром в отчете СКД
В отчётах к заданиям для 1С: Специалист даты (периоды) включены в заголовок отчета, например:
«Остатки товаров на 31.03.2010».
При этом, в созданном отчете СКД, заголовок будет иметь вид:
Ниже в статье описано как сделать заголовок с параметром.
Создаем новую группировку отчета «Детальные записи».
Устанавливаем имя (В контекстном – «Установить имя…»).
Перемещаем группировку на самый верх.
На вкладке «Макеты» добавляем макет группировки.
Выбираем имя группировки (назначили на шаге 1)
Определяем область макета – например первые две строки. Для выбора области – двойное нажатие, затем кнопка с многоточием – и выделяем строки на макете. Выбранные строки отражаются в окошке «диапазон»
Добавляем заголовок – выделив нужную ячейку (например 1,1), из контекстного меню вызываем свойства.
В разделе Макет для свойства Заполнение указываем Шаблон.
В разделе Основные в свойстве Текст указываем заголовок и в квадратных скобках указываем имя параметра макета (имя не принципиально) – например [ДатаОстатка]
В параметрах макета появится имя параметра ДатаОстатка
Назначим параметру макета Дата остатка параметр отбора Период (в данном примере один параметр отбора – Период) и заодно отформатируем представление даты.
В ячейке Выражение (рядом с параметром макета ДатаОстатка) скажем следующее выражение: формат(ПараметрыДанных.Период,»дф=dd.MM.yyyy»)
В настройке группировки (Заголовок) на вкладке Выбранные поля удаляем выбранные поля (изначально указано ).
Там же, но на вкладке «Другие настройки» указываем Макет оформления – Без оформления
В общих настройках всего отчета на вкладке Другие настройки: Выводить параметры – Не выводить, Выводить отбор – Не выводить.
Свой заголовок отчета СКД для обычного и управляемого приложения 8.2
Речь идет о програмном формировании заголовка отчета нужного формата, как например
«Остатки товаров на складах. Отчет сформировал: Пользователь1 18.11.2010 15:44:16»
Это конечно не панацея, это скорее частный случай, но, думаю, он имеет право на существование и найдет свою аудиторию.
Прилагается пример отчета (для конфигурции «Библиотека стандартных подсистем»)
Предлагается не использовать дополнительную группировку в СКД и макет в том же СКД для вывода «Своего» заголовка отчета, как //infostart.ru/public/15702/ или http://www.forum.mista.ru/topic.php?id=330162. Дело в том, что при изменении группировок отчета пользователем, заголовок может сместиться, или вообще пропасть.. Кроме того (в моем случае в заголовок отчета было необходимо вывести поля Автор и время формирования), иногда необходимо вывести абсолютно разнообразную инфу в заголовок.
Кроме того я не рисую формы отчетов, так как в режиме управляемого приложения 1С довольно не плохо рисует их сама. По-этому у меня родилось другое решение: В модуле отчета можно использовать предопределенную процедуру
Я поступил так: в общие макеты засунул макет «ШапкаОтчета», в общем серверном модуле добавил экспортную процедуру, которая формирует заголовок отчета (в моем случае заголовок очтета имеет всегда одинаковую структуру, но разное заполнение) и подключил эту процедуру в модуле отчета к указанной выше процедуре. В результате у меня ВСЕГДА выводится заголовок, он типизирован, и заполняется програмно нужными мне данными, которые частично берутся из компановщика, а частично из других мест.
ЕСТЕСТВЕННО ЗАГОЛОВОК КАЖДЫЙ МОЖЕТ ИСПОЛЬЗОВАТЬ СВОЙ 🙂
СКД: Как установить заголовок отчета?
Вот так я искал, и подсказали, а тут не нашёл, поэтому ложу, может пригодиться кому:
ЭлементыФормы.Результат.Очистить();
//Определение Макета компоновки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
////Установка параметров
//МакетКомпоновки.ЗначенияПараметров.Организация.Значение = ЭлементыФормы.Организация.Значение;
//МакетКомпоновки.ЗначенияПараметров.НачПериода.Значение = НачалоМесяца(Период);
//МакетКомпоновки.ЗначенияПараметров.КонПериода.Значение = КонецМесяца(Период2);
//
//МакетКомпоновки.ЗначенияПараметров.НачПериодаРегистратор.Значение = НачалоМесяца(Период);
//МакетКомпоновки.ЗначенияПараметров.КонПериодаРегистратор.Значение = КонецМесяца(Период1);
//
//Определение Процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
//Определение Процессора вывода
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
//Получение доп макета для шапки и подвала
Макет = ОтчетОбъект.ПолучитьМакет(«Макет»);
//Вывод шапки
Область = Макет.ПолучитьОбласть(«Заголовок»);
//Область.Параметры.ДатаОтчета = Формат(ТекущаяДата(), «ДФ=dd.MM.yyyy»);
//Область.Параметры.Организация = организация;
//Область.Параметры.Месяц = Формат(Период, «ДФ=’MMММ yyyy'»);
ЭлементыФормы.Результат.Вывести(Область);
//Вывод таблицы
ПроцессорВывода.Вывести(процессорКомпоновки);
АйТиБложик
Маленький IT блог с характером 1С.
Настройка шапки отчета в СКД
Создадим внешний отчет, который будет выводить отчетную информацию об остатках номенклатуры и её обороте. Требуемая информация запрашивается запросом с помощью набор данных типа «Запрос», который содержит текст запроса:
ВЫБРАТЬ
_ДемоНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ АктуальнаяНоменклатура
ИЗ
Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
НЕ _ДемоНоменклатура.ПометкаУдаления
И НЕ _ДемоНоменклатура.ЭтоГруппа
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
АктуальнаяНоменклатура.Номенклатура,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.МестоХранения,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоНачальныйОстаток,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоКонечныйОстаток,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоПриход,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоРасход,
_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоОборот
ИЗ
АктуальнаяНоменклатура КАК АктуальнаяНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления._ДемоОстаткиТоваровВМестахХранения.ОстаткиИОбороты КАК _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты
ПО АктуальнаяНоменклатура.Номенклатура = _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Номенклатура
1. Настройка заголовков на вкладке СКД «Наборы данных»
Здесь все просто, ставим галочку напротив свойства поля «Заголовок» (т.е. отменяем автозаголовок) и вводим необходимый текст заголовка (см. рисунок 4).
![]() |
| Рисунок 4. Изменения названия заголовка в наборе данных |
Если требуется задать оформление для всего поля, а не только для его заголовка, то существует свойство поля «Оформление», с помощью которого можно задать некое оформление поля, например, изменить шрифт или задать цвет фона (см. рисунок 5).
![]() |
| Рисунок 5. Оформление полей в наборе данных |
На этом мои знания про вкладку «Наборы данных» заканчиваются.
2. Настройка заголовков полей на вкладке СКД «Настройки»
Для задания заголовка поля, необходимо выделить нужное поле, правой кнопкой мыши вызвать контекстное меню и выбрать пункт «Установить заголовок» (см. рисунок 6)
![]() |
| Рисунок 6. Установка заголовков полей в настройках отчета |
Что бы сгруппировать поля (например, по типу информации), нужно добавить группировочное поле и поместить в него требуемые поля (см. рисунок 7), вложенность неограниченная.
![]() |
| Рисунок 7. Группировка полей в настройках отчета |
Так же можно поиграться со свойством группировочного поля «Расположение», от которого зависит вид группировки полей.
Данные действия можно производить и в режиме 1С:Предприятия, открыв настройки отчета, НО, в состав настроек отчета должен быть включен пункт «Выбранные поля» (см. рисунок 8).
![]() |
| Рисунок 8. Расширение настроек отчета |
После всех проделанных операций внешний вид отчета изменился следующим образом (см. рисунок 9):
![]() |
| Рисунок 9. Внешний вид отчета после настройки СКД |
На этом легкая часть по настройке шапки отчета закончена. Из плюсов выше перечисленных действий: вся настройка выполняется стандартными средствами. Из минусов: отсутствие возможности задания многострочного заголовка поля.
3. Программная установка заголовков полей
Платформа позволяет программно устанавливать заголовки полей, более того, устанавливать многострочные, что в свою очередь дает возможность гибко и динамически задавать заголовки полей при формировании отчета.
Для этого в модуле отчета определим процедуру ПриКомпоновкеРезультата. В этой процедуре напишем код по заданию заголовка полей.
// 1. Получаем пользовательские настройки.
НастройкиКД = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
// 2. Получаем значение параметра «Период» из которого определяем дату начала и окончания периода.
ПараметрПериод = Новый ПараметрКомпоновкиДанных(«Период»);
Период = НастройкиКД.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрПериод).Значение;
НачалоПериода = Период.ДатаНачала;
КонецПериода = Период.ДатаОкончания;
// 4. Получим список полей, который находятся в группировке «Остатки» (см. рисунок 7) и
// зададим новый заголовок, обойдя элементы в цикле.
ВыбранныеПоля = НастройкиКД.Выбор.Элементы; // Первый уровень полей.
ВыбранныеПоляОстатки = ВыбранныеПоля[6].Элементы; // Поля группировки остатки.
Для каждого ВыбранноеПоле Из ВыбранныеПоляОстатки Цикл
Для Каждого ЭлементМассива Из СписокПолей Цикл
ПолеКомпоновки = Новый ПолеКомпоновкиДанных(ЭлементМассива.ИмяПоля);
Если ВыбранноеПоле.Поле = ПолеКомпоновки Тогда
ВыбранноеПоле.Заголовок = ЭлементМассива.Заголовок;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// 5. Загрузим измененный пользовательские настройки обратно.
ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);
Результат отчета (см. рисунок 10):
![]() |
| Рисунок 10. Многострочный текст заголовка |
Способ потяжелее, чем все выше перечисленные, но мне нравится.
4. Задание шапки отчета с помощью макета
Для более гибкой настройки внешнего вида отчета в СКД предусмотрено создание макетов. В настройках отчета создадим еще одну группировку «детальные записи» и установим имя «СтрокаДЗ» для этой группировки (см. рисунок 11).
![]() |
| Рисунок 11. Установка имени для группировки |
На вкладке «Макеты» добавим макет заголовка группировки. Для макета в табличном документе создадим шапку отчета (шапка отчета должна содержать столько заголовков полей, сколько выводит полей детальная запись) и укажем область табличного документа для макета (см. рисунок 12).
![]() |
| Рисунок 12. Маке заголовка группировки |
В итоге отчет имеет следующего вида шапку(см. рисунок 13):
![]() |
| Рисунок 13. Макет СКД в качестве шапки отчета |
По моему мнению, макеты имеют один большой минус, это невозможность перестраиваться под заданную пользовательскую группировку, поэтому их следует использовать в том случае, если отчетная форма регламентированная и не может быть изменена. Попробуйте задать группировку для группировки «СтрокаДЗ» и увидите, что макет сбился.
На сайте информационно-технологического сопровождения приведена статья Использование предопределенных макетов, которая подробно описывает приемы использования макетов в СКД.
5. Доработка результата (табличного документа)
В этом способе используется замечательный метод табличного документа НайтиТекст(), но для применения данного способа требуется отключение стандартной обработки формирования результата отчета.
![]() |
| Рисунок 14. Изменение табличного документа |
Так же для найденной ячейки можно задать форматирование, см. свойства ячейки табличного документа в синтакс-помощнике.
Данный способ я обнаружил для себя недавно, он прост и позволяет очень гибко работать с шапкой отчета, главное, что бы текст ячейки имел уникальный текст.
Разбираемся с параметрами редактирования СКД
Вступление
В конструкторе СКД на некоторых вкладках есть колонка Параметры редактирования (или Параметры ввода, что то же самое по сути).
Настройка этого значения выполняется через специальное окно с одноименным названием.
Некоторые элементы списка этих параметров не имеют конструкторов, а также имеют неочевидные названия.
Настройка этих параметров может вызывать трудности.
Достаточно подробного описания данного механизма с доступными примерами мне найти не удалось, поэтому разбирался самостояетельно.
Самые простые параметры редактирования
Наиболее простыми для использования являются следующие параметры: Формат редактирования, Быстрый выбор, Выбор групп и элементов. С ними все понятно, поэтому их пропустим.
Связи параметров выбора
Настраиваются через специальное окно Редактирование связей параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.
Пример 1
Тогда достаточно в поле Параметр выбора указать имя реквизита из справочника Договоры контрагентов, в нашем случае это Владелец, поэтому запишем: Отбор.Владелец.
Зачем добавлять слово Отбор, опишу ниже.
Теперь, если у параметра Контрагент стоит флаг Использование и контрагент выбран, то при выборе договора, будет накладываться отбор по владельцу.
Если же Контрагент не выбран или флаг у контрагента не установлен, то при выборе договора будут отображаться все договоры.
Поле Изменение значения влияет на то, очищать ли договор, если пользователь выбрал другого контрагента или не очищать.
Параметры выбора
Настраиваются через специальное окно Редактирование параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.
Пример 2
Поля Контрагент и Договор из первого примера.
Мы хотим, чтобы пользователь мог выбрать только договор с видом С покупателем или Прочее и не помеченный на удаление.
Добавляем два параметра:
1. Параметр выбора = Отбор.ПометкаУдаления; Значение = ЛОЖЬ
2. Параметр выбора = Отбор.ВидДоговора; Значение = список из двух элементов : С покупателем, Прочее
Эти два параметра будут устанавливаться всегда независимо от выбранности/невыбранности параметра Контрагент.
Зачем нужно слово Отбор?
Почему в поле Параметр выбора необходимо использовать приставку Отбор? Какие еще параметры можно указывать и на что это влияет?
Это один из ключевых вопросов данной статьи, который и стал поводом к ее написанию.
Для ответа на этот вопрос предположим, что у нас есть независимая обработка без СКД с реквизитами Контрагент и Договор.
Какой код нам потребовалось бы написать, чтобы при подборе в поле Договор на нашей обработке устанавливались нужные отборы и передавались параметры?
Один из вариантов этого кода выглядит следующим образом.
Чтобы получше разобраться поэкспериментируем
Пример 3
Добавим по два параметра в Параметры выбора и в Связи параметров выбора.
Поставим точку останова в форме выбора при создании на сервере
Видим, что параметры, переданные без точек пришли как отдельные, а параметры, имеющие точки пришли в виде структуры.
Связь по типу
В настройке данного параметра сбивает с толку наличие поля Элемент связи с типом число.
Чтобы понять как его настраивать разберем два примера.
Пример 4
Создадим в СКД параметр Счет.
И еще три параметра Субконто1, Субконто2, Субконто3.
Мы хотим, чтобы если выбран Счет, то во параметре СубконтоN автоматически устанавливался отбор со значениями соответствующего субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = Счет (ПараметрыДанных.Счет), Элемент связи = 1 (номер субконто)
Для остальных двух параметров аналогично, только Элемент связи будет 2 и 3.
Теперь при выбранном параметре Счет, в полях СубконтоN будут доступны только значения, соответствующие типу субконто
Пример 5
Создадим в СКД параметры Вид субконто и Субконто.
Мы хотим, чтобы при выборе вида, были доступны только значения соответствующие виду субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = ВидСубконто (ПараметрыДанных.ВидСубконто), Элемент связи = 0 (не имеет значение в данном случае)
Заключение
Данный механизм в СКД аналогичен тому, который позволяет настраивать параметры реквизитов в справочниках, документах и т.д.
Но такие связи приходится настраивать довольно редко, и часто в таких случаях проще решить задачу с помощью кода, чем разбираться как это все настраивается.
Думаю, что данное описание поможет разобраться в этом механизме и начать его применять.


































