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