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

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

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

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

|R|U|D|E|N

Добрый день.


Есть отчет. у него один обязательный параметр "Контрагент". В интерактивном режиме отчет работает.
Необходима возможность его вызова из некоторых документов при нажатии на соответствующую кнопку.
Тойсть в отчет должен передоваться параметр "Контрагент" из документа и открываться сформированный отчет.

Подскажите где можно поглядеть пример такого кода и в каком контексте он должен выполняться?


С уважением, Александр.

donyab


в отчете у процедуры ставишь Экспорт

в документе ставишь кнопку "отчет", на нее вешаешь процедуру

Процедура ОтчетВыполнить(Кнопка)
Кнопка = Контрагент;
Отчеты.ИмяОтчета.имяПроцедуры.(Кнопка);
КонецПроцедуры


Ну как то так

|R|U|D|E|N

Извините, это я не выдал всю информацию)

У меня платформа 8.2 управляемое приложение и отчеты на СКД. там нет в отчете не какого кода. Тойсте нечего экспортировать)

aleksqqq

Меня тоже когда то мучил этот вопрос. Да и сейчас я ответа на него не знаю  :D.
Но тут порыл в гугле и смотри на что наткнулся:
Лекции по СКД 8.2 (управляемое приложение) на основе книги Разработка сложных отчетов!!!
А вот и то что ты спрашивал (цитата из книги):
Цитировать...
Откроем документ Расходная накладная.
Выполним команду СписокПродаж. (сс-  и в форме списка и в форме документа) 
На экране появится список продаж контрагенту, указанному в открытом документе (рис.
3.32). (сс- или отмеченному в форме списка)
...
это потрясающе :zebzdr: прочитаю с удовольствием :)

|R|U|D|E|N

Если будет результат, пишите!

Я тоже щас погляжу. О результатах напишу.

|R|U|D|E|N

Посмотрел, я этот пример.

Там совсем не то чего хотелось бы мне.

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

Запрос так же выполняется в модуле документа а результат передается в макет и выводится в табличный документ.


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


Или хотя бы делать так как в примере но использовать общий макет на основе СКД для всех документов а не описывать макет в кажом.


Dethmontt

Ну так напиши в модуле отчета(Объекта)!!! И вызывай откуда тебе хочется!!!
Процедура ВыставитьНастройкиОтчетаТакКакЯХОЧУ(СтруктураНастроек) Экспорт

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

//В синтаксисе могу ошибаться, писал на память, проверишь в СП
КонецПроцедуры

//Читай СП
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

|R|U|D|E|N

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

мне не нравится, что приходится создавать табличный документ и выводить в него. Из отчета я могу открывать документы, смотреть расщифровки а в текстовом документе тупа текст.

|R|U|D|E|N

Вот тепичный вариант программного формирования отчета на основе СКД:

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

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

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

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

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

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

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

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

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


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

Klyacksa

xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

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

Рейтинг@Mail.ru

Поиск