1C:Підприємство 8: Швидкий вивід даних у MS EXCEL

Ті, хто пише під 1C:Підприємство 8 досить часто зустрічаються з необхідністю виводу даних у таблиці EXCEL. Коли необхідно вивести декілька десятків чи навіть сотень стрічок, простий послідовний запис комірок через OLE дає повністю задовільний результат. Та коли кількість стрічок сягає десятки тисяч, час виконання операції непомірно зростає.З кожною наступною коміркою час операції стає все довшим і може становити вже десяті секунди. Відповідно, формування таблиці, що містить 20-30 тис. стрічок та 10-20 колонок може відбуватися понад десяток годин.

Одним з виходів з даної ситуації є запис даних у таблицю EXCEL за допомогою іншого COM-об'єкту - COMSafeArray, з яким MS Excel вміє чудово працювати. Один з можливих конструкторів цього об'єкту передбачає передачу як параметра масиву з даними. Створення SafeArray відбувається дуже швидко, як і заповнення з нього комірок EXCEL.

Приклад коду:

// ...
ExcelApp = Новый COMОбъект("Excel.Application");
М = Новый Массив(10,10);
// Заповнюємо масив даними
// ...
SAE = Новый COMSafeArray(М,"VT_VARIANT");
Лист.Range(Лист.Cells(1,1), Лист.Cells(М[0].ВГраница(),М.ВГраница())).Value = SAE;
// ...

Другий параметр може містити назву будь-якого типу простих даних. Назви типів аналогічні назвам типу даних у VBA.

Слід зазначити, що SafeArray можна використовувати не лише з 1С.

Додати новий коментар

Фото Капча
Введіть символи з картинки.