|
Выполнение СКД программно | ☑ | ||
---|---|---|---|---|
0
alexandr_87
10.01.19
✎
15:24
|
Есть отчет, формируется используя СКД, хочу из другого отчет при нажатии на кнопке сформировать скд и результат записать в файл на диске.Вопрос как организовать выполнение скд из другого места.Спасибо.Платформа 1с 8.3 УФ
|
|||
1
Beduin
10.01.19
✎
15:26
|
(0) Ну как минимум тебе переменная нужна в которой будет ссылка на другой отчет.
|
|||
2
shamannk
10.01.19
✎
15:34
|
(0) Кодом.
|
|||
3
runoff_runoff
10.01.19
✎
15:34
|
если отчет без перехвата процедуры ПриКомпоновкеРезультата, то всего 7 строчек кода..
|
|||
4
Fragster
гуру
10.01.19
✎
15:35
|
(3) даже если с ПриКомпоновкеРезультата тоже
|
|||
5
Ns33
10.01.19
✎
15:36
|
Отчет = Отчеты[ИмяОтчета].Создать();
СхемаКомпоновкиДанных = Отчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //Из схемы возьмем настройки по умолчанию Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; Если ЗначениеЗаполнено(ИмяВарианта) Тогда Настройки=СхемаКомпоновкиДанных.ВариантыНастроек[ИмяВарианта].Настройки; КонецЕсли; ПарамВыбПериод=Новый ПараметрКомпоновкиДанных("ВыбПериод"); ПарамПериод=Новый ПараметрКомпоновкиДанных("Период"); ПарамДата=Новый ПараметрКомпоновкиДанных("Дата"); Если ЗначениеЗаполнено(Дата1) И ЗначениеЗаполнено(Дата2) И (Настройки.ПараметрыДанных.Элементы[0].Параметр=ПарамВыбПериод ИЛИ Настройки.ПараметрыДанных.Элементы[0].Параметр=ПарамПериод) Тогда Настройки.ПараметрыДанных.Элементы[0].Значение.ДатаНачала= Дата1; Настройки.ПараметрыДанных.Элементы[0].Значение.ДатаОкончания= КонецДня(Дата2); ИначеЕсли ЗначениеЗаполнено(Дата1) И (Настройки.ПараметрыДанных.Элементы[0].Параметр=ПарамДата) Тогда Настройки.ПараметрыДанных.Элементы[0].Значение.Дата= Дата1; КонецЕсли; //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки); //Очищаем поле табличного документа Результат = Новый ТабличныйДокумент; //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Результат.ПоказатьУровеньГруппировокСтрок(3); Каталог= КаталогВременныхФайлов(); ИмяДляФайла=ПРедставлениеОтчета; Если не ЗначениеЗаполнено(ИмяДляФайла) Тогда ИмяДляФайла=ИмяОтчета; КонецЕсли; ИмяФайла="Отчет.xls"; Результат.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS); |
|||
6
Ns33
10.01.19
✎
15:38
|
Лишнее выкинуть, это из универсальной отправки отчетов.
|
|||
7
runoff_runoff
10.01.19
✎
15:40
|
ОтчетОбъект.СкомпоноватьРезультат(ДокументРезультат);
|
|||
8
alexandr_87
10.01.19
✎
15:43
|
Спасибо большое!!!!
|
|||
9
runoff_runoff
10.01.19
✎
15:46
|
и это не нам с тобой спасибо..
|
|||
10
Fragster
гуру
10.01.19
✎
18:54
|
у меня вот такая функция используется для выполнения на основе схемы:
Функция СкомпоноватьОтчет(СхемаКомпоновкиДанных, КомпоновщикНастроек, ДокументРезультат, ДанныеРасшифровки, ВнешниеНаборыДанных = Неопределено) Экспорт ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, ); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина); КонецФункции |
|||
11
Fragster
гуру
10.01.19
✎
19:00
|
А если есть ОтчетОбъект и выводить надо в таблицу, то тут вообще просто:
ОтчетОбъект.<Имя отчета> (ReportObject.<Имя отчета>) СкомпоноватьРезультат (ComposeResult) Синтаксис: СкомпоноватьРезультат(<Результат>, <ИнформацияРасшифровки>) Параметры: <Результат> (обязательный) Тип: ТабличныйДокумент. Табличный документ, в который будет выводиться результат. <ИнформацияРасшифровки> (необязательный) Переменная, в которую будет записана информация расшифровки. Если не указано - расшифровка заполняться не будет. Описание: Выполняет компоновку. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Пользователь может при помощи комбинации клавиш Ctrl + Break прервать выполнение отчета. При этом будет вызвано исключение. |
|||
12
ДенисЧ
10.01.19
✎
19:03
|
(10) е позоврься. Из функции обязан быть возврат
|
|||
13
Fragster
гуру
10.01.19
✎
22:10
|
(12) Это кусок функции, минимально достаточный.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |