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

Открытие и формирование отчета на СКД с передачей параметра из упр. формы дока

Автор |R|U|D|E|N, 19 дек 2011, 17:46

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

|R|U|D|E|N

Я ямортел, но там нет нечего связанного с параметрами отчета?

Klyacksa киньте пример установки значения параметра СКД если вам не сложно. Я возрощаюсь к этому вопросу уже не первый раз и все равно не могу разобраться.

|R|U|D|E|N

Вот последний мой вариант который тоже к сожалению не работает:

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

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

//Устанавливаем значение параметра
СхемаКомпоновкиДанных.Параметры.IDСвязи.Значение = "43n43x43P13x43xf43x13f";

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

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

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

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

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

Возврат ДокументРезультат;

has

Параметры установить чтоли? Это для обычного приложения, для управляемого думаю будет также.

Настройки = КомпоновщикНастроек.Настройки;
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы;

ПараметрНачалоПериода = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
ПараметрНачалоПериода.Значение = НачалоПериода;
ПараметрНачалоПериода.Использование = Истина;

|R|U|D|E|N

Спасибо has но вышеприведенный мною код выполняется не в модуле отчета а в модуле документа.
Тойсть берется общий макет(СКД) в него нужно передать параметр и вывести результат в таб док.

А КомпоновщикНастроек.Настройки это доступно только в модуле отчета!

У 1с 8.2 УП. там это как то по другому но как я уже долгое время не могу понять...

has

Ты как отчет то вызываешь из документа?
ТвойОтчетОбъект = Отчеты.ТвойОтчет.Создать();
Так? Если да, то
ТвойОтчетОбъект = Отчеты.ТвойОтчет.Создать();
КомпоновщикНастроек = ТвойОтчетОбъект.КомпоновщикНастроек;

Ну и далее как я написал.

|R|U|D|E|N

has ваши примеры навернка рабочи но они кусочками и я не могу понять как заставить их работать))

Вот код который у меня в модуле документа:
Функция ПолучитьОтчетСвязанныеДокументы()
        ОтчетОбъект = Отчеты.СвязанныеДокументы.Создать();
Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;
ПарметрIDСвязи = Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("IDСвязи"));
ПарметрIDСвязи.Значение = "123";
ПарметрIDСвязи.Использование = Истина;

Возврат ОтчетОбъект;
КонецФункции;


Эту функцию я вызвать из модуля команды в контексте клиента не могу по этому вызываю в контектсе сервера
&НаСервере
Функция ОтчетНаСервере()
         Для каждого Ссылка Из ПараметрКоманды Цикл
Документ = Ссылка.ПолучитьОбъект();
        Результат = Документ.СХД(Документ.IDСвязи);
Возврат Результат;
КонецЦикла;
КонецФункции


В результете я получаю сообщение "Ошибка отображения типов ...."


Я уже полностью запутался! Я уже пробовал сотни принципиально разных вариантов и все не то...не ужели не кто не знает как программно передать параметр в отчет и вывести его  из какого небудь документа в УП на 8.2?


|R|U|D|E|N

простите, не ту функцию скопировал

вместо этого

&НаСервере
Функция ОтчетНаСервере()
         Для каждого Ссылка Из ПараметрКоманды Цикл
        Документ = Ссылка.ПолучитьОбъект();
            Результат = Документ.СХД(Документ.IDСвязи);
        Возврат Результат;
    КонецЦикла;
КонецФункции


вот эта:

&НаСервере
Функция ОтчетНаСервере()
         Для каждого Ссылка Из ПараметрКоманды Цикл
        Документ = Ссылка.ПолучитьОбъект();
            Результат = Документ.ПолучитьОтчетСвязанныеДокументы()
        Возврат Результат;
    КонецЦикла;
КонецФункции

has

То что я написал, надо делать в документе. Зачем в отчете получать объект документа не понимаю.

|R|U|D|E|N

Так и есть. То что вы писали выполняется в модуле документа.

А объект документа получается в модуле команды в контексте сервера т.к. обработка самой команды не может вызвать функцию модуля документа по этому.

Обработчик команды вызывает серверную функцию в этом жеодуле а у же эта функция вызывает функцию модуля документа.

Если подскажите другие варианты, я буду только рад)

has

Зачем такой геморой. Есть команда, в ее обработчике вызываешь нужную экспортную функцию из модуля документа. И не надо вызывать серверную процедуру в форме, процедуры модулей объектов выполняются на сервере.

Теги:

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

Рейтинг@Mail.ru

Поиск