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




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

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

Выкладываю в виде 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 не будет опубликован. Обязательные поля помечены *