COMSafeArray — объектная обёртка над многомерным массивом SAFEARRAY из COM, а не «родная» коллекция 1С вроде Массива. Нужен при обмене типизированными массивами с внешними COM-объектами через OLE Automation — например, при передаче диапазона ячеек в Excel через COMОбъект, или когда метод внешней компоненты ожидает на входе именно SAFEARRAY, а не обычный массив 1С.
В отличие от Массива, у COMSafeArray строго один тип элементов (VARTYPE) на весь массив — кроме VT_VARIANT, где допустимо любое значение, как в обычном Массиве. Многомерность нативная (не вложенные массивы), а измерения нумеруются с 0, от старшего к младшему. Почти все методы существуют только под английским именем — у 1С это редкое исключение из обычной двуязычности платформы.
Конструкторы · Измерения и границы · Чтение и запись значений · Особенности и ограничения · Массив — обычная коллекция 1С
Методы
Создание
| Синтаксис | Что делает |
|---|---|
| Новый COMSafeArray(ТипЭлемента, …) | пустой типизированный SAFEARRAY заданной размерности |
| Новый COMSafeArray(Массив, ТипЭлемента, …) | SAFEARRAY, заполненный значениями из обычного массива 1С |
Измерения и границы
| Метод | Что делает |
|---|---|
| GetDimensions() | число измерений массива |
| GetUpperBound(НомерИзмерения) | верхняя граница указанного измерения |
| GetLowerBound(НомерИзмерения) | нижняя граница указанного измерения |
Чтение и запись
| Метод | Что делает |
|---|---|
| GetValue(…) | значение элемента по индексам измерений |
| SetValue(…) | записать значение элемента по индексам измерений |
| Выгрузить() | скопировать всё содержимое в обычный Массив |