Часто пользователи хотят сами поковырять данные из 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. Управляемые формы.
Даты нормально таким образом передаются?
Нормально.