Методы почти все только на английском
GetValue, SetValue, GetUpperBound, GetLowerBound, GetDimensions, GetLength, GetType, IsResizable, Resize — у всех этих методов COMSafeArray нет русского имени, что для платформы 1С необычно (почти всё остальное двуязычно, Массив.Добавить() = Массив.Add()). Единственное исключение — Выгрузить() (по-английски Unload()), у него есть оба варианта.
Однородность типа
Все элементы COMSafeArray — одного VARTYPE, заданного при создании (см. Конструкторы). Записать значение другого типа через SetValue() — исключение. Исключение из этого правила — тип VT_VARIANT: он допускает значения любого типа, как обычный Массив.
Зачем нужен, а не Массив
COMSafeArray существует не для использования внутри обычного кода 1С, а для обмена данными с внешними COM-объектами через OLE Automation (Excel, Word, другие приложения с COM-интерфейсом, внешние компоненты). Когда метод внешнего объекта в своей документации ожидает параметр типа SAFEARRAY — обычный Массив 1С туда передать нельзя, только COMSafeArray. Внутри же кода 1С, где COM не участвует, обычный Массив удобнее практически во всём: индексация через [], Для Каждого, Добавить/Удалить, произвольные типы элементов без ограничений.
Многомерность нативная, а не вложенная
Многомерный Массив — это на самом деле массив массивов (вложенность), а измерения COMSafeArray — часть самого объекта, как отдельная сущность у COM/Windows API. Отсюда и другой синтаксис доступа: не Массив[i][j], а СМассив.GetValue(i, j), см. Чтение и запись значений. Собрать из COMSafeArray обычный Массив (в том числе вложенный для многомерного) — одним вызовом Выгрузить(), без ручного цикла.
Нет обхода Для Каждого
В отличие от всех остальных универсальных коллекций значений 1С, Для Каждого Элемент Из СМассив Цикл не работает — перебор только явным циклом по границам измерений, см. Измерения и границы.
Недоступен на тонком клиенте
Методы COMSafeArray работают на сервере, толстом клиенте и во внешнем соединении — но не на тонком клиенте, в отличие от Массива и остальных универсальных коллекций. Ожидаемое ограничение: COM-взаимодействие в принципе требует локальной OS-инфраструктуры, которой у тонкого/веб-клиента нет.
Нет фиксированной версии и сравнения по значению
У COMSafeArray нет аналога ФиксированныйМассив — неизменяемых версий не бывает. СМассив1 = СМассив2 сравнивает ссылки на объект, а не содержимое, как и у остальных ссылочных коллекций.