Форма отчета 1с обычные формы
Как известно, система компоновки данных в 1С позволяет создавать различные варианты отчетов с заранее подготовленными настройками еще на этапе создания.
Необходимо дать пользователю возможность выбрать нужный вариант отчета. Рассмотрим программное создание на панели действий формы обычного приложения выпадающего меню, которое будет автоматически заполняться всему существующими вариантами отчета.
Для начала подготовим процедуру, которая будет создавать меню с вариантами:
//Добавляем кнопку подменю на панель действий формы. Имя кнопки "ВариантыОтчетов", пользователю. будет видна как "Варианты"
КП = ЭлементыФормы . ДействияФормы ;
НоваяКнопка = КП . Кнопки . Вставить ( 1 , "ВариантыОтчетов" , ТипКнопкиКоманднойПанели . Подменю , "Варианты" , ) ;
НовоеДействие = Новый Действие ( "ИзменитьВариант" ) ; //Создаем действие, которое потом назначим на кнопки с вариантами
Счетчик = 1 ; //посчитаем кнопки, у них должны быть разные имена
//Добавляем кнопки для каждого варианта настроки СКД
//Отображение кнопки берем из представления настройки
//Назначаем в качестве действия кнопки действие, созданное выше
Для каждого Настройка Из СхемаКомпоновкиДанных . ВариантыНастроек Цикл
НоваяКнопка = КП . Кнопки . ВариантыОтчетов . Кнопки . Добавить ( "Вариант" + Строка ( Счетчик ) , ТипКнопкиКоманднойПанели . Действие , Настройка . Представление , НовоеДействие ) ;
Счетчик = Счетчик + 1 ;
Вызовем эту процедуру при открытии формы:
А теперь создаем обработчик события для добавленных кнопок. В предыдущем коде была строчка НовоеДействие = Новый Действие(«ИзменитьВариант»); значит обработчик должен иметь название ИзменитьВариант.
Процедура ИзменитьВариант ( Элемент )
//Обходим в цикле все варианты отчета и проверяем, совпадает ли их представление с заголовком кнопки, на которую нажали.
//Если совпало, значит это и есть искомая настройка
Для каждого Вариант Из СхемаКомпоновкиДанных . ВариантыНастроек Цикл
Если Элемент . Текст = Вариант . Представление тогда
//Загружаем вариант
КомпоновщикНастроек . ЗагрузитьНастройки ( Вариант . Настройки ) ;
//Меняем заголовок формы, чтобы было понятно, что за вариант работает
//Можно и где-то в другом месте отобразить название варианта
ЭтаФорма . Заголовок = ЭтотОбъект . Метаданные ( ) . Представление ( ) + ": " + Вариант . Представление ;
//У меня на форму были выведены дополнительные поля отборов из компоновщика настроек
//Если есть что-то подобное, то такие процедуры писать сюда
//Если нет, то следующую строчку удалить
ЗаполнитьОтборНастроек ( ) ;
//Прерываем цикл, т.к. нашли настройку
Прервать ;
Создание меню выбора вариантов отчета на СКД в 1С : 5 комментариев
ЗаполнитьОтборНастроек();
эта функция не определена.
Смотрите мой комментарий над этой функцией.
Она приведена просто для примера. В некоторых стандартных отчетах могут быть процедура и функции, заполняющие первоначальные настройки варианта отчета.
Если у вас такой функции нет, просто удалите ее вызов из кода.
Тип не определен (Действие)
НовоеДействие = Новый <>Действие(«ИзменитьВариант»);
Добрый день.
Уточните пожалуйста:
1. Вы работаете с обычными формами или с управляемыми?
2. Если с управляемыми, то процедура, в которой возникает ошибка, выполняется на клиенте или на сервере?
Добавить комментарий Отменить ответ
Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.
Наиболее эффективным объектом для создания отчетов в 1С 8.1, 8.2, безусловно является СКД. Однако использование СКД «вчистую» не позволяет вносить параметры и отборы СКД иначе как непосредственно в настройки СКД, что не всегда удобно пользователям. Представленная методика позволяет использовать СКД с некой шаблонной формой, которая берет на себя обмен параметрами СКД и в тоже время, эта форма позволяет пользователю «покапаться» в недрах самой СКД. Шаблон легко модифицируется, скажем для ввода Параметров или Условного оформления.
Допустим требуется построить «Ведомость по взаиморасчетам» в УТ 10.3
- Создаем внешний отчет, можно задать его имя «ВедомостьПоВзаиморасчетам»
- В этом-же окне создаем « Основную схему компоновки данных »
- В схеме добавляем новый набор данных , и, допустим при помощи конструктора запросов формируем нужный запрос, в текущем случае такой:
- Обращаем внимание, что для верной работы отчета, нужно в Полях СКД для измерения ДоговорКонтрагента в ролях выставить флаг « Обязательное », остальные настройки — по желанию (тех, что есть по умолчанию — вполне достаточно).
- Во вкладке СКД « Ресурсы » - добавляем все количественные ресурсы с функцией « Сумма »
- Во вкладке СКД « Настройки » - добавляем группировки , например: Организация, Контрагент, ДоговорКонтрагента, Детальные Записи , в « выбранных полях » добавляем нужные, например: Период, Регистратор, и все ресурсы, которые можно объединить в группы,
в « отборе » добавляем нужные по умолчанию отборы, снимая флажки использования, например Контрагент, Организация, ДоговорКонтрагента .
Собственно СКД готова, но вот формы у нее все еще нет, если на этом этапе закончить построение, то 1С сама сформирует форму по умолчанию.
- Создаем ФормуОтчета: она стандартная — её нужно наполнить содержимым , причем это содержимое чаще всего переходит из одного отчета в другой с минимальными корректировками. Собственно говоря этот этап и предлагается «шаблонизировать».
А именно вставить готовую форму из уже существующего отчета, подвергнув минимальным изменениям. В рассматриваемом случае из обработки «Шаблон отчета». Здесь нужно обратить внимание на то, что после вставки формы из шаблона отчета, нужно проверить два поля вновь вставленной формы: это в « Основных » Тип значения (нужно установить Тип текущего (редактируемого) отчета), и Заголовок
- Также, возможно, потребуются правки модуля вставленной формы, чаще всего это Процедура ОсновнаяПанельСформировать(Кнопка) , здесь в строках типа
в СКД передаются параметры из формы. Остальное, думаю, понятно из текста модуля формы.
Улучшенный шаблон отчёта СКД, реализованный на обычных формах. Лаконичный и функциональный, весь необходимый минимум для управления отчётом вынесен на форму отчёта, что избавляет рядовых пользователей от необходимости лезть внутрь настроек отчёта. Форма сделана гибкой и позволяет легко себя адаптировать под Ваши потребности. Ряд элементов формы сделан сворачиваемыми и растягиваемыми.
Идею создания именно такого шаблона вынашивал несколько лет. Эта разработка будет полезна тем, кому периодически необходимо делать внешние отчёты для конфигураций на обычных формах, например УПП1.3, УТ10.
Шаблон построен на базе панелей, для большинства которых предусмотрена возможность сворачивания.
В основном отчёты формируется либо за период, либо на дату, в шаблоне предусмотрена панель основных настроек, в которой можно выбрать либо период, либо дату, а также вариант отчёта. При необходимости выбор варианта можно скрыть.
Сделанная на этой панели настройка периода или даты синхронно отразится в СКД параметрах отчёта. Под панелью основных настроек, есть панель дополнительных настроек (по умолчанию она скрыта), но можно включить её отображение и разместить на ней настройки параметров Вашего отчёта, если это необходимо.
Все видимые пользователю параметры СКД доступны на панели "Параметры/отборы", которая может быть свёрнута/развёрнута нажатием на кнопку "показать/скрыть панель Параметры/отборы".
На форме отчёта есть кнопки установки уровня группировки результата, которые позволяют оперативно изменить уровень группировки результата отчёта без использования контекстного меню.
В шаблоне Вы можете установить логотип Вашей компании, если это необходимо, а если такой необходимости нет, то панель с изображением логотипа тоже можно скрыть через настройки шаблона.
Конфигурирование шаблона осуществляется в процедуре "Конструктор", которая является первой в модуле формы.
Название параметров конфигурации говорит само за себя. Если хотите скрыть какой-нибудь базовый элемент шаблона, просто закомментируйте строку с соответствующим названием. А если хотите отобразить, то просто раскомментируйте строку с соответствующим названием.
Для создания СКД-отчёта, при помощи этого шаблона, необходимо всего лишь вставить текст запроса в основную схему компоновки данных и выполнить настройку СКД.
Ниже вид шаблона, сконфигурированного под отчёт за период:
Ниже вид шаблона, сконфигурированного под отчёт на дату:
Если Вам понадобится использовать внешний источник данных для СКД или сделать подмену запроса СКД, то в модуле объекта уже есть готовый код события "ПриКомпоновкеРезультата":
Кроме того, в модуле объекта присутствуют готовые функции "УстановитьЗначениеПараметраОтчёта" / "ПолучитьЗначениеПараметраОтчёта".
- В конфигураторе 1с создаем новый внешний отчет через пункт меню Файл-Новый-Внешний отчет
- Назначаем отчету имя и переходим к созданию макета. В нижней части формы выбираем Макеты-Добавить-Тип макета-Табличный Документ.
- Исходными данными для тестового отчета будет справочник “Банки”. В макете создаем шапку отчета с названиями колонок (Город, Банк, КорСчет).Заполнение ячеек шапки оставляем по умолчанию Текст. Выделяем строки шапки и назначаем Имя области через меню Таблица-Имена-Назначить имя. В дальнейшем в коде через имя области будем выводить шапку отчета и сами данные.
- Добавляем строки, соответствующие получаемым данным из справочника Банки. Назовем их пГород, пБанк и пКорсчет. Для каждой ячейки Заполнение указываем “Параметр”. Выделяем ячейки параметры и назначаем имя области “Строки”
- Назначаем шрифты, ширину и высоту ячеек, выбираем окантовку ячеек итп. Для форматирования макета отчета служит специальная панель “Форматирование”
- Создаем Форму отчета. В группе формы, напротив Формы отчета нажимаем на значек лупы. При создании формы галку “Использовать систему компоновки данных” не ставим.
- После создания формы отчета добавляем команду формы “Сформировать” (Правый верхний угол вкладка “Команды формы”). Назначаем ей действие на клиенте. Добавляем на форму Кнопку через правую кнопку мыши. Привязываем к кнопке Имя Команды – “Сформировать”, которую только что сделали.
- Пишем обработчик события Команды Сформировать, из которой вызывается функция на сервере для получения данных отчета. Реквизит формы “Отчет” появляется автоматически после создания формы отчета. Отчет создан для примера, поэтому никаких отборов и сортировок в запросе нет и данные выводятся из справочника как есть.
Сохраняем отчет, открываем его в режиме 1с Предприятия 8.3 и нажимаем кнопку “Сформировать”.
Простой внешний отчет со Схемой Компоновки Данных (СКД)
- В конфигураторе 1с создаем новый внешний отчет через пункт меню Файл-Новый-Внешний отчет
- Создаем основную схему компоновки данных (СКД). Для этого нажимаем кнопку “Открыть схему компоновки данных”
- Слева добавляем Набор данных -запрос
- Открываем конструктор отчета. Создаем простейший запрос из объекта справочник. Из левой части (база данных) переносим Справочник “Банки” в поле Таблицы. Раскрываем справочник и переносим интересующие данные в правую часть Поля. Сохраняем запрос.
- Переходим на вкладку “Настройки”. Щелкаем правой кнопкой мыши на Отчете и выбираем “Свойства элемента пользовательских настроек”.
- Выбираем элементы которые будут доступны пользователю 1с для настройки параметров отчета(выбираемые поля, отбор, сортировка, условное оформление и группировки).
- Создаем Форму отчета и форму настроек отчета. При создании формы отчета обязательно ставим галку “Использовать систему компоновки данных”.
- Формы созданы, для простого отчета на СКД никакого написания кода не требуется.Сохраняем отчет.
- Открываем внешний отчет на СКД в режиме 1с Предприятия 8.3. Открываем настройки и выбираем нужные поля.
- Добавляем группировку по “Городу”. В настройках отчета переходим во вкладку “Группировка” и добавляем поле “Город”.
- Сохраняем настройки и нажимаем кнопку Сформировать.
Получаем отчет по справочнику на СКД с группировкой в соответствии со сделанными настройками.
Как прикрепить внешний отчет в программу 1с через дополнительные отчеты обработки.
Чтобы использовать полученные внешние отчеты можно открывать их с диска, либо подключить их к программе через дополнительные отчеты и обработки в нужную подсистему.
Форма подключения чаще всего находится в разделе Администрирование-Печатные формы и обработки -Дополнительные отчеты и обработки.
При создании отчетов с помощью системы компоновки данных (СКД) удобно выводить параметры отчета (хотя бы наиболее часто используемые) на форму, чтобы не заставлять пользователя копаться в стандартном окне настроек СКД.
Рассмотрим как это можно сделать на обычных формах 1С. Сразу оговоримся, что в этой статье будет рассматриваться именно вывод параметров на форму, т.е. сами параметры в СКД уже должны быть созданы.
Существует два способа вывода параметров СКД на обычную форму:
- вывод таблицы настроек параметров целиком
- вывод отдельных параметров в виде полей ввода.
Таблица настройки параметров, выводимая на форму, аналогична таблице настройки параметров, генерируемой средствами СКД. Для ее вывода на форму нужно создать элемент управления ТабличноеПоле, у которого в свойстве Данные указать КомпоновщикНастроек.Настройки.ПараметрыДанных
При этом пользователю будут показаны все параметры СКД, у которых не установлено ограничение доступности.
Однако, в ряде случаев этот способ может показаться не столь красивым и не очень удобным для пользователя. Рассмотрим, как вывести на форму параметры СКД по отдельности в виде обычных полей ввода.
- Создадим реквизиты отчета, соответствующие параметрам. В нашем примере это будут реквизиты ДатаНачала, ДатаОкончания, Организация. Установим у них соответствующие типы данных.
- Создадим на форме поля ввода для каждого из параметров и свяжем их через свойство Данные с реквизитами отчета. Для каждого поля ввода хорошо бы рядом создать надпись с названием параметра, чтобы пользователь понимал, какой параметр он редактирует.
- Для каждого поля ввода нужно создать процедуру для обработчика событий ПриИзменении, которая будет устанавливать выбранное пользователем значение в параметры СКД. Я в примере создал одну процедуру и назначил ее на события изменения всех трех полей ввода. То есть при изменении одного параметра происходит переустановка всех трех. С точки зрения быстродействия это, скорее всего, не эффективно, но, т.к. параметров не много, разница не заметна. При большом количестве параметров стоит выводить установку каждого в отдельную процедуру. Итак, код процедуры для обработчика ПриИзменении будет выглядеть следующим образом:
Процедура ПараметрыПриИзменении ( Элемент ) ПараметрДатаНач = КомпоновщикНастроек . Настройки . ПараметрыДанных . Элементы . Найти ( "НачалоПериода" ) ; //Поиск производится по имени параметра СКД
ПараметрДатаНач . Использование = Истина ; //Параметр будет использоваться при отборе
ПараметрДатаНач . Значение = ДатаНачала ; //Параметру присваивается значение реквизита отчета
ПараметрДатаКон = КомпоновщикНастроек . Настройки . ПараметрыДанных . Элементы . Найти ( "КонецПериода" ) ;
ПараметрДатаКон . Использование = Истина ;
ПараметрДатаКон . Значение = КонецДня ( ДатаОкончания ) ;
ПараметрОрг = КомпоновщикНастроек . Настройки . ПараметрыДанных . Элементы . Найти ( "Организация" ) ;
ПараметрОрг . Использование = Истина ;
ПараметрОрг . Значение = Организация ;
Читайте также: