Вывод параметров отчета на СКД на обычную форму 1С

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

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

Существует два способа вывода параметров СКД на обычную форму:

  • вывод таблицы настроек параметров целиком
  • вывод отдельных параметров в виде полей ввода.

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

Вывод параметров отчета на СКД на обычную форму 1С

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

Вывод параметров отчета на СКД на обычную форму 1С

Однако, в ряде случаев этот способ может показаться не столь красивым и не очень удобным для пользователя. Рассмотрим, как вывести на форму параметры СКД по отдельности в виде обычных полей ввода.

  1. Создадим реквизиты отчета, соответствующие параметрам. В нашем примере это будут реквизиты ДатаНачала, ДатаОкончания, Организация. Установим у них соответствующие типы данных.
  2. Создадим на форме поля ввода для каждого из параметров и свяжем их через свойство Данные с реквизитами отчета. Для каждого поля ввода хорошо бы рядом создать надпись с названием параметра, чтобы пользователь понимал, какой параметр он редактирует.
  3. Для каждого поля ввода нужно создать процедуру для обработчика событий ПриИзменении, которая будет устанавливать выбранное пользователем значение в параметры СКД. Я в примере создал одну процедуру и назначил ее на события изменения всех трех полей ввода. То есть при изменении одного параметра происходит переустановка всех трех. С точки зрения быстродействия это, скорее всего, не эффективно, но, т.к. параметров не много, разница не заметна. При большом количестве параметров стоит выводить установку каждого в отдельную процедуру. Итак, код процедуры для обработчика ПриИзменении будет выглядеть следующим образом: Процедура ПараметрыПриИзменении(Элемент)ПараметрДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«НачалоПериода»);//Поиск производится по имени параметра СКД
    ПараметрДатаНач.Использование =Истина;//Параметр будет использоваться при отборе
    ПараметрДатаНач.Значение  = ДатаНачала;//Параметру присваивается значение реквизита отчета

    ПараметрДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«КонецПериода»);
    ПараметрДатаКон.Использование =Истина;
    ПараметрДатаКон.Значение  = КонецДня(ДатаОкончания);

    ПараметрОрг = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«Организация»);
    ПараметрОрг.Использование =Истина;
    ПараметрОрг.Значение  = Организация;

    КонецПроцедуры

Источник: https://chel1c.ru/%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2-%D0%BE%D1%82%D1%87%D0%B5%D1%82%D0%B0-%D1%81%D0%BA%D0%B4-%D0%BD%D0%B0-%D1%84%D0%BE%D1%80%D0%BC%D1%83/?ysclid=mfciazrtm814367887