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




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

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

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

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

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

 

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

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

14 Comments

  1. Xershi

    Так в чем прикол? Варианты СКД можно и без управляемой формы менять. Настроил 1 раз сохранил и передал дальше. Базовая версия всегда сохраняется, а модифицировать может каждый.

    Reply
  2. nomadon

    в том что внешние отчеты можно открывать в управляемой форме, правда как раз варианты отчетов тут видимо не предусмотрены

    Reply
  3. anig99

    (1) Xershi, прикол в том, чтобы в обычном интерфейсе открывать управляемую форму для внешнего отчета, чтобы пользоваться удобными пользовательскими настройками, а не рисовать форму для каждого отчета.

    Reply
  4. anig99

    (2) nomadon, варианты отчетов работают.

    Reply
  5. Xershi

    (3) так а обычная кнопка настройки этого не дает?

    Reply
  6. anig99

    (5) Xershi, кнопка настройки открывает отдельное окно с кучей настроек и вкладок, в которых обычный пользователь легко путается. Пользовательские настройки позволяют в одном месте собрать все значимые для пользователя настройки в одном месте: отборы, параметры, сортировка, поля и т.д. Причем выводить можно как отдельные строки, так и все сразу. На разные уровни группировки тоже. Причем этот набор пользовательских настроек можно менять в зависимости от вариантов.

    Reply
  7. Xershi

    (6) это единственный плюс данного решения. Но я так понял внедрить в конфигурацию такой отчет не получится, если база на обычных формах?

    Reply
  8. anig99

    (7) Xershi, если 1с запускается в режиме обычного приложения, то открыть управляемую форму объекта (в т.ч. отчетов) можно только в том случае, если объект присутствует в конфигурации. Т.е. открыть управляемую форму внешнего отчета в обычно приложении нельзя. Единственный способ, который я нашел — это добавление в конфигурацию собственных общих управляемых форм, которые содержат необходимый код для работы с внешними отчётами. Ещё точнее будет сказать, что форма получает в качестве параметров схему СКД и заполняется на основе этой схемы. Пользовательские настройки, на самом деле, это очень большое преимущество управляемой формы надо обычной формой СКД. Это ускоряет настройку отчета пользователю при минимизации работы программиста.

    Reply
  9. anig99

    (7) Xershi, внедрить получится, если в конфигурации разрешено открывать управляемые формы в обычном режиме

    Reply
  10. Xershi

    (8) ну тут же опять. Если пользователь умеет пользоваться настройками, то вытаскивание этих настроек на форму не играет ни какой роли, а скорее только ограничивает формально его возможности по модификации. Т.к. все равно, если нужно будет что-то поменять, то придется перенастраивать форму в предприятии.

    Так что это просто хотелка юзера. Я бы таким не занимался. Статику сделал, если бы нужно было ограничить права.

    Reply
  11. anig99

    (10) Xershi, а если схема на СКД очень сложная? Когда в нём несколько таблиц и на каждую таблицы отдельные отборы. Нужно лезть на каждый уровень схемы отдельно. Тоже самое с показателями.

    Опять-таки если нужно быстро получить отчет, то вывод основных полей на форму в одно место сокращает число щелчков. Ситуация: основные настройки отчета. Параметры: Дата1, Дата2; Отбор: Контрагент.

    Количество щелчков для настройки:

    Обычная форма: Настройки(1) + Параметры Дата1 Дата2 (2) + Отбор(1) + Контрагент (1) + Ок(1) = 7

    Управляемая с настроенными пользовательскими полями: Параметры Дата1, Дата2 (2) + Контрагент(1) = 3

    Выгода в 4 клика, т.е. настройка отчета происходит раза в 2 быстрее.

    Reply
  12. anig99

    (10) Xershi, и да. пользовательские настройки в управляемой форме — это штатная функция. Она не отменяет остальные настройки. Пользователь точно также может нажать Изменить вариант и получить самую полную форму для настроек.

    Reply
  13. mdSerg

    Если обычное приложение, то

    Процедура или функция с указанным именем не определена (ОткрытьФорму)

    Reply
  14. practik1c

    Отличная идея. Пригодилось, спасибо!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *