Основной реквизит принимающей формы имеет тип КомпоновщикНастроекКомпоновкиДанных; параметры обрабатывает стандартное расширение формы.
Где и как запускать
Клиентский и контекстный серверный модули своих общих управляемых форм.
Подготовка
В своей учебной конфигурации создайте Отчеты → УчебныеКнигиСКД. У отчёта откройте ОсновнаяСхемаКомпоновкиДанных и сохраните её макетом ОсновнаяСхемаКомпоновкиДанных.
В конструкторе СКД создайте источник Local и набор-запрос Книги. Вставьте приведённый запрос двух константных строк; это не чтение рабочих справочников. Доступные поля Наименование, Количество, Сумма заполните автоматически.
В настройках схемы создайте вариант Подробно: выбраны Наименование, Количество, Сумма; структура — группировка Детальные записи. Второй вариант Кратко: Наименование и Сумма, также Детальные записи. Первым оставьте Подробно; у обоих задайте понятное представление.
Создайте собственную общую УПРАВЛЯЕМУЮ форму УчебныеНастройкиКниг. Реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных отметьте ОСНОВНЫМ. Это существенно: обычный неосновной реквизит не делает форму формой компоновщика.
В принимающей форме перетащите из дерева реквизита таблицы Компоновщик.Настройки.Отбор, Компоновщик.Настройки.Выбор, Компоновщик.ПользовательскиеНастройки. Добавьте команду ЗакрытьУчебныеНастройки с дополнительным клиентским обработчиком. Не переинициализируйте основной компоновщик в ПриСозданииНаСервере: параметры принимает его стандартное расширение.
Отдельная собственная вызывающая общая управляемая форма содержит основной клиентский блок и две серверные процедуры / функции. Источник на клиенте создаётся по настоящему адресу своей схемы; хранение связано с уникальным идентификатором вызывающей формы.
Все четыре параметра передаются согласованно для одной схемы. При ручном изучении конкретного параметра сравнивайте его назначение, а не заменяйте остальные несовместимыми настройками другого отчёта. Принимающая форма только редактирует настройки в памяти, не формирует и не записывает отчёт.
&НаКлиенте
Процедура ОткрытьСвоиНастройкиКниг(Команда)
Данные = СвоиПараметрыФормыНастроек();
Параметры = Новый Структура;
Параметры.Вставить("ИсточникДоступныхНастроек", Новый ИсточникДоступныхНастроекКомпоновкиДанных(Данные.АдресСхемы));
Параметры.Вставить("Настройки", Данные.Настройки);
Параметры.Вставить("ПользовательскиеНастройки", Данные.ПользовательскиеНастройки);
Параметры.Вставить("ФиксированныеНастройки", Данные.ФиксированныеНастройки);
ОткрытьФорму("ОбщаяФорма.УчебныеНастройкиКниг", Параметры, ЭтаФорма, Истина);
КонецПроцедурыВызывающая форма: подготовить свою схему и согласованные объекты настроек
&НаСервере
Функция СвоиПараметрыФормыНастроек()
Схема = Отчеты.УчебныеКнигиСКД.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
Настройки = Схема.НастройкиПоУмолчанию;
ДобавитьСвойОтбор(Настройки, "Количество", ВидСравненияКомпоновкиДанных.Больше, 0);
Настройки.Отбор.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
Настройки.Отбор.ПредставлениеПользовательскойНастройки = "Количество своих книг";
Компоновщик.ЗагрузитьНастройки(Настройки);
Фиксированные = Новый НастройкиКомпоновкиДанных;
ДобавитьСвойОтбор(Фиксированные, "Сумма", ВидСравненияКомпоновкиДанных.Больше, 500);
Результат = Новый Структура;
Результат.Вставить("АдресСхемы", ПоместитьВоВременноеХранилище(Схема, УникальныйИдентификатор));
Результат.Вставить("Настройки", Компоновщик.ПолучитьНастройки());
Результат.Вставить("ПользовательскиеНастройки", Компоновщик.ПользовательскиеНастройки);
Результат.Вставить("ФиксированныеНастройки", Фиксированные);
Возврат Результат;
КонецФункцииВызывающая форма: собственное условие по настоящему полю схемы
&НаСервере
Процедура ДобавитьСвойОтбор(Настройки, ИмяПоля, Сравнение, Значение)
Элемент = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
Элемент.ВидСравнения = Сравнение;
Элемент.ПравоеЗначение = Значение;
Элемент.Использование = Истина;
КонецПроцедурыПринимающая форма с основным Компоновщик: кнопка закрытия
&НаКлиенте
Процедура ЗакрытьУчебныеНастройки(Команда)
Настройки = Компоновщик.ПолучитьНастройки();
Сообщить("Полных элементов отбора: " + Строка(Настройки.Отбор.Элементы.Количество()));
Закрыть(Настройки);
КонецПроцедурыРазбор по шагам
Подготовьте собственный отчёт и именно форму с основным компоновщиком.
Получите его полные, пользовательские и фиксированные настройки вместе с источником.
Откройте свою форму и проверьте доступные поля / отборы.
Как проверить результат
Источник получает схему по адресу временного хранилища. Поэтому в редакторах доступны именно Наименование, Количество, Сумма собственной схемы, а не поля произвольного рабочего отчёта.
Ключи ИсточникДоступныхНастроек, Настройки, ПользовательскиеНастройки, ФиксированныеНастройки — стандартные параметры этого расширения. Они не объявляются заново как произвольные реквизиты с такими же именами.
Кнопка закрытия возвращает полные настройки вызывающему коду; этот краткий опыт не обещает автоматическую запись или переформирование отчёта владельца. BSL и формы при сборке HTML не запускались.
Ожидаемый результат
Есть согласованный источник и принимающая форма правильного основного типа, а не набор одноимённых самодельных полей.
На что обратить внимание
Не используйте этот маршрут для формы, у которой основной реквизит ТаблицаЗначений / обычная Структура.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.