ИндексКоллекции

Типы · CollectionIndex

Индекс коллекции.

Полное описание, параметры и ограничения

ИндексКоллекции (CollectionIndex)

ИндексКоллекции (CollectionIndex)

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

Элементы коллекции:
Строка
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются имена колонок таблицы значений.
Возможно обращение к элементу посредством оператора [...]. В качестве аргумента передается индекс элемента.

Описание:

Индекс коллекции.

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

См. также:
ИндексыКоллекции, метод Добавить
ИндексыКоллекции, метод Удалить

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

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

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

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

Добавить индекс для повторного отбора товаров по коду

Индекс ускоряет некоторые операции поиска в таблице значений, но не создаёт новых строк и не заменяет проверку результата.

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

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

Подготовка

  1. Серверный контекст. Таблица маленькая специально для проверки результата, а не измерения производительности.

  2. Не путайте индекс поиска ИндексКоллекции и числовую позицию строки.

Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код");
Товары.Колонки.Добавить("Количество");
Для Номер = 1 По 3 Цикл
    СтрокаТовара = Товары.Добавить();
    СтрокаТовара.Код = ?(Номер < 3, "A-01", "B-02");
    СтрокаТовара.Количество = Номер;
КонецЦикла;
ИндексКода = Товары.Индексы.Добавить("Код");
Для Каждого ИмяКолонки Из ИндексКода Цикл
    Сообщить("Колонка индекса: " + ИмяКолонки);
КонецЦикла;
Сообщить(Товары.Индексы.Количество());
Найденные = Товары.НайтиСтроки(Новый Структура("Код", "A-01"));
Сообщить(Найденные.Количество());
Товары.Индексы.Удалить(ИндексКода);
Сообщить(Товары.Индексы.Количество());
Повторно = Товары.НайтиСтроки(Новый Структура("Код", "A-01"));
Сообщить(Повторно.Количество());
Товары.Индексы.Добавить("Код,Количество");
Товары.Индексы.Очистить();
Сообщить(Товары.Количество());

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

  1. Создаём два товара с кодом A-01 и один с кодом B-02.

  2. Добавить возвращает индекс; обход индекса даёт имена входящих в него колонок.

  3. Ищем все совпадения по структуре отбора и повторяем поиск после удаления индекса.

  4. Очистить удаляет все индексы, но сохраняет строки таблицы.

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

  1. С индексом и без него найдено по 2 строки; состав индекса — Код.

  2. После Удалить число индексов равно 0; после Очистить число строк остаётся 3.

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

Результат отбора не меняется при удалении индекса.

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

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

  2. Для оценки ускорения используйте отдельные большие учебные данные и замер времени; три строки этого не показывают.

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

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

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

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

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