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

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

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

Оффлайн Artjomrgv

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


Оффлайн LexaK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оффлайн Artjomrgv

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


Теги: 1С 8.3 
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

oleg-x
165 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
88 Сообщений
alex0402
87 Сообщений
Golickoff Golickoff
32 Сообщений
ilyay ilyay
30 Сообщений
Kironten
29 Сообщений
AIFrame
26 Сообщений
AsadRoman
26 Сообщений
BuhRust
26 Сообщений
Варвар
20 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal