|
Выгрузка и сохранение отчета СКД в серверном модуле | ☑ | ||
---|---|---|---|---|
0
faso
01.11.13
✎
12:08
|
Коллеги, нужен совет. Цель - выгрузить тяжелый отчет на сервере и сохранить в mxl, во избежание проблем с нехваткой памяти при формировании и сохранении на клиенте.
|
|||
1
faso
01.11.13
✎
16:14
|
[code]
// Записать массив в строку XML Функция МассивВСтрокуXML(Массив) Экспорт // Создадим объект для записи XML ЗаписьXML = Новый ЗаписьXML; // Укажем необходимость вывода в строку ЗаписьXML.УстановитьСтроку(); // Запишем начальный элемент массива ЗаписьXML.ЗаписатьНачалоЭлемента("array"); // Переберем элементы массива Для Каждого Элемент Из Массив Цикл // Выведем элемент массива СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Элемент); КонецЦикла; // Запишем конечный элемент массива ЗаписьXML.ЗаписатьКонецЭлемента(); // Закончим вывод Возврат ЗаписьXML.Закрыть(); КонецФункции // Загрузить массив из строки XML Функция МассивИзСтрокиXML(Строка) Экспорт // Создадим объект для чтения значения ЧтениеXML = Новый ЧтениеXML; // Установим строку, из которой будем читать значние ЧтениеXML.УстановитьСтроку(Строка); // Создадим массив, в который будем считывать Массив = Новый Массив; // Считаем элемент начала массива ЧтениеXML.Прочитать(); // Считаем начало перовго элемента ЧтениеXML.Прочитать(); // Пока не прочитан конечный элемент Пока ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Цикл // Прочитаем значение Значение = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); // Поместим считанное значение в массив Массив.Добавить(Значение); КонецЦикла; // Чтение закончено - вернем считанный массив Возврат Массив; КонецФункции // Функция выполняет компоновку во внешнем соединении. // Возвращается результат компоновки. Функция ПолучитьСериализованныйРезультатПростогоОтчетаСКД(ИмяОтчета, Параметры) Экспорт Отчет = Отчеты[ИмяОтчета].Создать(); Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ЭтоПолучениеСериализованногоРезультата"); Для Каждого Параметр Из Параметры Цикл ПараметрыДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы; ПараметрДанных = ПараметрыДанных.Найти(Параметр.Ключ); ПользовательскийПараметрДанных = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки); ПользовательскийПараметрДанных.Значение = МассивИзСтрокиXML(Параметр.Значение); КонецЦикла; ТаблицаРезультата = Новый ТабличныйДокумент; Отчет.СкомпоноватьРезультат(ТаблицаРезультата); ТаблицаРезультата.Записать("\\server\share\Таблица2.mxl"); Возврат Истина; КонецФункции [/code] |
|||
2
faso
01.11.13
✎
16:14
|
Ответ
|
|||
3
РазДва
01.11.13
✎
16:19
|
(0) Передавай в фоновое задание, все новые типовые так делают, пользуйся "бест практис".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |