Ситуация. У вас есть excel-файл с данным. Вам нужно в нем средствами платформы 1с добавить колонку со значениями. При чем присоединять желательно не построчно, а разом, все значения целиком. Иначе если файл большой, то этот процесс займет неприлично долгое время! Оказывается такое возможно с помощью COMSafeArray!
Итак у вас есть какие то данные, хранящиеся в одномерном массиве, например колонка Артикулов.
ИсходныйМассив = Выгрузка.ВыгрузитьКолонку("Артикул");Создаем из него двумерный массив
Массив1 = новый Массив;
Массив1.Добавить(ИсходныйМассив);
Далее используем многомерный массив SAFEARRAY для обмена данными между COM-объектами, т.е. между 1с и Excel. Создадим его с помощью оболочки COMSafeArray. Подробно о ней почитайте в синтакс-помошнике.
Общая процедура создания SAFEARRAY
// Создание COMSafeArrayПоэтому мы создаем наш SAFEARRAY вот так
МассивКом = Новый COMSafeArray(«VT_Variant», ВсегоКолонок, ВсегоСтрок);
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок — 1 Цикл
Для Кол = 0 По ВсегоКолонок — 1 Цикл
МассивКом.SetValue(Кол, Стр, Значение);
КонецЦикла;
КонецЦикла;
МассивКОМ = Новый COMSafeArray(МАссив1, "VT_VARIANT", 1, ИсходныйМассив.Количество() );Выбираем в экселе столбик ячеек в одной колонке
СтолбикАртикул = Лист.Range(Лист.Cells(5, 5),Лист.Cells(ВсегоСтрок, 5));Меняем формат ячеек на строковый, если нужно
СтолбикАртикул .NumberFormat = "@";И просто присваиваем значению Value целиком весь массив
ПопыткаЗатем не забудьте сохранить файл
СтолбикАртикул.Value = МассивКОМ;
Исключение
Эксель.WorkBooks.close();
Эксель.Quit();
Сообщить("Ошибка при вставке массива. Подробно: " + ОписаниеОшибки());
Возврат
КонецПопытки;
//Записываем файлМаленьких открытий каждый день!
Попытка
Эксель.ActiveWorkBook.save();
Состояние("Файл успешно сохранен!");
Эксель.WorkBooks.close();
Эксель.Quit();
Исключение
Сообщить("Файл не сохранен! "+ОписаниеОшибки());
КонецПопытки;