Выгрузка таблиц в сводную Excel

Выгрузка таблиц значений, результатов запроса, табличных частей, области ячеек табличного документа, наборов записей, запросов, текстов запросов, динамических списков в сводную Excel.

Часто пользователи хотят сами поковырять данные из 1С в Excel. Очень удобно предоставить им эту информацию в виде сводной. Данная разработка представляет способ выгрузить данные через текстовые файлы и загрузку их в Excel с помощью драйвера Microsoft Text Driver (*.txt; *.csv).

Прежде всего входные данные с помощью построителя отчёта преобразуем в табличный документ. В качестве источника данных построитель может принять множество разнообразных типов: ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента; Табличная часть; РегистрНакопленияНаборЗаписей.<Имя регистра накопления>; РегистрСведенийНаборЗаписей.<Имя регистра сведений>; РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>; РегистрРасчетаНаборЗаписей.<Имя регистра расчета>. Текст запроса, запрос, динамический список загружаются в свойство Текст построителя. Методом Вывести формируем табличный документ.

Полученный текстовый документ записываем в файл с параметром ТипФайлаТабличногоДокумента.TXT. Дополнительно создаём файл описания. Он должен называться Schema.ini и выглядит приблизительно так:

[Data.csv]
Format=TabDelimited
ColNameHeader=True
Col1=Номенклатура Char
Col2=ВидЦены Char
Col3=Характеристика Char
Col4=Цена Float
CharacterSet=ANSI
 

Список колонок и их тип достаём всё из того же построителя отчётов.

Теперь открываем Excel и загружаем файл:

 

 ФайлXLS = Новый COMObject("Excel.Application");
КнигаXLS = ФайлXLS.Application.Workbooks.Add();

СтрокаПодключения = "DefaultDir=" + КаталогВременныхФайлов() +
";Driver={Microsoft Text Driver (*.txt; *.csv)};DriverId=27;FIL=text;MaxBufferSize=4096;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;";

TableName = "СводнаяТаблица";
КнигаXLS.Sheets(1).Activate();
Cache = КнигаXLS.PivotCaches().Add(2);
Cache.Connection = "ODBC;" + СтрокаПодключения;
Cache.CommandType = 2;
Cache.CommandText = "SELECT * FROM " + ИмяФайлаОтчета;
Cache.CreatePivotTable(КнигаXLS.Sheets(1).Cells(3, 1), TableName, Истина);

ФайлXLS.Visible = Истина;

Во внешней обработке реализована возможность создать запрос конструктором запроса и вывести его в сводную.

Данный способ позволяет обрабатывать таблицы с количеством строк превышающем ограничения листа Excel. 

Обработка тестировалась на управлении торговлей 11.1, платформа 8.3.10 и УНФ 1.2, платформа 8.3.9. Управляемые формы.

2 Comments

  1. v3rter

    Даты нормально таким образом передаются?

    Reply
  2. serg7965

    Нормально.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *