06 марта 2018

1с как добавить к эксель-файлу столбик из массива значений целиком

Ситуация. У вас есть excel-файл с данным. Вам нужно в нем средствами платформы 1с добавить колонку со значениями. При чем присоединять желательно не построчно, а  разом, все значения целиком. Иначе если файл большой, то этот процесс займет неприлично долгое время! Оказывается такое возможно с помощью COMSafeArray!

Итак у вас есть какие то данные, хранящиеся в одномерном массиве, например колонка Артикулов.
ИсходныйМассив = Выгрузка.ВыгрузитьКолонку("Артикул");
Создаем из него двумерный массив
Массив1 = новый Массив;
Массив1.Добавить(ИсходныйМассив);
Далее используем многомерный массив SAFEARRAY для обмена данными между COM-объектами, т.е. между 1с и Excel. Создадим его с помощью оболочки COMSafeArray. Подробно о ней почитайте в синтакс-помошнике.

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

Исключение
        Эксель.WorkBooks.close();
        Эксель.Quit();
        Сообщить("Ошибка при вставке массива. Подробно: " + ОписаниеОшибки());
        Возврат

КонецПопытки;
Затем не забудьте сохранить файл
//Записываем файл
    Попытка
        Эксель.ActiveWorkBook.save();
        Состояние("Файл успешно сохранен!");
        Эксель.WorkBooks.close();
        Эксель.Quit();
       
    Исключение
        Сообщить("Файл не сохранен! "+ОписаниеОшибки());
    КонецПопытки;
 Маленьких открытий каждый день!

1 комментарий:

  1. One of our metal distributors can provide you with a quote and let you you to} find out about our delivery and pickup options. We will customise porous metallic sheet to suit with|swimsuit} your|to fit your} software and specs. Using proprietary manufacturing techniques, Mott manufactures the thinnest porous metallic sheet in the industry down to down to} .007”. Typical uses for software of stainless-steel sheets onto partitions. Although aluminum sheet metallic is light-weight, it is also quite sturdy at Direct CNC the same time. Because of its power, mixed with its light-weight function, it's extremely helpful in varied industrial applications.

    ОтветитьУдалить