В данном примере описывается метод выгрузки данных полученных в динамическом списке с последующим выгрузкой в файл формата excel.
1. Получение данных динамического списка
&НаСервере
Функция СформироватьТабличныйДокИзДинСписка()
Схема = СписокФормы.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = СписокФормы.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТабДок = Новый ТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Возврат ТабДок;
КонецФункции
2. Пример самой выгрузки
&НаСервере
Функция СохранитьДанныеВФайлПередОтправкой(ТабличныйДокумент)
АдресХранилища = Неопределено;
ИмяФайла = ПолучитьИмяВременногоФайла();
Попытка
ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
АдресХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла));
Исключение
ВызватьИсключение;
КонецПопытки;
Возврат АдресХранилища;
КонецФункции
&НаКлиенте
Процедура ЗаписатьТабДок(ТабличныйДокумент)
#Если ВебКлиент Тогда
АдресХранилище = СохранитьДанныеВФайлПередОтправкой(ТабличныйДокумент);
ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;
ПараметрыДиалога.ВыборКаталога = Истина;
ПараметрыДиалога.Заголовок = "Выбрать файл для сохранения";
ИмяФайла = "Список Валюты" + ".xlsx";
НачатьПолучениеФайлаССервера(АдресХранилище, ИмяФайла, ПараметрыДиалога);
#Иначе
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогВыбора.Заголовок = "Сохранение документа";
ДиалогВыбора.МножественныйВыбор = Ложь;
ДиалогВыбора.ИндексФильтра = 0;
ДиалогВыбора.Фильтр = "Лист Excel (*.xlsx)|*.xlsx|Лист Excel (*.xls)|*.xls|Текстовый документ (*.txt)|*.txt|Формат MXL(*.mxl)|*.mxl|Формат ODS(*.ods)|*.odsxl";
ИмяФайла = "Список Валюты" + ".xlsx";
ДиалогВыбора.ПолноеИмяФайла = ИмяФайла;
Если ДиалогВыбора.Выбрать() Тогда
ФайлНаДиске = Новый Файл(ДиалогВыбора.ПолноеИмяФайла);
Если нРег(ФайлНаДиске.Расширение) = ".mxl" Тогда
ТабличныйДокумент.Записать(ДиалогВыбора.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.MXL);
ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".xlsx" Тогда
ТабличныйДокумент.Записать(ДиалогВыбора.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX);
ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".xls" Тогда
ТабличныйДокумент.Записать(ДиалогВыбора.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLS);
ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".txt" Тогда
ТабличныйДокумент.Записать(ДиалогВыбора.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.TXT);
ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".ODS" Тогда
ТабличныйДокумент.Записать(ДиалогВыбора.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.ODS);
ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".ods" Тогда
ТабличныйДокумент.Записать(ДиалогВыбора.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.ODS);
КонецЕсли;
КонецЕсли;
#КонецЕсли
КонецПроцедуры
В обработке находится исходный текст, на примере которого можно сформировать выгрузку из любого динамического списка.
- Обработка сформирована на базе конфигурации "Бухгалтерия предприятия" и выполнение выгрузки производилась на ее примере.
- Также данная обработка может пригодиться программистам, работающим с различными типами конфигураций. В обработке в качестве примера указан справочник "Валюты", но в тоже время запрос динамического списка можно изменить непосредственно под свои задачи.
- После изменения запроса и получения требуемого результата в виде динамического списка можно выгрузить полученный список непосредственно в формате Excel на рабочий стол без непосредственного внедрения или изменения той или иной конфигурации.
Все тесты и запуск внешней обработки производилась на конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.75.109) платформы 1С:Предприятие 8.3 (8.3.15.1565).