Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 04:16

Две СКД в одном отчете

Автор Funt432286, 15 мая 2024, 11:22

0 Пользователей и 1 гость просматривают эту тему.

Funt432286

Всем доброго времени суток!

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

Может кто сталкивался с таким и может подсказать.

P.S. Вариант сделать отдельно два разных отчета не подходит!

Максим75

Funt432286, поищите в интернете, много описаний как организовать запуск нужного макета СКД в зависимости от выбора чего-то.
Смысл такой, что в предопределенной процедуре ПриКомпоновкеРезультата руками все прописываете.

Funt432286

Максим75,

Да код я нашел, единственное не могу понять как передать параметры начала и конца периода из реквизита формы?

И как вообще в передавать данные для параметров отбора в запрос СКД

//Получаем схему из макета
СхемаКомпоновкиДанных = ПолучитьМакет("Оборудоввание");

//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

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

//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();

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

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Максим75

Funt432286, посмотрите, когда-то извращался с динамическим выполнением отчета с несколькими макетами, может пригодится.
там как раз параметры загружаются.

Funt432286

Максим75,
Немного не могу разобраться какие данные и переменные где записываются


     УстановитьПараметрСКД(СхемаКомпоновкиДанных,"ДатаНачало", ДатаНачало);
УстановитьПараметрСКД(СхемаКомпоновкиДанных,"ДатаОкончания", ДатаОкончания);

В кавычках название данных из отчета, а последний параметр это реквизит с формы?

antoneus

Цитата: Funt432286 от 15 мая 2024, 11:52как передать параметры начала и конца периода из реквизита формы

Надо делать их не реквизитами формы, а реквизитами объекта, например.

Funt432286

antoneus, вернее, они реквизиты объекта Отчет (ошибся)

antoneus

Ну и в модуле объекта они будут доступны.

Funt432286

Funt432286,

почему то не передает параметр даты в запрос СКД

Реквизиты объекта : ДатаНачало, ДатаОкончания;
Параметры СКД : ДатаНачало, ДатаКонец;

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

УстановитьПараметрСКД(СхемаКомпоновкиДанных,"ДатаНачало", ДатаНачало);
УстановитьПараметрСКД(СхемаКомпоновкиДанных,"ДатаКонец", ДатаОкончания);


Максим75

Funt432286, смотрите, обычно на СКД сама платформа создает свои параметры с датой. У Вас на форме точно выведены реквизиты обработки? Ну проверьте пошагово, там не так много всего в обработке было.
У меня все работает, проверил.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск