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