COMSafeArray.GetDimensions

Методы · GetDimensions

Получает количество измерений массива COMSafeArray.

Синтаксис

GetDimensions()

Примеры платформы

КоличествоИзмерений = Массив.GetDimensions();
Полное описание, параметры и ограничения

COMSafeArray.GetDimensions (COMSafeArray.GetDimensions)

COMSafeArray (COMSafeArray)

GetDimensions (GetDimensions)

Доступен, начиная с версии 8.0.

Синтаксис:
GetDimensions()
Возвращаемое значение:
Тип: Число.

Описание:

Получает количество измерений массива COMSafeArray.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Пример:

КоличествоИзмерений = Массив.GetDimensions();

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Передать матрицу двух товаров в COMSafeArray

Из двух заполненных массивов строк строим матрицу VT_I4; показываем тип, размеры, чтение и заполнение второго независимого массива.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Собственная учебная база на Windows. Фрагмент вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи, выполняемой на Windows.

  2. Все значения и COMSafeArray создаются самим примером в памяти. COMОбъект, Excel/Word, внешние компоненты, базы и сеть не используются.

  3. Запускайте три задачи отдельно. Размеры маленькие и фиксированные; не заменяйте их неограниченными значениями из внешнего API.

  4. Имена GetDimensions/GetValue/SetValue/Resize — реальные имена методов установленной справки, не придуманный английский перевод.

  5. Сверка API/статические тесты не подтверждают фактическое выполнение COMSafeArray в установленной 1С.

ИсходныеСтроки = Новый Массив;
Первая = Новый Массив;
Первая.Добавить(10);
Первая.Добавить(20);
Первая.Добавить(30);
Вторая = Новый Массив;
Вторая.Добавить(40);
Вторая.Добавить(50);
Вторая.Добавить(60);
ИсходныеСтроки.Добавить(Первая);
ИсходныеСтроки.Добавить(Вторая);
Матрица = Новый COMSafeArray(ИсходныеСтроки, "VT_I4", 2, 3);
Сообщить(Матрица.GetDimensions() = 2);
Сообщить(Матрица.GetType() = "VT_I4");
Сообщить(Матрица.GetLength(0) = 2);
Сообщить(Матрица.GetLength(1) = 3);
Сообщить(Матрица.GetValue(0, 0) = 10);
Сообщить(Матрица.GetValue(1, 2) = 60);
ЗаполненнаяКопия = Новый COMSafeArray("VT_I4", 2, 3);
Для НомерСтроки = 0 По 1 Цикл
    Для НомерКолонки = 0 По 2 Цикл
        ЗаполненнаяКопия.SetValue(НомерСтроки, НомерКолонки, Матрица.GetValue(НомерСтроки, НомерКолонки));
    КонецЦикла;
КонецЦикла;
ЗаполненнаяКопия.SetValue(0, 0, 99);
Сообщить(ЗаполненнаяКопия.GetValue(0, 0) = 99);
Сообщить(Матрица.GetValue(0, 0) = 10);
ВыгруженныеСтроки = Матрица.Выгрузить();
Сообщить(ВыгруженныеСтроки.Количество() = 2);
Сообщить(ВыгруженныеСтроки.Получить(1).Количество() = 3);
Сообщить(ВыгруженныеСтроки.Получить(1).Получить(2) = 60);

Разбор по шагам

  1. Две строки исходных данных 10/20/30 и 40/50/60 заданы полностью, без многоточия заполните массив.

  2. Конструктор Из массива 1 получает вложенные Массив, строку VT_I4 и размеры 2,3. Размерность 0 — старшая, здесь строки; размерность 1 — колонки.

  3. VT_I4 — знаковое целое 4 байта, не произвольная точность числа 1С. Все наши значения заведомо помещаются в этот диапазон.

  4. Конструктор По типу элемента 1 задаёт тип и размеры, но не гарантирует исходные значения. Поэтому каждую ячейку второго массива заполняем до чтения.

  5. Изменение второй матрицы не меняет первую. Выгрузить копирует содержимое в обычные вложенные массивы 1С, а не возвращает тот же COMSafeArray.

Как проверить результат

  1. Одиннадцать логических проверок дают Истина; исходная матрица сохранила 10 в первой ячейке.

  2. Выгруженный второй ряд содержит три значения, последнее 60. Не запущено внешнее приложение.

Ожидаемый результат

Показана настоящая двумерная структура COM с двумя способами конструирования и независимым заполнением.

На что обратить внимание

  1. Не читайте ячейки конструктора по типу до явного заполнения.

  2. Один плоский массив из шести значений не выдаётся здесь за две вложенные строки.

  3. VT_I4 нельзя использовать для строк или дробных денежных сумм без согласования типа COM.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.