Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
28 Май 2017, 19:46
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Отчет СКД с параметрами из ТЧ  (Прочитано 447 раз)

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

Оффлайн Artjomrgv

  • ***
  • Сообщений: 124
  • РЕПУТАЦИЯ: 12
  • КПД: 10%
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Консультант 1С
Добрый вечер, коллеги. Есть документ, в документе есть кнопка "История платежей", хочу сделать чтобы при нажатии кнопки "история платежей" формировался отчет СКД, а параметр договор должен передаваться из текущей строки табличной части. Может у кого есть готовый пример, буду очень благодарен.


Оффлайн LexaK

  • *****
  • Сообщений: 1214
  • РЕПУТАЦИЯ: 333
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
была такая примерная задача, при нахождении на какой-то строке в ТЧ, сформировать отчет СКД с параметрами из этой строки.
Вот пример, адаптируйте его под свою задачу
Примечание используется в БП30, есть процедуры из общих модулей по настройке отчета.
(это просто кусок кода из реальной обработки)
&НаКлиенте
Процедура КомандаРасшифровка(Команда)
//Отчет по одному Контрагент - Договор

лкТекСтрока = Элементы.тзДанные.ТекущиеДанные;
Если лкТекСтрока = Неопределено Тогда
Возврат;
КонецЕсли;

//переделано на вывод в закладку с отчетом
//лкТаб = Новый ТабличныйДокумент;
//лкТаб.ТолькоПросмотр = Истина;
ПараметрыОтчета = Новый Структура();
ПараметрыОтчета.Вставить("Организация", Организация);
ПараметрыОтчета.Вставить("ГруппаЭквант", ГруппаКонтрагентов);
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Контрагент", лкТекСтрока.Контрагент);
ПараметрыОтбора.Вставить("Договор", лкТекСтрока.Договор);

СформироватьОтчетНаСервере("ОсновнаяСхемаКомпоновкиДанных", ПараметрыОтчета, ПараметрыОтбора);
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.Отчет;
//лкТаб.Показать();

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

&НаСервере
Процедура СформироватьОтчетНаСервере(лкИмяСКД, лкПараметры = 0, лкОтбор = 0, лкВнешниеДанные = 0)

УстановитьПривилегированныйРежим(Истина);

лкОтчет = РеквизитФормыВЗначение("Объект");

лкСКД = лкОтчет.ПолучитьМакет(лкИмяСКД);
лкВариант = лкСкд.ВариантыНастроек.Основной;
лкНастройки = лкВариант.Настройки;

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

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

//ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Настройки.Отбор, "СтатьяОборотов");
//ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Настройки.Отбор, "СтатьяОборотов", ВидСравненияКомпоновкиДанных.ВСписке, РезультатЗапросаОтборПоДоступнымСтатьямОборотов.Выгрузить().ВыгрузитьКолонку("СтатьяОборотов"));
//перенесено в цикл
//ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(лкНастройки.Отбор, "Контрагент", ВидСравненияКомпоновкиДанных.Равно, лкПараметры.Контрагент);
//ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(лкНастройки.Отбор, "Договор", ВидСравненияКомпоновкиДанных.Равно, лкПараметры.Договор);

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

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

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

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

тдОтчет.Очистить();

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

АдресДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);

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

УстановитьПривилегированныйРежим(Ложь);

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

Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Artjomrgv

  • ***
  • Сообщений: 124
  • РЕПУТАЦИЯ: 12
  • КПД: 10%
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Консультант 1С
Спасибо.


Теги: 1С 8.3 
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
85 Сообщений
wise wise
63 Сообщений
Dethmontt Dethmontt
60 Сообщений
MuI_I_Ika MuI_I_Ika
52 Сообщений
alex0402
49 Сообщений
Сергей Федоров Сергей Федоров
32 Сообщений
ilyay ilyay
32 Сообщений
ilnur75
25 Сообщений
Дмитрий Медведков
19 Сообщений
magnifico61
18 Сообщений

* Кто онлайн

  • Точка Гостей: 348
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal