Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Макет документа в отчете на СКД

Макет документа в отчете на СКД
Я
   Amig0_0
 
04.11.20 - 16:31
Всем привет!

Вопрос от части теоретический)
Нужно на СКД сделать отчет. Отчет этот выбирает проведенные документы определенного типа и по каждому из них на отдельной странице печатает ПФ.
Более того ПФ эта есть у самого документа и из этого же документа прекрасно печатается.

Т.е. В документе ПутевойЛист (ПЛ) есть ПФ «Протокол». Отчет на СКД должен напечатать столько протоколов, сколько в заданном периоде есть проведенных документов ПЛ.

Я сделал простейший запрос на СКД , отключил использование стандартного оформления и полез в модуль -> ПриКомпоновкеРезультата(…
и всевозможными способами пытаюсь скормить компановщику макет «Протокол» из документа ПЛ. Но что-то не получается , хоть ты тресни.
В интернете находил варианты с подстановкой другого МакетаКомпановкиДанных, но это не то что нужно в моём случае…

Думаю уже, что скд не подходит для решения этой задачи, но прежде хотел спросить у матерых знатоков)
Если кто сталкивался с подобными реализациями, подскажите плиз, можно ли заставить СКД вывести данные в макет документа. Заранее спасибо за потраченное время!
   fisher
 
1 - 04.11.20 - 16:41
Непосредственно СКД - нельзя заставить.
Но можно из отчета СКД получать из данных расшифровки список документов и просто в цикле по нему выводить печатные формы документов.
Мне это видится как обычный отчет СКД по документам с кнопкой в нем "Печать ПФ".
   Amig0_0
 
2 - 04.11.20 - 16:49
(1) а есть возможность "Показать()" сформированный табличный документ после ПриКомпоновкеРезультата(... в Модуле объекта отчета на СКД ? Или все же правильнее создать форму для отчета и из нее по кнопке "Сформировать" выводить ПФ?
   Amig0_0
 
3 - 04.11.20 - 16:55
(1) =)) Ну да , как - то замороченно всё звучит. В общем по задаче, отчет должен быть создан на СКД. Вот и думаю , как правильнее и максимально безболезненно это сделать
   Dzenn
 
4 - 04.11.20 - 16:59
Результатом процедуры ПриКомпоновкеРезультата является банальный ТабличныйДокумент. Полученный сложными механизмами компоновки, но самый обычный, самый простой ТабличныйДокумент.

Если СКД нужно только для получения массива документов на печать, и обязательным условием является именно использование СКД, то я бы сделал так:



ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

ДокументРезультат.Очистить();
// шаманство с ДокументРезультат на основании ТаблицаДокументов


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


То есть, смысл в том, что выводим результат работы СКД не в табличный документ сразу, а в коллекцию значений, а потом уже, на основании коллекции значений, формируем нужный нам ДокументРезультат типа ТабличныйДокумент
   fisher
 
5 - 04.11.20 - 16:59
(2) Показать() можно, но не из модуля объекта. Сервер это не оценит. Некогда ему табличные документы разглядывать. Компоновку можно вообще программно делать хоть в обработке, а полученный в результате табличный документ - это обычный табличный документ. Что угодно с ним делай - даже показывай.
(3) > по задаче, отчет должен быть создан на СКД
Чьей задаче? :)
   Dzenn
 
6 - 04.11.20 - 17:00
(4) забыл инициализировать ТаблицаДокументов
   fisher
 
7 - 04.11.20 - 17:04
> Отчет этот выбирает проведенные документы определенного типа и по каждому из них на отдельной странице печатает ПФ
Так как вывод на отдельных страницах, то как ни крути, а напрашивается штатный вывод ПФ, потому что остальные варианты на фоне него выглядят мазохизмом.
Другое дело что список документов для печати ПФ можно получать с помощью СКД.
   Amig0_0
 
8 - 04.11.20 - 17:06
(6) (7) спасибо большое, попробую покрутить)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.