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

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

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

Оффлайн Artjomrgv

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


Оффлайн LexaK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оффлайн Artjomrgv

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


Теги: 1С 8.3 
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

oleg-x
116 Сообщений
alex0402
102 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
72 Сообщений
AIFrame
49 Сообщений
Golickoff Golickoff
49 Сообщений
ilyay ilyay
49 Сообщений
ab30ru
38 Сообщений
wise wise
34 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal