1С СКД. Программный запуск отчета с открытием и настройкой.
Одна из задач автоматизации — ускорение работы пользователя, что во многом достигается путем сокращения повторяющихся рутинных действий. У многих пользователей есть постоянные отчеты, для открытия которых они находят команду в меню, вводят отборы и параметры в открывшейся форме, нажимают «сформировать». В таких случаях разработчик 1С может создать команды программного запуска отчета с открытием и настройкой, что позволит сразу получить готовый отчет, а механизм системы компоновки данных, называемый в сокращении СКД, представляет ему для этого обширный инструментарий. В этой статье мы познакомимся с несколькими методами программного запуска отчета с открытием и различной настройкой, из которых каждый сможет выбрать наиболее подходящий.
Открытие формы отчета с помощью ПолучитьФорму и расширения формы отчета.
Сначала получаем форму.
Если отчет хранится в базе тогда выполняем на клиенте код:
Если нужен не «вариант по умолчанию»
Далее получаем настройки:
Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.
Загружаем измененные настройки в компоновщик
Открытие формы отчета с помощью ОткрытьФорму и расширения формы отчета.
Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:
Программный вывод СКД в табличный документ и таблицу значений.
Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.
Код выполняется на сервере.
Получение локального макета
Получение макета произвольного отчета
Получение макета во внешней обработке
Получение макета из внешней обработки или отчета
Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:
Мы можем создать новый компоновщик настроек на основе схемы и получить настройки из него.
Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.
И когда будем формировать
Объявляем создаем необходимые объекты:
Создаем макет компоновки с помощью компоновщика макета:
Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:
Инициализируем процессор компоновки данных
Создаем процессор вывода:
Для вывода в таблицу значений используется другой процессор вывода:
Запускаем процесс вывода:
Теперь мы можем проводить нужные операции с полученными данными.
Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.
Возможности настройки Схемы Компоновки Данных и Компоновщика Настроек СКД при программном формировании.
При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.
Или если с добавлением нового параметра
Также при получении настроек можно выбрать не «настройки по умолчанию», а один из вариантов настроек.
Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.
Параметры
Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:
Добавление параметра делается следующим образом
Отбор
У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.
Этот код установит значение для отбора, а если такого отбора нет в настройках, то добавит. В случае если точно известно, есть или нет такой отбор — то код можно упростить.
Структура
Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.
Резюме
Система компоновки данных была создана для ускорения разработки отчетов и упрощения работы пользователей. Программные изменения помогают усилить этот эффект. Программист может создать выгрузки и по сути свои отчеты на основании типовых отчетов. К примеру, выгрузка заработной платы в управленческую базу. Структура базы может сильно изменена, но поля в отчете “Расчетная ведомость Т-51” будут называться так же, и сам отчет вряд ли переименуется. Да и если что-то переименуется — выгрузку исправить будет очень просто.
Программист может упростить работу пользователя по вводу параметров и отборов если есть некоторая закономерность в них, но они всё таки не фиксированы. К примеру, сравнительный отчет по продажам за этот месяц этого года и аналогичные месяца трех предыдущих годов.
Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).
Форма отчета СКД
На форме ниже наименования отчета, при создании формы, программным способом добавляются поля: параметры и отборы СКД, у которых установлена пометка «Быстрый доступ». Состав полей и вид сравнения (равно, больше/меньше, в списке, в группе…) определяется на этапе конфигурирования или в форме настроек.
Обратите внимание на стандартные роли ДобавлениеИзменениеВариантовОтчетов, ЧтениеВариантовОтчетов, БазовыеПраваБСП, СохранениеДанныхПользователя, ДобавлениеИзменениеЛичныхВариантовОтчетов. От них зависит внешний вид и возможности работы.
Посмотрим на командную панель:
Кнопка 1. Сформировать в фоновом режиме. Возможен замер времени выполнения(APDEX).
Кнопка 2. Форма настроек. Управление отборами, внешним видом элементов формы и структурой отчета (список, таблица).
Кнопка 3. Управление вариантами отчета. Сохранение пользовательских настроек. (Права и параметры имеют значение)
Кнопка 11. Позволяет управлять рассылками отчетов, создать рассылку, используя текущие настройки СКД. То есть настройки отчета сохраняются в справочник рассылки. Если в конфигурации отсутствует подсистема рассылки отчетов – кнопка не видна.
Допустим, мы выполняем код ОткрытьФорму(«Отчеты.Ведомость.Форма», ПараметрыОткрыть); Рассмотрим избранные свойства структуры «ПараметрыОткрыть».
Структура содержит отбор, который будет установлен при формировании отчета. В документации ИТС отсутствует. Это наш секрет :))
Вариант формирования отчета. В документации ИТС отсутствует. Это наш секрет :)) Если отсутствует – используется первый из вариантов в алфавитном порядке.
Установлена ИСТИНА – есть возможность выбора вариантов В документации отсутствует. Возможно, устарел.
параметры печати табличного документа: ПолеСверху, ПолеСлева, ПолеСнизу, ПолеСправа, ОриентацияСтраницы, АвтоМасштаб, МасштабПечати
Первый способ: Чтобы добавлять код, хорошо использовать переопределяемые модули. В конфигурации УТ для ФормыОтчетов предусмотрены процедуры:
Порядок выполнения процедур при открытии:
Порядок выполнения процедур по кнопке «Сформировать»:
&НаКлиенте:
1) ОтчетСкомпоноватьРезультат()
2) Сформировать()
&НаСервере:
3) РезультатФормированияОтчета(ФормированиеПриОткрытии, Непосредственно)
4) ПроверитьЗаполнение()
5) ОбработкаПроверкиЗаполненияНаСервере()
6) ЗагрузитьРезультатФормированияОтчета()
Второй способ: если мы хотим изменить какие-то свойства формы, например ограничить отбор в списке поля (1) или выполнить дополнительные действия при выборе значения в поле (2), нам нужно копировать объект метаданных ОбщиеФормы – ФормаОтчета и вставить его в свой отчет. (Не забывайте про общие формы ФормаНастроекОтчета и ФормаВариантаОтчета). Переименуем форму, чтобы в ней не было ссылок на модули ОбщиеФормы – ФормаОтчета. После этого можно смело изменять код. Но нужно учитывать, что поля формы создаются автоматически и называются иначе, чем в схеме СКД.
1. Для изменения свойства поля, найдем в модуле формы процедуру ВывестиЭлементыНастройки и посмотрим в отладчике, как происходит добавление элементов. В переменной СвойстваНастройки хранится связь между полем СКД и идентификатором. Запомним ИмяЭлемента в цикле обработки переменной СвойстваНастройки, потом обработаем.
2. Для обработки выбора значения в форме предусмотрены подключаемые процедуры:
Поставим точку останова – увидим, как происходит обработка выбора значения.
Дополнительные процедуры, которые тоже могут пригодиться:
Пользовательские настройки системы компоновки данных
И так, продолжаем тему настроек отчетов, построенных на базе СКД. Для тех, кто не читал первые статьи, ссылки ниже:
В данной статье поговорим про пользовательские настройки.
Что же это такое, зачем они нужны и чем отличаются от настроек варианта?
Дело в том, что настройки варианта отчета достаточно сложны для пользователя. Много различных закладок, сложная структура отчета – не каждый рядовой сотрудник сможет во всем этом разобраться:
По этой причине, разработчики решили упростить работу для конечных пользователей отчетов, и создать дополнительную сущность, так называемые пользовательские настройки, которые представляют собой подмножество настроек вариантов отчетов. Разработчик отчета определяет сам, что, и в каком объеме будет доступно пользователям:
Несмотря на то, что на программном уровне, пользовательские настройки – это отдельная ветвь компоновщика настроек, они не могут существовать без привязки к настройкам варианта. На программном уровне связь выполняется по идентификатору пользовательской настройки.
Работа с отчетами в пользовательском режиме
Само собой разумеется, что пользовательские настройки доступны для редактирования в режиме 1С-предприятия. Они сохраняются автоматически при работе пользователей в специальном системном хранилище пользовательских настроек (его можно переопределить на уровне конфигурации в целом). Редактирование пользовательских настроек не приводит к необходимости сохранять новый или измененный вариант отчета, в отличие от редактирования настроек самого варианта в пользовательском режиме.
Настройки вариантов отчетов, также доступны в режиме работы пользователей. То-есть, «продвинутые» сотрудники имеют возможность редактировать, или сохранять новые варианты отчета, а также определять доступные «пользовательские» настройки для остальных пользователей отчета.
Как правило, в пользовательские настройки выносятся наиболее часто используемые настройки варианта. Сами же настройки варианта можно вообще скрыть от пользователей, чтобы не загромождать их лишней информацией.
Сам интерфейс работы с настройками вариантов и пользовательскими настройками зависит от используемой конфигурации и наличия специальных форм для отчетов.
Формы, для отчетов на базе СКД система генерирует автоматически. Однако, при необходимости, можно создать собственные формы. Для отчетов доступны следующие виды форм:
Например, в демонстрационной конфигурации (Управляемое приложение), формы для отчетов не указаны. Сгенерированная автоматически форма отчета выглядят так:
После кнопки «Сформировать» расположена кнопка открытия списка доступных вариантов отчетов.
Далее расположена кнопка открытия формы настроек (это именно пользовательские настройки, состав и определение которых будет описано ниже).
Под этими кнопками расположен раздел «быстрых» пользовательских настроек, о которых мы будем говорить позже.
Что касается настройки варианта отчета, или сохранение нового, эти действия доступны через меню «Еще». Также, далее в этом меню есть команды для принудительного сохранения и применения пользовательских настроек. Напомню, пользовательские настройки сохраняются автоматически при закрытии формы отчета.
Пункт меню «Установить стандартные настройки» позволяет вернуться к изначально заданным настройкам варианта отчета.
На заметку . Команду «Установить стандартные настройки» целесообразно использовать в случае, если в процессе работы изменяются настройки варианта отчета. Так как они могут быть «перекрыты» сохраненными ранее пользовательскими настройками.
Есть возможность указать общие формы, которые будут применятся по умолчанию для всех отчетов конфигурации.
В типовых конфигурациях семейства ЕРП, существуют общие предопределенные формы для самого отчета и настроек, заданные на уровне конфигурации в целом:
На ряду с другими дополнительными возможностями, типовая форма настроек позволяет выполнять редактировать как пользовательские настройки так и настройки вариантов отчетов. Переход осуществляется нажатием на кнопку «Расширенный» в настройках отчета:
Также, в выпадающем списке по кнопке «Еще» формы отчета, можно выполнить работу с вариантами отчетов и с сохраненными пользовательскими настройками.
В типовой конфигурации бухгалтерии 3.0, также заданы общие формы на уровне конфигурации в целом. Но во многих отчетах, формы переопределены непосредственно для этих отчетов.
Определение состава пользовательских настроек
И так, поговорим о том, каким образом можно включить те или иные настройки варианта отчета в пользовательские настройки.
Определение состава на уровне структуры
В пользовательские настройки можно включить целиком целые разделы настроек варианта, которые будут влиять на весь отчет в целом. Эти действия выполняются из окна структуры настроек:
Доступны для включения следующие разделы:
При добавлении группировок в пользовательские настройки, есть одна особенность. Группировки добавляются в виде списка, а не иерархической структуры, как они определены в настройках варианта:
Такая настройка соответствует простой структуре, где в первую группировку по списку входит следующая и так далее:
С одной стороны, это удобно, так как можно быстро выбрать нужные группировки и их последовательность. Причем, можно отключить использование первых группировок, и это не повлияет на вывод остальных. Однако, настроить более сложную структуру группировок таким образом нельзя, и это существенное ограничение.
Теперь, что касается быстрого доступа.
Это те настройки, которые можно редактировать непосредственно на форме самого отчета. Существует три варианта добавления настроек в пользовательские настройки:
В параметре «Режим редактирования» можно указать один из выше указанных вариантов, и это будет отражено на расположении настроек.
Разделы настроек можно включить в пользовательские не только для всего отчета в целом, как было описано выше, но и для отдельных уровней структуры:
Такие настройки будут влиять только на тот уровень структуры отчета, для которого они используются. Состав возможных настроек для группировки включает дополнительные пункты:
Определение состава на уровне отдельных элементов
Помимо включения в пользовательские настройки разделов целиком, есть возможность включить отдельные элементы следующих разделов:
Так же как и для разделов целиком, можно включать в пользовательские настройки отдельные элементы для всего отчета в целом и для конкретных группировок. Для выполнения этих действий используется кнопка или одноименный пункт контекстного меню «Свойство элемента пользовательских настроек»:
В открывшимся окна можно указать режим редактирования и представление настройки:
Если задано представление, наименование настройки будет изменено, а также будет доступно для выбора только значение данной настройки.
Например: если это отбор, не будет возможности выбрать вид сравнения. Если это условное оформление, не будет возможности выбрать условие оформления и поля, к которым оно будет применено.
Для элементов отборов и условного оформления, можно задать дополнительное представление непосредственно в табличной части для отборов или оформления. Для отображения дополнительного представления, необходимо нажать на кнопку «Подробно»:
Обратите внимание: это представление не является представлением, которое описано выше, и у него другое назначение!
Если указано представление в табличной части, отборы или оформления будут выводиться в пользовательских настройках в виде флага (использовать / не использовать). Все характеристики, в этом случае полностью должен быть заданы в настройках варианта.
Как было описано в предыдущей статье про настройки вариантов, на закладке «Отборы» можно создать группы отборов, для объединения различных отборов по логическому И, ИЛИ и НЕ. Такие группы целиком, также можно включить в пользовательские настройки. Можно задать для группы оба представления, описанные выше.
Просмотреть все пользовательские настройки можно по кнопке «Предварительный просмотр пользовательских настроек» в окне структуры настроек:
Произвольное добавление настроек на форму отчета
Как указано выше, для отчетов на СКД можно не создавать специальных форм самого отчета и настроек. Формы генерируются автоматически. Однако, если в этом есть необходимость, можно создать собственные формы и выполнить произвольное размещение необходимых дополнительных элементов.
При создании собственной формы отчета необходимо иметь в виду, что форма обязательно должна содержать группу для отображение быстрых пользовательских настроек. Такая группа должны быть указана в свойстве формы «ГруппаПользовательскихНастроек»:
По мимо быстрых пользовательских настроек, в форме отчета на СКД можно вывести непосредственно таблицу полей отчета, таблицу отборов или таблицу порядка, связав ее с соответствующим разделом из настроек:
Если таким образом добавляются отборы, у таблицы будет присутствовать свойство «РежимОтображения». Оно влияет на то, какие отборы будут попадать в данную таблицу. Если «Режим отображения = Быстрый доступ», в таблицу попадут только те отборы, для которых в свойствах пользовательских настроек указано значение «Быстрый доступ».
Функциональные опции и настройки отчетов
Не забывайте о том, что в отображаемых данных отчетов, построенных на СКД учитываются значения функциональных опций.
Также ФО учитываются в настройках варианта отчета в режиме 1С-предприятие и в пользовательских настройках. Недоступные поля нельзя выбрать в настройках. А если ФО отключает объект целиком, в настройках варианта и в пользовательских настройках в пользовательском режиме нельзя будет выбрать не одно поле отключенного объекта.
Отдельно стоит сказать про параметризуемые функциональное опции. Это те ФО, место хранения которых «Справочник». Более подробно что такое параметризуемые ФО, и как они используются можно почитать в этой статье.
И так, для того, чтобы СКД смогла определить доступность полей, которые связаны с параметризуемыми ФО необходимо передать в схему параметр ФО. Для этого нужно добавить новый параметр на закладку «Параметры» схему компоновки и установить для него значение реквизита «Параметр функциональной опции»:
После установки такого параметра (по умолчанию в схеме или в пользовательском режиме), СКД будет определять видимость полей, привязанных к параметризуемым ФО.
На этом, я заканчиваю большую тему настроек компоновки: настройки вариантов, пользовательские настройки. Мы еще к ней вернемся, когда будем рассматривать программную работу с отчетом и с настройками.
В следующих статьях будут рассмотрены:
Для ознакомления с предыдущими статьями можно перейти по ссылкам:
Если статья Вам понравилась, ставьте плюс. Успехов в работе и хорошего настроения!
Как добавить типовую форму для СКД (для начинающих) (1С 8.3, управляемые формы)
Дано: 1С 8.3. Создан отчет на СКД (схема компоновки данных).
Задача: создать форму для данного отчета.
Предугадывая вопрос «зачем нужна такая простая инструкция?»:
Кастомизация СКД, нестандартная расшифровка, загрузка параметров и другие действия требуют наличия формы отчета. При создании СКД отчета по умолчанию форма не создается, в большинстве случаев это и не требуется. Однако при ситуациях, перечисленных выше, форму все же нужно создать.
Так выглядит в конфигураторе типовой отчет на СКД без формы:
Чтобы добавить типовую форму, нужно нажать на кнопку «Лупа» в поле «Форма отчета», как показано выше на скриншоте.
В открывшемся окне конструктора форм можно ничего не менять и просто нажать «Готово»:
В результате будет создана форма на базе СКД:
Визуально при запуске отчет будет выглядеть также, но теперь появилась возможность добавлять дополнительные обработчики событий в модуль формы:
Также наличие такой формы позволит вызвать открытие отчета из программного кода, например, из форм документов или справочников. Также при помощи обработки события расшифровки можно будет обрабатывать щелчок на поле отчета.
Программное получение формы настроек отчета
Вопрос-ответ Отзывов (5) В закладки
Добрый день. Помогите разобраться. Каким образом в отчете программно вызвать эту форму?!
Получилось вызвать всевозможные варианты и мастера настроек, и конструктора схемы компоновки, но эту форму получить так и не вышло.
5 Коммент.
Формируйте новую форму. При формировании укажите, что эта форма настроек отчета и все.
Может я не догоняю чего-то, но у меня эта СКД не является основной в отчете. А метод отчета ПолучитьФормуНастроек работает именно с основной СКД
Форма настроек СКД завязана на настройки КомпоновщикаНастроек, которы в свою очередь связан со СхемойКомпонокиДанных. Значит, чтобы достучаться до нужной формы настроек, нужно сделать следующее:
1. Получить в СхемуКомпонвкиДанных нужный макет типа СКД;
2. Инициализаировать КомпоновщикНастроек;
3. Загрузить в него настройки из СхемыКомпоновкиДанных;
Вот примерный текст кода:
СхемаКомпоновкиДанных = ПолучитьМакет(“ВашеИмяМакета”);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
ЭтотОбъект.ПолучитьФормуНастроек().Открыть();
Ну все логично, а если у нас нет отчета, а есть документ и в нем макет скд.
В внешнем отчете работало так
В крайнем случае можно создать новую форму (тип формы – “Форма настроек отчета” по умолчанию и без внесения изменений), подставить ее как форма настроек по умолчанию и вызывать при необходимости.