gifts2017

Управляемая форма внешнего отчета СКД в режиме неуправляемого приложения

Опубликовал Александр Медведев (anig99) в раздел Программирование - Инструментарий

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

Система компоновки данных очень удобна для написания отчетов. Но в обычных формах приходится для внешних отчетов каждый раз рисовать форму для удобной настройки отчета. При этом как минимум параметры и отборы приходится размещать на разные табличные части формы. Ну и так далее. Управляемая форма СКД даёт намного больше возможностей благодаря Пользовательским настройкам и вариантам отчета. Можно, конечно, внедрить свой отчет в конфигурацию, тогда его управляемую форму можно вызвать и в режиме обычного приложения, но тогда будет сложно менять их "на лету", не подвергая конфигурацию рискам динамического обновления. Опробовав множество вариантов, я пришел к выводу, что кое-какие дополнения к конфигурации всё же придется делать. Нужно добавить общие формы, которые будут использоваться внешними отчетами.

Выкладываю в виде cf. Для внедрения нужно сравнить и объединить, не забыть снять отметку с пункта Свойства. Для сохранения настроек используются штатные процедуры типовых конфигурации УПП или УТ. Нужно будет внести туда изменения в соответствии с текущей конфигурацией.

В самом внешнем отчете в модуле нужно вставить следующий код

Схема = ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ПараметрыДляПередачи = Новый Структура();
ПараметрыДляПередачи.Вставить("Схема", Схема);
ПараметрыДляПередачи.Вставить("НаименованиеОтчета", ЭтотОбъект.Метаданные().ПолноеИмя());
ПараметрыДляПередачи.Вставить("ПолноеНаименованиеОтчета", ЭтотОбъект.Метаданные().Представление());
ОткрытьФорму("ОбщаяФорма.mavОбщаяФормаОтчетаУправляемая", ПараметрыДляПередачи,,Истина)

 

В форме отчета добавить обработчик ПередОткрытием

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	Отказ = Истина;
КонецПроцедуры

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
УниверсальняУправляемаяФормаОтчета.cf
.cf 22,53Kb
09.11.15
17
.cf 22,53Kb 17 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Xer shi (Xershi) 09.11.15 15:52
Так в чем прикол? Варианты СКД можно и без управляемой формы менять. Настроил 1 раз сохранил и передал дальше. Базовая версия всегда сохраняется, а модифицировать может каждый.
2. Денис Харченко (nomadon) 09.11.15 19:38
в том что внешние отчеты можно открывать в управляемой форме, правда как раз варианты отчетов тут видимо не предусмотрены
3. Александр Медведев (anig99) 09.11.15 22:35
(1) Xershi, прикол в том, чтобы в обычном интерфейсе открывать управляемую форму для внешнего отчета, чтобы пользоваться удобными пользовательскими настройками, а не рисовать форму для каждого отчета.
4. Александр Медведев (anig99) 09.11.15 22:36
(2) nomadon, варианты отчетов работают.
5. Xer shi (Xershi) 10.11.15 08:46
(3) anig99, так а обычная кнопка настройки этого не дает?
6. Александр Медведев (anig99) 10.11.15 09:22
(5) Xershi, кнопка настройки открывает отдельное окно с кучей настроек и вкладок, в которых обычный пользователь легко путается. Пользовательские настройки позволяют в одном месте собрать все значимые для пользователя настройки в одном месте: отборы, параметры, сортировка, поля и т.д. Причем выводить можно как отдельные строки, так и все сразу. На разные уровни группировки тоже. Причем этот набор пользовательских настроек можно менять в зависимости от вариантов.
7. Xer shi (Xershi) 10.11.15 09:28
(6) anig99, это единственный плюс данного решения. Но я так понял внедрить в конфигурацию такой отчет не получится, если база на обычных формах?
8. Александр Медведев (anig99) 10.11.15 13:00
(7) Xershi, если 1с запускается в режиме обычного приложения, то открыть управляемую форму объекта (в т.ч. отчетов) можно только в том случае, если объект присутствует в конфигурации. Т.е. открыть управляемую форму внешнего отчета в обычно приложении нельзя. Единственный способ, который я нашел - это добавление в конфигурацию собственных общих управляемых форм, которые содержат необходимый код для работы с внешними отчётами. Ещё точнее будет сказать, что форма получает в качестве параметров схему СКД и заполняется на основе этой схемы. Пользовательские настройки, на самом деле, это очень большое преимущество управляемой формы надо обычной формой СКД. Это ускоряет настройку отчета пользователю при минимизации работы программиста.
9. Александр Медведев (anig99) 10.11.15 13:06
(7) Xershi, внедрить получится, если в конфигурации разрешено открывать управляемые формы в обычном режиме
10. Xer shi (Xershi) 10.11.15 13:07
(8) anig99, ну тут же опять. Если пользователь умеет пользоваться настройками, то вытаскивание этих настроек на форму не играет ни какой роли, а скорее только ограничивает формально его возможности по модификации. Т.к. все равно, если нужно будет что-то поменять, то придется перенастраивать форму в предприятии.

Так что это просто хотелка юзера. Я бы таким не занимался. Статику сделал, если бы нужно было ограничить права.
11. Александр Медведев (anig99) 10.11.15 14:23
(10) Xershi, а если схема на СКД очень сложная? Когда в нём несколько таблиц и на каждую таблицы отдельные отборы. Нужно лезть на каждый уровень схемы отдельно. Тоже самое с показателями.
Опять-таки если нужно быстро получить отчет, то вывод основных полей на форму в одно место сокращает число щелчков. Ситуация: основные настройки отчета. Параметры: Дата1, Дата2; Отбор: Контрагент.
Количество щелчков для настройки:
Обычная форма: Настройки(1) + Параметры Дата1 Дата2 (2) + Отбор(1) + Контрагент (1) + Ок(1) = 7
Управляемая с настроенными пользовательскими полями: Параметры Дата1, Дата2 (2) + Контрагент(1) = 3

Выгода в 4 клика, т.е. настройка отчета происходит раза в 2 быстрее.
12. Александр Медведев (anig99) 10.11.15 21:28
(10) Xershi, и да. пользовательские настройки в управляемой форме - это штатная функция. Она не отменяет остальные настройки. Пользователь точно также может нажать Изменить вариант и получить самую полную форму для настроек.
13. Serg S (mdSerg) 06.07.16 13:37
Если обычное приложение, то
Процедура или функция с указанным именем не определена (ОткрытьФорму)
14. Юрий Ачкасов (practik1c) 11.10.16 16:57
Отличная идея. Пригодилось, спасибо!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа