На практике часто бывает нужно работать с массивом, каждый элемент которого содержит структуру. При этом было бы хорошо иметь несколько универсальных функций, которые могли бы решать следующие задачи: 1) Поиск элемента массива структур по одному значению; 2) Поиск элемента массива структур по двум значениям; 3) Поиск минимального и максимального значения в массиве структур.
С подобной задачей можно столкнуться, например, когда мы запросом получаем информацию из базы данных, и хотим вернуть ее на клиент в виде таблицы значений. Но с таблицей значений на момент написания статьи в тонком клиенте работать нельзя. Поэтому, чтобы вернуть таблицу значений на клиент можем использовать функцию БСП "ТаблицаЗначенийВМассив":
В результате на клиенте получаем массив, каждый элемент которого содержит структуру:
Решение задачи "Поиск элемента массива структур по одному значению":
Пояснение:
В цикле обходим каждый элемент массива структур:
Во вложенном цикле обходим структуру, где "Ключ" это наименование столбца в запросе, а "Значение" его значение:
Далее проверяем, если "Ключ" равен ключу, который мы ищем, и значение равно значению, которое мы ищем, фиксирует результат и прерываем цикл.
В результате получаем:
Решение задачи "Поиск элемента массива структур по двум значениям":
Пояснение:
В цикле обходим каждый элемент массива структур.
Если второй ключ для поиска не указан, обходим структуру текущего элемента массива и проверяем, есть ли в ней нужное значение.
Если второй ключ для поиска указан, в переменные "ЗначениеСтруктуры" и "ЗначениеСтруктуры2" помещаем соответствующие значения искомых ключей и сравниваем их с искомыми значениями:
В результате получаем:
Решение задачи "Поиск минимального и максимального значения в массиве структур":
Пояснение:
В цикле обходим элементы массива. Во вложенном цикле обходим структуру и сравниваем минимальное значение со значением в текущей итерации.