выбор варианта отчета скд 1с на обычной форме
Создание меню выбора вариантов отчета на СКД в 1С
Как известно, система компоновки данных в 1С позволяет создавать различные варианты отчетов с заранее подготовленными настройками еще на этапе создания.
Необходимо дать пользователю возможность выбрать нужный вариант отчета. Рассмотрим программное создание на панели действий формы обычного приложения выпадающего меню, которое будет автоматически заполняться всему существующими вариантами отчета.
Для начала подготовим процедуру, которая будет создавать меню с вариантами:
НовоеДействие = Новый Действие ( «ИзменитьВариант» ) ; //Создаем действие, которое потом назначим на кнопки с вариантами
Счетчик = 1 ; //посчитаем кнопки, у них должны быть разные имена
Вызовем эту процедуру при открытии формы:
А теперь создаем обработчик события для добавленных кнопок. В предыдущем коде была строчка НовоеДействие = Новый Действие(«ИзменитьВариант»); значит обработчик должен иметь название ИзменитьВариант.
Процедура ИзменитьВариант ( Элемент )
//У меня на форму были выведены дополнительные поля отборов из компоновщика настроек
//Если есть что-то подобное, то такие процедуры писать сюда
//Если нет, то следующую строчку удалить
ЗаполнитьОтборНастроек ( ) ;
//Прерываем цикл, т.к. нашли настройку
Прервать ;
За идею спасибо коллегам с сайта programmist1s.ru
Создание меню выбора вариантов отчета на СКД в 1С : 5 комментариев
ЗаполнитьОтборНастроек();
эта функция не определена.
Смотрите мой комментарий над этой функцией.
Она приведена просто для примера. В некоторых стандартных отчетах могут быть процедура и функции, заполняющие первоначальные настройки варианта отчета.
Если у вас такой функции нет, просто удалите ее вызов из кода.
Тип не определен (Действие)
НовоеДействие = Новый <>Действие(«ИзменитьВариант»);
Добрый день.
Уточните пожалуйста:
1. Вы работаете с обычными формами или с управляемыми?
2. Если с управляемыми, то процедура, в которой возникает ошибка, выполняется на клиенте или на сервере?
СКД: как определить в процедуре в модуле объекта «ПриКомпоновкеРезультата», какой вариант отчета компануется?
Коллеги, блин, будьте настойчивее при поиске хороших встроенных функций. Их много и они удобны.
Кто может подсказать, как можно узнать вариант, если отчет формируется из созданной формы отчета?
Добавляем параметр. Устанавливаем значение (например название варианта, просто строкой, для каждого варианта настроек свое), но не устанавливаем галочку использование.
В процедуре ПриКомпоновкеРезультата :
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
НазваниеВарианта = Настройки.ПараметрыДанных.Элементы.Найти(«ИмяПараметра»).Значение; // получаем строковое значение
+ еще 1 вариант:
На форму вывести элемент Отчет.КомпоновщикНастроек.ПользовательскиеНастройки (таблицу без колонок), если его там нет, обычно он там присутствует. Также на форме обычно присутствует стандартная кнопка выбора варианта отчета. После ее нажатия и выбора варианта, срабатывает событие ПриАктивизацииСтроки() у элемента таблицы ПользовательскиеНастройки, срабатывает оно также и при открытии формы, нужно в это событие написать такой код:
Обязательно в реквизиты отчета добавить реквизит КлючТекущегоВарианта, тип строка без ограничения длины.
Затем при нажатии кнопки Сформировать, срабатывает событие ПриКомпоновкеРезультата() в модуле объекта,
и вот здесь уже можно прочитать выбранный пользователем вариант:
Если КлючТекущегоВарианта = «Мой вариант» Тогда
// выбран нужный вариант
Форма отчета СКД
На форме ниже наименования отчета, при создании формы, программным способом добавляются поля: параметры и отборы СКД, у которых установлена пометка «Быстрый доступ». Состав полей и вид сравнения (равно, больше/меньше, в списке, в группе…) определяется на этапе конфигурирования или в форме настроек.
Обратите внимание на стандартные роли ДобавлениеИзменениеВариантовОтчетов, ЧтениеВариантовОтчетов, БазовыеПраваБСП, СохранениеДанныхПользователя, ДобавлениеИзменениеЛичныхВариантовОтчетов. От них зависит внешний вид и возможности работы.
Посмотрим на командную панель:
Кнопка 1. Сформировать в фоновом режиме. Возможен замер времени выполнения(APDEX).
Кнопка 2. Форма настроек. Управление отборами, внешним видом элементов формы и структурой отчета (список, таблица).
Кнопка 3. Управление вариантами отчета. Сохранение пользовательских настроек. (Права и параметры имеют значение)
Кнопка 11. Позволяет управлять рассылками отчетов, создать рассылку, используя текущие настройки СКД. То есть настройки отчета сохраняются в справочник рассылки. Если в конфигурации отсутствует подсистема рассылки отчетов – кнопка не видна.
Допустим, мы выполняем код ОткрытьФорму(«Отчеты.Ведомость.Форма», ПараметрыОткрыть); Рассмотрим избранные свойства структуры «ПараметрыОткрыть».
Структура содержит отбор, который будет установлен при формировании отчета. В документации ИТС отсутствует. Это наш секрет :))
Вариант формирования отчета. В документации ИТС отсутствует. Это наш секрет :)) Если отсутствует – используется первый из вариантов в алфавитном порядке.
Установлена ИСТИНА – есть возможность выбора вариантов В документации отсутствует. Возможно, устарел.
параметры печати табличного документа: ПолеСверху, ПолеСлева, ПолеСнизу, ПолеСправа, ОриентацияСтраницы, АвтоМасштаб, МасштабПечати
Первый способ: Чтобы добавлять код, хорошо использовать переопределяемые модули. В конфигурации УТ для ФормыОтчетов предусмотрены процедуры:
Порядок выполнения процедур при открытии:
Порядок выполнения процедур по кнопке «Сформировать»:
&НаКлиенте:
1) ОтчетСкомпоноватьРезультат()
2) Сформировать()
&НаСервере:
3) РезультатФормированияОтчета(ФормированиеПриОткрытии, Непосредственно)
4) ПроверитьЗаполнение()
5) ОбработкаПроверкиЗаполненияНаСервере()
6) ЗагрузитьРезультатФормированияОтчета()
Второй способ: если мы хотим изменить какие-то свойства формы, например ограничить отбор в списке поля (1) или выполнить дополнительные действия при выборе значения в поле (2), нам нужно копировать объект метаданных ОбщиеФормы – ФормаОтчета и вставить его в свой отчет. (Не забывайте про общие формы ФормаНастроекОтчета и ФормаВариантаОтчета). Переименуем форму, чтобы в ней не было ссылок на модули ОбщиеФормы – ФормаОтчета. После этого можно смело изменять код. Но нужно учитывать, что поля формы создаются автоматически и называются иначе, чем в схеме СКД.
1. Для изменения свойства поля, найдем в модуле формы процедуру ВывестиЭлементыНастройки и посмотрим в отладчике, как происходит добавление элементов. В переменной СвойстваНастройки хранится связь между полем СКД и идентификатором. Запомним ИмяЭлемента в цикле обработки переменной СвойстваНастройки, потом обработаем.
2. Для обработки выбора значения в форме предусмотрены подключаемые процедуры:
Поставим точку останова – увидим, как происходит обработка выбора значения.
Дополнительные процедуры, которые тоже могут пригодиться:
Разработка отчетов при помощи универсального механизма «Шаблон типового отчета»
Зачем пользоваться механизмом типовых отчетов
Схема компоновки данных (СКД) позволяет быстро и качественно разрабатывать отчеты любой сложности. Причем, правильно написанная СКД часто позволяет получать сразу несколько отчетов за счет изменения своих настроек. Однако как бы хорошо ни была разработана и настроена СКД, пользователю требуется изменять группировки отчета, устанавливать отборы, дополнительные оформления отчета, т.е. персонализировать настройку СКД. Для неподготовленного пользователя «настройка СКД» является очень сложным заданием, поэтому механизм типовых отчетов предназначен в первую очередь для того, чтобы позволить обычному пользователю работать с отчетами, разработанными на базе СКД без дополнительного обучения и документации. Помимо этого типовой механизм позволяет ускорить разработку отчетов, а так же позволяет на базе одного отчета получать несколько его вариантов, что существенно сокращает количество разрабатываемых отчетов. Общая концепция типового механизма предполагает наличие двух пользователей: администратора отчета и пользователя отчета. Администратор отчета заранее настраивает варианты отчета, чтобы в дальнейшем «неподготовленный» пользователь отчета смог сформировать нужный ему отчет. Вариант отчета содержит в себе настройку СКД и настройку панели пользователя. В настройке СКД описывается структура отчета, по которой в дальнейшем будут выводиться данные. Настройка панели пользователя содержит описание элементов структуры отчета, которые может менять пользователь отчета. Каждый элемент структуры отчета для пользователя имеет свои элементы управления, которые администратор выбирает в процессе настройки. Таким образом, конечный пользователь получает отчет с заранее подготовленными вариантами отчета, в которых он устанавливает отборы, группировки, сортировки при помощи понятных ему элементов управления.
Настройка варианта отчета
Вариант отчета – это настройка типового отчета, которая содержит настройки СКД и описание элементов управления, которыми пользователь будет настраивать СКД. Настройка варианта отчета начинается с настройки структуры отчета.
Изменение настроек схемы компоновки данных
Для того чтобы изменить настройку схемы компоновки данных, нужно открыть «Форму редактирования структуры отчета». Форма вызывается пунктом меню «Настройка структуры».
Форма редактирования структуры отчета может работать в двух режимах:
Для того чтобы форма редактирования настроек могла работать в обычном режиме редактирования настроек, на настройку СКД варианта отчета налагаются определенные ограничения:
Параллельные группировки, таблицы или диаграммы
Таблица или диаграмма, которую группируют
Если хотя бы одно из этих требований не выполнено, форма редактирования структуры отчета откроется в расширенном режиме редактирования.
Обычный режим настройки отчета структуры отчета
Обычный режим редактирования настройки отчета предоставляет возможность редактировать три наиболее востребованные структуры:
На рисунке ниже приведена структура отчета, соответствующая настройке «Таблица».
В настройке структуры отчета изменение состава группировок производится путем редактирования строк табличного поля «Группировки строк». Порядок использования группировок определяется очередностью строк в табличном поле.
На рисунке ниже приведена структура отчета, соответствующая настройке «Кросс-таблица».
В настройке структуры отчета изменение состава группировок производится путем редактирования строк табличных полей «Группировки строк» и «Группировки колонок». Порядок использования группировок определяется очередностью строк в табличном поле.
На рисунке ниже приведена структура отчета, соответствующая настройке «Диаграмма».
В настройке структуры отчета изменение состава группировок производится путем редактирования строк табличных полей «Серии» и «Точки». Порядок использования группировок определяется очередностью строк в табличном поле.
Помимо возможности редактирования группировок отчета форма редактирования позволяет задавать отборы, сортировки, условные оформления. Для этого используются табличные поля на соответствующих закладках формы.
Расширенный режим настройки отчета структуры отчета
Расширенная форма редактирования отчета позволяет настроить структуру отчета любой сложности. Форма редактирования повторяет форму редактирования настроек СКД в Конструкторе СКД и приемы работы с этой формой такие же, как и в Конфигураторе.
Изменение настроек панели пользователя
Помимо настроек самой СКД в варианте отчета указываются настройки, которые может менять пользователь. Для каждого элемента настройки пользователя задается элемент управления панели, при помощи которого пользователь сможет управлять отборами, группировками и сортировкой отчета. Пользовательские настройки включают в себя следующие элементы:
Настройка видимости стандартных страниц
На стандартных страницах расположены элементы управления отчетом, которые не требуют дополнительной настройки.
Период
На странице Период расположен элемент настройки периода или даты формирования отчета:
Большинство отчетов требуют, чтобы пользователь указал период или дату отчета. В большинстве случаев пользователь указывает один и тот же период или дату. К примеру, прошлый месяц или текущую дату. Чтобы пользователь не повторял операцию каждый раз при открытии отчета, элемент управления периодом позволяет задать относительные период отчета: Этот месяц, этот год, предыдущий год, предыдущий месяц и т.п.
Показывать все относительные периоды для конкретного отчета не всегда уместно, так как некоторые отчеты не имеют смысла, если их строить за меньший период, чем предполагает разработчик отчета. К примеру, расчетные отчеты по зарплате не имеет смысла строить меньше чем за месяц. Для таких отчетов предусмотрена специальная настройка стандартного периода формирования отчета, в которой можно отключить отдельные относительные периоды.
Параметры
На странице Параметры расположено табличное поле, позволяющее задать все параметры отчета
Отбор
На странице Отбор расположено табличное поле, позволяющее задать отбор любой сложности
Сортировка
На странице Сортировка табличное поле настройки сортировки данных в отчете позволяет включить/отключить ту или иную заранее подготовленную в настройке СКД сортировку. Таким образом, при создании настройки СКД в таблицу сортировок требуется добавить возможные сортировки варианта отчета.
Показатели
На странице Показатели элемент управления показателями отчета позволяет включать или выключать ресурсы отчета.
Элемент управления показателями позволяет включать только поля СКД, которые являются ресурсами.
Если поле выводится в отчет в составе группы и группа не используется при выводе, то такое поле также не будет показываться в элементе управления показателями отчета.
Настройка быстрых отборов
Каждый элемент управления позволяет задать определенные виды сравнения отборов.
Виды быстрых отборов:
«Список» и «Длинный список»
Данный элемент управления позволяет задавать отбор списком, а также управлять используемым при отборе видом сравнения: «В списке»/»Не в списке». Длинный список отличается от обычного только своим размером, он применяется, когда значение отбора содержит большой список значений, кроме того, позволяет пользователю сохранять подобранные списки элементов.
Чтобы добавить элемент управления отбором на панель пользователя, нужно:
При работе с отчетом часто возникает желание настроить отбор по значению, которое, скорее всего, не поменяется. Например, в отчетах по зарплате могут быть настроены отборы: «Показывать только уволенных», «Показывать получивших мат. помощь» и т.п.
Чтобы добавить элемент управления отбором на панель пользователя, нужно:
«Флажок + Значение» и «Значение»
Элемент управления «Флажок + Значение» позволяет устанавливать значение отбора типа справочник, документ, перечисление и т.п., но не список значений. Элемент управления «Флажок» и «Флажок + значение» отличаются только возможностью отключать использование отбора в отчете. В элементе управления «Флажок + значение» пользователь может сам отключить использование отбора при помощи флага, что позволяет не изменять значение отбора и при этом включать и выключать отбор. В элементе управления «Значение» использование отбора отключается если значение в поле ввода отбора не задано. Таким образом, элемент управления «Флажок + значение» лучше использовать, когда пользователю приходится устанавливать значение отбора из большого списка значений, а элемент управления «Значение» лучше использовать, когда список значений отбора не большой.
Чтобы добавить элемент управления отбором на панель пользователя, нужно:
Настройка параметров отчета
Для некоторых отчетов требуется, чтобы пользователь мог изменить значения параметров отчета. Чтобы добавить параметр в настройку пользователя, требуется на закладке параметры указать панель, на которую требуется выводить параметр, и способ его отображения. От способа отображения и панели параметра будет зависеть элемент управления параметром.
Вид отображения «Поле ввода», расположение «Горизонтальная панель»
Вид отображения «Поле ввода», расположение «Правая панель»
Вид отображения «Список значений», расположение «Горизонтальная панель»
В данном случае элемент управления похож на элемент управления для вида отображения «Поле ввода», но в нем задается список значений.
Вид отображения «Список значений», расположение «Правая панель»
Вид отображения «Переключатель», расположение «Правая панель»
Для использования вида отображения «Переключатель» есть ряд ограничений:
Расшифровка отчета
Расшифровка отчета по умолчанию позволяет использовать в качестве расшифровки все доступные для группировки поля СКД. Если возникает необходимость отключить одно из таких полей для конкретного варианта отчета, это можно сделать в настройке пользователя. Для этого требуется на закладке «Расшифровки» отключить соответствующее поле.
Как создать отчет на базе типового механизма
Процесс разработки отчета на базе типового механизма делится на три этапа:
Разработка СКД стоит на первом месте в разработке отчета, именно от алгоритма СКД будет зависеть, какие отчеты сможет получать пользователь. Но в данной статье мы не будем рассматривать вопросы, связанные с разработкой СКД (эти вопросы подробно рассматриваются в книге Е. Ю. Хрусталевой «1С:Библиотека разработчика. Разработка сложных отчетов в «1С:Предприятии 8″. Система компоновки данных»), оговоримся лишь, что СКД для типового отчета может быть любой.
После того как СКД разработана, необходимо вставить ее в типовой отчет, т.е. взять шаблон типового отчета и заменить в нем схему компоновки данных на СКД, разработанную для нового отчета.
Для этого необходимо:
Следует помнить, что настройки схемы компоновки данных, указанные в СКД, будут применяться, когда у пользователя отчета не будет доступных на чтение вариантов отчета, поэтому пустую настройку СКД по умолчанию оставлять не следует.
После того как в отчет вставлена СКД, следует создать предопределенные настройки отчета. Для этого нужно:
Событие «Доработать компоновщик перед выводом». Сложная структура отчета
В некоторых случаях при помощи простой настройки, т.е. в виде таблицы, диаграммы или группировки, вывести нужный отчет не получается. Причины этому бывают разные, иногда надо применить условное оформление к первым 3 группировкам отчета, иногда добавить группировки так, что бы они выводились одна за другой.
Примером такого отчета может послужить отчет «Свод начислений и удержаний» конфигурации «Зарплата и кадры бюджетного учреждения». Настроив такую структуру, форма редактирования отчета переключится в режим расширенной настройки и не позволит вернуться режим простой настройки, отчего пользователь не сможет переключить пользовательскую настройку отчета. Чтобы решить данную проблему, приходится упрощать настройку отчета до простой, удаляя сложные элементы структуры отчета, и добавлять все удаленные элементы настройки программно.
Как пример использования события разработаем отчет, макет которого приведен в таблице ниже.
Подразделение | Руководители | Работники | Служащие | Прочие рабочие | Мужчины | Женщины |
---|---|---|---|---|---|---|
Администрация | 3 | 10 | 3 | 10 | ||
Производство | 50 | 1 | 5 | 44 | 5 | |
Склад | 5 | 1 | 1 | 5 | 5 |
Для того чтобы пользователь смог самостоятельно настроить группировку отчета, предлагается запомнить настройку отчета без настройки колонок, а в момент формирования отчета добавлять нужные колонки отчета. Тогда настройка варианта отчета будет выглядеть следующим образом.
При формировании отчета потребуется добавить два поля на один уровень группировки. Для этого добавим в процедуру модуля отчета ДоработатьКомпоновщикПередВыводом следующий текст:
Признак, по которому нужно дорабатывать настройки СКД, может быть произвольным. В данном случае это наличие таблицы компоновки данных в настройке в качестве первого элемента. Так же можно проверять наличие дополнительных полей или значение специального параметра в настройках СКД.
События при выводе отчета. Доработка расшифровки отчета
Отчеты, которые показывают движения документов или реквизиты/ресурсы одного и того же справочника, зачастую требуют особого алгоритма расшифровки в случае, когда отчет показывает детальные записи СКД.
К примеру, в отчете «Список кадровых перемещений» каждая строка отчета описывает документ прием на работу. Пользователь, дважды щелкнув мышью на соответствующую строку отчета, ожидает, что для просмотра откроется приказ о приеме на работу.
Реализовывать собственный алгоритм расшифровки отчета удобнее путем изменения параметров макета компоновки данных при формировании отчета. Для этого требуется выполнить следующие действия:
Разработка отчетов со сложным макетом
Многие отчеты содержат сложный макет, который нельзя вывести с помощью СКД. В таких случаях СКД используется только как источник данных для результирующего отчета и алгоритм формирования отчета становится более сложным, распадаясь на два этапа:
Алгоритм получения данных также может состоять из нескольких частей:
Любой отчет, содержащий макет, требует от настройки СКД определенной структуры и обязательно выводимых полей. Пользователь, производя настройку отчета, может пренебречь этими требованиями и удалить не нужные, по его мнению, поля или группировки. Поэтому структуру отчета нужно формировать программно перед формированием отчета исходя из настроек, которые пользователь отчета установил. После доработки настройки запускается алгоритм формирования отчета в дерево значений или таблицу значений для чего «типовая» процедура СформироватьТиповойОтчет заменяется кодом для формирования отчета, например, таким:
Примером отчета со сложным макетом является отчет «Карточка работника» в из демонстрационной базы данных, который выводит макет карточки работника. Причем существует возможность сгруппировать карточки работников по всем доступным полям СКД.
События панели пользователя
При разработке формы отчета требуется добавлять свои элементы управления отчетом или изменять уже добавленные. Для этого в форме отчета используются события панели пользователя. Для того чтобы типовой отчет начал использовать события правой панели отчета, нужно выполнить следующие действия:
Структура управления элементом отчета представляет собой структуру данных, в которой содержатся ссылки на страницу и элементы управления.
Структура элементов управления периодом имеет следующие поля:
Структура элементов управления параметром имеет следующие поля:
Структура элементов управления группировками имеет следующие поля:
Структура элементов управления отбором на горизонтальной панели имеет следующие поля:
Структура элементов управления отбором в виде списка значений имеет следующие поля:
Структура элементов управления отбором в виде флажка и/или значения имеет следующие поля:
Подключение дополнительных возможностей отчета
Иногда в отчете требуется выводить не только таблицу с данными, но и диаграмму Ганта или рисунок. Другими словами, отчет должен иметь возможность выводить другое представление данных в дополнение к существующим возможностям. К примеру, отчет по отпускам удобно смотреть не только в виде таблицы, но и в виде диаграммы Ганта.
Чтобы предоставить пользователю возможность вывести отчет в виде диаграммы Ганта, на панель пользователя нужно вывести флажок, установив который, пользователь получит диаграмму Ганта. Для этого следует задействовать дополнительные возможности типового отчета. В модуль отчета добавляется процедура ПолучитьДополнительныеНастройкиОтчета и в возвращаемом ею массиве дополнительных настроек описывается флажок и его значение, например:
Как подключить универсальный механизм «Шаблон типового отчета» к конфигурации
Для этого требуется запустить объединение и сравнение конфигурации, которую требуется поставить на поддержку, и файла поставки. После чего отметить следующие объекты как объединяемые.
Нажмите кнопку «Выполнить». После объединения конфигураций откройте настройку поддержки конфигурации и включите возможность изменения справочника «Сохраненные настройки» для того, чтобы разработчики смогли добавлять в этот справочник предопределенные элементы, описывающие варианты отчетов.
Поставка демонстрационной конфигурации
Дистрибутив конфигурации находится в каталоге \1CITS\EXE\ TREPORT
После установки файл поставки библиотеки (.cf-файл) автоматически скопируется в каталог шаблонов
Дистрибутив конфигурации и файл шаблона (Шаблон.erf) находятся в каталоге \1CITS\EXE\TREPORT