Консультация Беларусь
Консультация Россия
Блог

Учимся делать поиск по массиву структур

Постановка задачи:

На практике часто бывает нужно работать с массивом, каждый элемент которого содержит структуру. При этом было бы хорошо иметь несколько универсальных функций, которые могли бы решать следующие задачи:
1) Поиск элемента массива структур по одному значению;
2) Поиск элемента массива структур по двум значениям;
3) Поиск минимального и максимального значения в массиве структур.

С подобной задачей можно столкнуться, например, когда мы запросом получаем информацию из базы данных, и хотим вернуть ее на клиент в виде таблицы значений. Но с таблицей значений на момент написания статьи в тонком клиенте работать нельзя. Поэтому, чтобы вернуть таблицу значений на клиент можем использовать функцию БСП "ТаблицаЗначенийВМассив":


В результате на клиенте получаем массив, каждый элемент которого содержит структуру:


Исходные данные:

1. Учебная конфигурация;
2. Платформа 8.3.19.1150.

Решение задачи "Поиск элемента массива структур по одному значению":


Пояснение:

В цикле обходим каждый элемент массива структур:


Во вложенном цикле обходим структуру, где "Ключ" это наименование столбца в запросе, а "Значение" его значение:



Далее проверяем, если "Ключ" равен ключу, который мы ищем, и значение равно значению, которое мы ищем, фиксирует результат и прерываем цикл.

В результате получаем:


Решение задачи "Поиск элемента массива структур по двум значениям":


Пояснение:

В цикле обходим каждый элемент массива структур.

Если второй ключ для поиска не указан, обходим структуру текущего элемента массива и проверяем, есть ли в ней нужное значение.

Если второй ключ для поиска указан, в переменные "ЗначениеСтруктуры" и "ЗначениеСтруктуры2" помещаем соответствующие значения искомых ключей и сравниваем их с искомыми значениями:




В результате получаем:


Решение задачи "Поиск минимального и максимального значения в массиве структур":


Пояснение:

В цикле обходим элементы массива. Во вложенном цикле обходим структуру и сравниваем минимальное значение со значением в текущей итерации.

В результате получаем:


Аналогичным образом ищем максимальное значение:


В результате получаем:


Ссылки для скачивания:

  1. Поиск элемента массива структур по одному значению;
  2. Поиск элемента массива структур по двум значениям;
  3. Поиск минимального значения в массиве структур;
  4. Поиск максимального значения в массиве структур.
Программирование