Две схемы СКД в одном отчете с пользовательскими параметрами

10.10.19

Разработка - СКД

Простая реализация разных по типу отчетов в одном. Применение нескольких схем компоновки с корректной передачей пользовательских параметров.

В инете множество примеров отчетов на нескольких схемах компоновки. Но не встречал вариантов с работающими пользовательскими параметрами, т.к. для корректной работы схем в компоновщик загружаются настройки по умолчанию. При загрузке в компоновщик настроек по умолчанию загружаются также и параметры по умолчанию, что не дает возможности указать их в пользовательских настройках(указанные параметры будут скидываться на параметры по умолчанию).

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

Пример реализации ниже:

Создаем два реквизита(булево). Реквизит Изменение выносим на форму - для смены Схемы компоновки. 

Соответственно создаем два макета, например я использовал в тестовой конфе следующие:

 

Код модуля формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
Отчет.ПроверкаНаИзменение = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ИзменениеПриИзменении(Элемент)
   
Отчет.ПроверкаНаИзменение = Истина;
КонецПроцедуры

 

Код модуля объекта отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

   
СтандартнаяОбработка = Ложь;
    Если
Изменение Тогда
       
СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
    Иначе
       
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    КонецЕсли;

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

   
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
   
ПроверкаНаИзменение = Ложь;

   
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
   
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
   
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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


Т.е. в процедуре ПриКомпоновкеРезультата() выбираем макет компоновки (если на форме установлена галка в реквизите Изменение, то выбирается схема компоновки Макет, иначе Основная схема).

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

Результат: работающие пользовательские параметры при смене схемы компоновки

 

Заранее извините, если баян, велосипед и т.п., :)

Вступайте в нашу телеграмм-группу Инфостарт

СКД Две схемы Начинающим

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    244686    1341    419    

1122

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    4694    262    shapa_pro    25    

64

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    15234    ovetgana    112    

105

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

01.07.2025    8961    krasnoshchekovpavel    5    

66

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8174    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15378    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    12994    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9398    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Zircool 193 10.10.19 13:31 Сейчас в теме
Для подобной задачи используют вложенные схемы https://its.1c.ru/db/pubcomplexreports#content:59:hdoc:h56
3. evgeni-red 107 10.10.19 15:22 Сейчас в теме
(1)Согласен, но в предложенном варианте достаточно просто добавить существующие схемы СКД.
2. leosoft 169 10.10.19 13:34 Сейчас в теме
Не пойму - при смене схемы надо автоматом изменить состав пользовательских настроек еще до
формирования отчета. Как Вы это делаете? И еще вопрос - насколько корректно в хранилище
запоминаются текущие настройки?
4. evgeni-red 107 10.10.19 16:08 Сейчас в теме
Напишите ваше сообщение
(2) При смене схемы формируется отчет на новой схеме с параметрами по умолчанию. При следующем формировании отчет сформируется с указанными параметрами. Тек настройки не запоминаются - мы же все время со сменой схемы грузим настройки по умолчанию
5. leosoft 169 10.10.19 18:40 Сейчас в теме
(4) Грузите когда? В момент формирования отчета, а не в момент смены схемы?
Bassgood; +1 Ответить
6. evgeni-red 107 14.10.19 12:27 Сейчас в теме
(5)
Настройки по умолчанию грузим в этой строчке, в момент формирования отчета - но только если изменилась схема :)
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
7. Melckor 02.04.20 14:00 Сейчас в теме
(2) Я для себя организовал следующим образом - так как схемы берут данные из разных источников на панель в форме добавил кнопку(формы обычные) и в действии кнопок прописал загрузку из необходимых схем
Процедура ДействияФормыДействие(Кнопка)
	ЭтотОбъект.ВариантОтчета = 1;
	ЭтотОбъект.СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КонецПроцедуры


Процедура ДействияФормыДействие1(Кнопка)
	ЭтотОбъект.ВариантОтчета = 2;
	ЭтотОбъект.СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1");
	ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КонецПроцедуры
Показать
8. kiruha 389 16.04.20 13:18 Сейчас в теме
Две разных схемы, а настройки одни ....
Мягкое с теплым - 2 в 1
9. user1513132 23.12.20 08:51 Сейчас в теме
(8)
Две разных схемы, а настройки одни .

Здравствуйте!
А вы не знаете как решить эту проблему?
10. F4RR3L 18.10.21 08:40 Сейчас в теме
Для обучающихся на заметку:
Следуя инструкции, можно получить ошибку: при нажатии кнопки "Изменение", нечего не происходит. Для исправления данной проблемы, нужно изменить Тип реквизита "Изменение". Выбрать "Отчет.Изменение". Тогда будет работать.
Не считая ошибки выше, у меня не понадобился код в модуле формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Отчет.ПроверкаНаИзменение = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ИзменениеПриИзменении(Элемент)
    Отчет.ПроверкаНаИзменение = Истина;
КонецПроцедуры
11. user1558189 08.02.23 22:49 Сейчас в теме
Thanks. It has been really useful for me.
Of course, it was difficult to translate from Cyrillic.
Для отправки сообщения требуется регистрация/авторизация