Выгрузить табличную часть в Excel
Задача: выгрузить табличную часть формы в файл формата XLSX. К сожалению на прямую это не сделать, но зато мы можем воспользоваться функционалом компонента ПостроительОтчета, который в свою очередь понимает на входе таблицу значений. В итоге нам остаётся лишь выгрузить табличную часть в таблицу значений, которую в свою оочередь скормить построителю отчетов. На выходе будет ТабличныйДокумент, который уже штатно может сохраняться в т.ч. и в формат xlsx. Код получается примерно такой::
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
&НаСервере Функция ЭкспортВExcelНаСервере() ТабДок = Новый ТабличныйДокумент; Тз = Новый ТаблицаЗначений; тз.Колонки.Добавить("Отделение"); тз.Колонки.Добавить("Подразделение"); тз.Колонки.Добавить("ЛС"); тз.Колонки.Добавить("КодСопоставления"); тз.Колонки.Добавить("ДатаРождения"); тз.Колонки.Добавить("МестоРождения"); тз.Колонки.Добавить("СерияПаспорта"); тз.Колонки.Добавить("НомерПаспорта"); тз.Колонки.Добавить("СерияНомерПаспорта"); тз.Колонки.Добавить("РезультатПроверки"); для каждого стр из объект.РезультатСопоставления цикл нс=тз.Добавить(); нс.Отделение=стр.Отделение; нс.Подразделение=стр.Подразделение; нс.ЛС=стр.ЛС; нс.КодСопоставления=стр.КодСопоставления; нс.ДатаРождения=стр.ДатаРождения; нс.МестоРождения=стр.МестоРождения; нс.СерияПаспорта=стр.СерияПаспортаС; нс.НомерПаспорта=стр.НомерПаспортаС; нс.СерияНомерПаспорта=стр.СерияНомерПаспорта; нс.РезультатПроверки=стр.РезультатПроверки; конеццикла; Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Тз); Построитель.Выполнить(); Построитель.Вывести(ТабДок); ИмяВременногоФайлаХар = ПолучитьИмяВременногоФайла(".xlsx"); ТабДок.Записать(ИмяВременногоФайлаХар,ТипФайлаТабличногоДокумента.XLSX); сообщить(ИмяВременногоФайлаХар); Двоичное=Новый ДвоичныеДанные(ИмяВременногоФайлаХар); Адрес=ПоместитьВоВременноеХранилище(Двоичное,ЭтаФорма.УникальныйИдентификатор); Возврат Адрес; КонецФункции &НаКлиенте Процедура ЭкспортВExcel(Команда) Адрес=ЭкспортВExcelНаСервере(); Описание=Новый ОписаниеПередаваемогоФайла(ПолучитьИмяВременногоФайла(".xlsx"),Адрес); МассивОписаний=Новый Массив; МассивОписаний.Добавить(Описание); ПолучитьФайлы(МассивОписаний,,,Ложь); Для Каждого фф Из МассивОписаний Цикл ЗапуститьПриложение(фф.Имя); КонецЦикла; КонецПроцедуры |
Пользователь нажимает кнопку «Экспорт в эксель», на сервере формируется файл и передаётся на клиент. На клиенте он открывается приложением по умолчанию для данного формата файла. Код получился кросс платформенный, что в наше время очень актуально.