Как вывести и настроить редактирование параметров СКД на обычной форме в 1С 8.3?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При разработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются с различиями в поведении обычных и управляемых форм. На управляемой форме механизм быстрых пользовательских настроек (флаг Включать в пользовательские настройки) создает удобную панель параметров автоматически. Однако в толстом клиенте на обычной форме эти настройки не генерируются автоматически, а при попытке вывести коллекцию ПользовательскиеНастройки в табличное поле значения параметров блокируются для редактирования. Разберем причины такого поведения и рассмотрим рабочие способы настройки интерфейса отчета.

Почему пользовательские настройки не работают автоматически на обычной форме?

Выясним причину: механизм автоматического формирования панели быстрых настроек и расширение формы для коллекции ПользовательскиеНастройкиКомпоновкиДанных штатно реализованы только для управляемого интерфейса. В обычных формах табличное поле при прямой привязке к свойству КомпоновщикНастроек.ПользовательскиеНастройки может отобразить перечень строк, но не активирует встроенные элементы управления для редактирования значений.

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

Способ 1. Использование табличных полей с прямым указанием коллекций настроек

Рассмотрим основной и самый удобный способ отображения параметров и отборов на форме отчета. Для этого свяжем элементы управления формы с конкретными коллекциями компоновщика настроек, для которых в платформе предусмотрены специализированные расширения табличного поля.

Разберем по шагам порядок действий:

  1. Откроем или создадим обычную форму отчета.
  2. Добавим на форму элемент управления ТабличноеПоле для параметров.
  3. В свойствах созданного табличного поля найдем реквизит Данные и укажем путь: КомпоновщикНастроек.Настройки.ПараметрыДанных. Платформа автоматически назначит табличному полю расширение для работы со списком параметров, что позволит пользователю редактировать их значения.
  4. Если в отчете требуются отборы, добавим второе ТабличноеПоле и в свойстве Данные укажем: КомпоновщикНастроек.Настройки.Отбор.
  5. Для корректного отображения колонок настроим состав колонок табличного поля (например, использование, имя параметра, значение).

Проанализируем важный нюанс: если форма отчета создается вручную с нуля, компоновщик настроек требует обязательной инициализации доступными настройками схемы. В модуле формы в обработчике события ПриОткрытии пропишем следующий код:


Процедура ПриОткрытии()
    Если Не КомпоновщикНастроек.Инициализирован() Тогда
        КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КонецЕсли;
КонецПроцедуры

Способ 2. Вывод параметров через отдельные элементы управления

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

Разберем алгоритм реализации:

  1. Добавим на форму реквизиты (например, ПериодОтчета, ОрганизацияОтбора) и соответствующие им поля ввода.
  2. Перед компоновкой результата или при изменении полей передадим выбранные значения в параметры СКД программно.

Посмотрим на пример процедуры установки параметров в модуле формы:


Процедура УстановитьПараметрыСКД()
    Настройки = КомпоновщикНастроек.Настройки;
    
    // Установка значения параметра данных
    ПараметрНачало = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    Если ПараметрНачало <> Неопределено Тогда
        ПараметрНачало.Значение = ПериодОтчета.ДатаНачала;
        ПараметрНачало.Использование = Истина;
    КонецЕсли;
    
    // Альтернативный быстрый метод установки значения
    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", ПериодОтчета.ДатаОкончания);
КонецПроцедуры

Альтернативные варианты

Рассмотрим еще два подхода, которые могут сэкономить время при разработке:

  1. Использование управляемой формы в обычном приложении: если в свойствах конфигурации включен режим Использовать управляемые формы в обычном приложении, в отчет можно добавить управляемую форму. В этом случае механизм пользовательских настроек заработает автоматически со всеми стандартными возможностями платформы 8.3.
  2. Типовой шаблон отчета: в типовых конфигурациях на обычных формах часто используется готовый универсальный отчет или общая форма отчета, где панель быстрых настроек уже реализована на уровне типовых библиотек конфигурации.
← На главную