На практике часто бывает нужно работать с массивом, каждый элемент которого содержит структуру. При этом было бы хорошо иметь несколько универсальных функций, которые могли бы решать следующие задачи:
1) Поиск элемента массива структур по одному значению;
2) Поиск элемента массива структур по двум значениям;
3) Поиск минимального и максимального значения в массиве структур.
С подобной задачей можно столкнуться, например, когда мы запросом получаем информацию из базы данных, и хотим вернуть ее на клиент в виде таблицы значений. Но с таблицей значений на момент написания статьи в тонком клиенте работать нельзя. Поэтому, чтобы вернуть таблицу значений на клиент можем использовать функцию БСП "ТаблицаЗначенийВМассив":
![](https://static.tildacdn.com/tild3035-3538-4938-a139-393865643863/1.png)
В результате на клиенте получаем массив, каждый элемент которого содержит структуру:
![](https://static.tildacdn.com/tild3939-6466-4232-b465-643331356433/2.png)
Исходные данные:
1. Учебная конфигурация;
2. Платформа 8.3.19.1150.
Решение задачи "Поиск элемента массива структур по одному значению":
![](https://static.tildacdn.com/tild6330-3332-4461-a463-636362656664/3.png)
Пояснение:
В цикле обходим каждый элемент массива структур:
![](https://static.tildacdn.com/tild6534-3033-4265-a434-613436376666/4.png)
Во вложенном цикле обходим структуру, где "Ключ" это наименование столбца в запросе, а "Значение" его значение:
![](https://static.tildacdn.com/tild3338-3963-4562-a562-303038373136/5.png)
![](https://static.tildacdn.com/tild3732-3634-4732-b963-636462393164/6.png)
Далее проверяем, если "Ключ" равен ключу, который мы ищем, и значение равно значению, которое мы ищем, фиксирует результат и прерываем цикл.
В результате получаем:
![](https://static.tildacdn.com/tild3835-3166-4465-a337-666561363234/7.png)
Решение задачи "Поиск элемента массива структур по двум значениям":
![](https://static.tildacdn.com/tild3931-3231-4136-b439-626537356237/8.png)
Пояснение:
В цикле обходим каждый элемент массива структур.
Если второй ключ для поиска не указан, обходим структуру текущего элемента массива и проверяем, есть ли в ней нужное значение.
Если второй ключ для поиска указан, в переменные "ЗначениеСтруктуры" и "ЗначениеСтруктуры2" помещаем соответствующие значения искомых ключей и сравниваем их с искомыми значениями:
![](https://static.tildacdn.com/tild3532-3637-4435-b764-303938663662/9.png)
![](https://static.tildacdn.com/tild3832-3762-4261-a132-353232623737/10.png)
![](https://static.tildacdn.com/tild6264-3535-4431-b363-656637636439/11.png)
В результате получаем:
![](https://static.tildacdn.com/tild3834-3864-4831-a662-656161653865/12.png)
Решение задачи "Поиск минимального и максимального значения в массиве структур":
![](https://static.tildacdn.com/tild6263-3539-4964-b462-356234623536/15.png)
Пояснение:
В цикле обходим элементы массива. Во вложенном цикле обходим структуру и сравниваем минимальное значение со значением в текущей итерации.
В результате получаем:
![](https://static.tildacdn.com/tild6263-6134-4261-b031-313564636531/16.png)
Аналогичным образом ищем максимальное значение:
![](https://static.tildacdn.com/tild3362-6461-4435-b630-356435623837/13.png)
В результате получаем:
![](https://static.tildacdn.com/tild3461-6561-4632-a363-613230326136/14.png)
Ссылки для скачивания: