Индекс коллекции.
Полное описание, параметры и ограничения
ИндексКоллекции (CollectionIndex)
ИндексКоллекции (CollectionIndex)
Доступен, начиная с версии 8.1.
Элементы коллекции:
Строка
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются имена колонок таблицы значений.
Возможно обращение к элементу посредством оператора [...]. В качестве аргумента передается индекс элемента.
Описание:
Индекс коллекции.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
ИндексыКоллекции, метод Добавить
ИндексыКоллекции, метод Удалить
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Добавить индекс для повторного отбора товаров по коду
Индекс ускоряет некоторые операции поиска в таблице значений, но не создаёт новых строк и не заменяет проверку результата.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Серверный контекст. Таблица маленькая специально для проверки результата, а не измерения производительности.
Не путайте индекс поиска ИндексКоллекции и числовую позицию строки.
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код");
Товары.Колонки.Добавить("Количество");
Для Номер = 1 По 3 Цикл
СтрокаТовара = Товары.Добавить();
СтрокаТовара.Код = ?(Номер < 3, "A-01", "B-02");
СтрокаТовара.Количество = Номер;
КонецЦикла;
ИндексКода = Товары.Индексы.Добавить("Код");
Для Каждого ИмяКолонки Из ИндексКода Цикл
Сообщить("Колонка индекса: " + ИмяКолонки);
КонецЦикла;
Сообщить(Товары.Индексы.Количество());
Найденные = Товары.НайтиСтроки(Новый Структура("Код", "A-01"));
Сообщить(Найденные.Количество());
Товары.Индексы.Удалить(ИндексКода);
Сообщить(Товары.Индексы.Количество());
Повторно = Товары.НайтиСтроки(Новый Структура("Код", "A-01"));
Сообщить(Повторно.Количество());
Товары.Индексы.Добавить("Код,Количество");
Товары.Индексы.Очистить();
Сообщить(Товары.Количество());Разбор по шагам
Создаём два товара с кодом A-01 и один с кодом B-02.
Добавить возвращает индекс; обход индекса даёт имена входящих в него колонок.
Ищем все совпадения по структуре отбора и повторяем поиск после удаления индекса.
Очистить удаляет все индексы, но сохраняет строки таблицы.
Как проверить результат
С индексом и без него найдено по 2 строки; состав индекса — Код.
После Удалить число индексов равно 0; после Очистить число строк остаётся 3.
Ожидаемый результат
Результат отбора не меняется при удалении индекса.
На что обратить внимание
Индекс занимает память и требует поддержки при изменении таблицы: не добавляйте индекс на каждую колонку автоматически.
Для оценки ускорения используйте отдельные большие учебные данные и замер времени; три строки этого не показывают.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.