?
?
?
Новый COMSafeArray("VT_I4", 3)
1
2
Новый COMSafeArray(Массив, "VT_I4")

Всего пять форм конструктора: копия из другого COMSafeArray, две формы «пустой массив по типу элемента» и две формы «заполненный из обычного массива 1С». Различие внутри каждой пары — как задаются размеры измерений: списком чисел через запятую или отдельным Массивом (тогда можно ещё и сдвинуть нижнюю границу).

Пустой типизированный SAFEARRAY

СМассив = Новый COMSafeArray(ТипЭлемента, Число1, Число2, ...);
ПараметрТипОбязательныйОписание
ТипЭлементаСтрокаДаимя VARTYPE — тип всех элементов массива
Число1, Число2, ...ЧислоДа, минимум одинразмер каждого измерения, от старшего к младшему

Без инициализации значений — только выделенная память под нужную размерность.

// одномерный, 3 целых числа
СМассив = Новый COMSafeArray("VT_I4", 3);
 
// двумерный VT_I4: 2 строки, 3 колонки
СМассив = Новый COMSafeArray("VT_I4", 2, 3);

Вторая форма — те же размеры, но одним Массивом вместо списка чисел, плюс необязательный отдельный Массив нижних границ измерений (по умолчанию границы с 0):

Размер = Новый Массив;
Размер.Добавить(2);
Размер.Добавить(3);
СМассив = Новый COMSafeArray("VT_I4", Размер);
 
НижняяГраница = Новый Массив;
НижняяГраница.Добавить(-1);
НижняяГраница.Добавить(2);
СМассив = Новый COMSafeArray("VT_I4", Размер, НижняяГраница);

Из обычного массива 1С

Массив = Новый Массив;
Массив.Добавить(1);
Массив.Добавить(2);
 
СМассив = Новый COMSafeArray(Массив, "VT_I4", 2);
ПараметрТипОбязательныйОписание
МассивМассивДаисточник значений
ТипЭлементаСтрокаДаимя VARTYPE — тип всех элементов результата
Число1, Число2, ...ЧислоНетразмер каждого измерения; без них берётся из самого Массив

Аналогично есть вторая форма с размерами одним Массивом и необязательным Массивом нижних границ — те же правила, что и у пустого конструктора выше:

Размер = Новый Массив;
Размер.Добавить(2);
Размер.Добавить(3);
СМассив = Новый COMSafeArray(Массив, "VT_I4", Размер);

VARTYPE

Допустимые значения ТипЭлемента: VT_I1, VT_I2, VT_I4, VT_I8, VT_INT, VT_UI1, VT_UI2, VT_UI4, VT_UI8, VT_UINT (целые числа разной разрядности и знаковости), VT_R4, VT_R8 (с плавающей точкой), VT_DECIMAL, VT_CY (денежные/десятичные), VT_DATE, VT_BSTR (строка), VT_BOOL, VT_DISPATCH, VT_ERROR, VT_UNKNOWN и VT_VARIANT — любой тип, как в обычном Массиве.

Копия из другого COMSafeArray

СМассивКопия = Новый COMSafeArray(СМассив);

Границы и размерность после создания — см. Измерения и границы.

COMSafeArray