|   |   | 
| 
 | Выполнение СКД программно | ☑ | ||
|---|---|---|---|---|
| 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) Это кусок функции, минимально достаточный.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |