|
как программно сохранить отчет в эксель, выполняя его #НаСервере | ☑ | ||
---|---|---|---|---|
0
olo_lo1
14.03.17
✎
07:01
|
Добрый день
Есть web-сервис, который вызывается и выполняется сразу на сервере (в серверной процедуре). Есть отчет, написан на СКД. Но я уже всю голову сломал как его сохранить в эксель, выполняя на сервере, ведь нет доступа к ЭлементыФормы.Результат //Получаем схему из макета СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //Из схемы возьмем настройки по умолчанию //Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; Настройки = КомпоновщикНастроек.Настройки; //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки); //Очищаем поле табличного документа Результат = ЭлементыФормы.Результат; Результат.Очистить(); //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
1
DrZombi
гуру
14.03.17
✎
07:09
|
(0) Точно так же, как и на клиенте :)
|
|||
2
Лодырь
14.03.17
✎
07:09
|
Создай табличный документ, выведи в него отчет, сохрани. В чем сложность?
|
|||
3
DrZombi
гуру
14.03.17
✎
07:10
|
+(0) В качестве Результата помести Табличный документ :)
|
|||
4
olo_lo1
14.03.17
✎
07:18
|
(1,2,3) да ты попробуй на сервере это выполнить
|
|||
5
h-sp
14.03.17
✎
07:23
|
(4) а в чем сложность? На сервере показать табличный документ нельзя. Всё остальное можно.
|
|||
6
olo_lo1
14.03.17
✎
07:26
|
Спасибо, утро не проснулся))
|
|||
7
Мимохожий Однако
14.03.17
✎
07:32
|
ГотовыйТабличныйДокумент = Новый ХранилищеЗначения(Результат);
//ГотовыйОтчетXLS ИмяФайла = ПолучитьИмяВременногоФайла(); Результат.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS); ГотовыйОтчетXLS = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ИмяФайла)); |
|||
8
olo_lo1
14.03.17
✎
07:37
|
Подскажите пож по такому коду.
Есть какая то возможность обойти метод ОткрытьФорму, т.к. она выполняется на клиенте - хочу типовой попробовать впихнуть Пример для «Карточки счета». //Имя вызываемого отчета карточка,анализ, ОСВ по счету . Я делал только для этих трех. ИмяОтчета = "КарточкаСчета"; //Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета) ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных; ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет" , Счет); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , Объект.ДатаНачало); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , Объект.ДатаКонец); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , Объект.Организация); //Заполняем дополнительные отборы (в примере только для субконто1 и субконто2) НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор"; ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто1", Контрагент); ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто2", Договор); //Обязателньо указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки НастройкиРасшифровки = Новый Структура; НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных); УсловияОтбора = Новый Структура(); УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки); //Дублируем настройки (у меня в файловой без этого не открывалось) ОбщиеНастройки = Новый Структура(); ОбщиеНастройки.Вставить("Объект" , УсловияОтбора); ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки); //Помещаем во временное хранилище (Уид можно случайный) АлресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор); //Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы ( поскольку показатели и группировки я не менял, то оставил их типоыми) ЗаполнятьТиповыеНастройки = Новый Структура; ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь); ЗаполнятьТиповыеНастройки.Вставить("Группирова" , Истина); ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина); ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина); //Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками) ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("ВидРасшифровки" , 1); ПараметрыОтчета.Вставить("АдресНастроек" , АлресХранилища); ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета); ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина); ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки); //Ну и открываем саму форму ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма); |
|||
9
olo_lo1
14.03.17
✎
07:38
|
может все таки есть идеи как обойтись без вызова клиента и без СКД
|
|||
10
Мимохожий Однако
14.03.17
✎
07:39
|
(8) Куда ты хочешь прийти? Я не понял.
|
|||
11
Альбатрос
14.03.17
✎
07:39
|
(9) У тебя отчет построен на СКД, а ты хочешь без него обойтись?
|
|||
12
Stepa86
14.03.17
✎
09:07
|
||||
13
olo_lo1
14.03.17
✎
12:29
|
(10) я хочу выполнить отчет в момент того как придет REST запрос и отправить его получателю. Как то так. Есть типовой отчет в бухгалтерии 3.0 Задолженность по покупателям. Хочу его отправить, жедательно без допиливаний. Но так как не придумал как сделать без открытия формы - делаю через СКД
|
|||
14
Лодырь
14.03.17
✎
13:52
|
(13) А кто мешает тебе выполнить все те действия что ты делаешь при открытии, сделать просто так, на сервере? И вывести отчет? В упор не понимаю.
|
|||
15
Garykom
гуру
14.03.17
✎
14:16
|
(14) Не кто а что, вероятно мешает неумение читать/понимать книжки/учебники по 1С.
|
|||
16
olo_lo1
14.03.17
✎
17:10
|
(14) Я же написал, что это серверная процедура. Там нельзя вызвать ПолучитьФорму или ОткрытьФорму
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |