Всего пять форм конструктора: копия из другого 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(СМассив);Границы и размерность после создания — см. Измерения и границы.