У меня массив из структур получился (от ТЗ отказался из-за рекомендации 1Са)
в нем можно искать только конкретное значение элемента?
И можно ли вообще так искать? да и варианты бы еще возможные знать
---
только перебором
---
Насколько известно, в массиве структур поиск только перебором.
Ну или преобразовать в ТЗ и дальше уже искать штатно))
---
от ТЗ отказался из-за рекомендации 1Са
Это вот для конкретного вашего случая, или вообще?
---
Да для моего случая. У меня в форме очень много вызовов одной и той же функции с этим массивом. Эсли буду использовать ТЗ - боюсь на быстродействие повлияет.
---
Для поиска вам придется обходить массив и искать в структуре. Как выяснилось на одной задаче, обход массива, по сравнению с поиском в нем, операция не дешевая. Может не так плоха ТЗ?
---
Нашел способ значительно сократить количество итераций. Так что выкручусь
---
только перебором
---
как вариант, можно создать индекс (еще один массив содержащий значение из структуры по которому ищем) и далее поиск по индекс-массиву ...
---
Если поиск по одному из ключевых значений в структуре, то чем создавать еще один массив, наверное, лучше использовать сразу соответствие, вместо первичного массива. Или вы про что-то другое?

```1c
    тест = Новый Соответствие();
    тест.Вставить("мой ключ", Новый Структура("Поле1, Поле2",1,2));
    тест.Вставить("не ключ", Новый Структура("Поле1, Поле2", 3,5));
    Если тест.Получить("мой ключ") <> Неопределено Тогда
    Сообщить("Нашли");
    КонецЕсли;
```

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

Для автора вопроса - подозреваю, что вам порекомендовали массив структур не потому, что тз медленнее (т.к. передача по ссылке ну никак не медленнее передачи массива), а потому, что вы есть необходимость передачи чего-то с клиента на сервер.
Хотя..,8.1, толстый клиент? Тогда передавайте тз, не мудрите.
---
Каюсь, рекомендации вспомнил лишь к случаю.
     Собственно проблема сводилась к тому, что ранее работал просто массив значение. А тут потребовалось добавить еще один параметр. Причем в режиме многие ко многим. Оба параметра могли во всяких сочетаниях быть.
    И вся беда в том что стал ломать голову как бы уже давно написанный код переписать с меньшими трудозатратами.
    В общем нашел небольшое логическое решение из тупика. - Там логически только пара ситуаций критическая. Получился массив соответствий, поиски в нем ограничил до минимума, и добавил еще один массив второго параметра в зависимости от первого.
---
(2)
(9)
(10)Вы не поверите, ничего не получилось. Точнее получилось совершенно неожиданный результат. Получился массив структур в котором все элементы равны последнгему добавленному
---
Чегож не поверить - верю! Получился массив со ссылками на одну и ту же структуру. Надо что-то навроде
```1c
    Массив.Добавить(Новый Структура("Один", 1));
    Массив.Добавить(Новый Структура("Два", 2));
```
---
К стати, получается метод "Найти" в массиве структур работает. Он у меня всегда выдавал 0 так как все элементы были равны. Выдавал просто первый как обычно. И не надо было ТЗ, соответствий и тд
---
получается метод "Найти" в массиве структур работает. Он работает, только если ему передать собственный элемент. В общем случае это не работает.
Использование массива структур может быть оправдано только в редких случаях.
---
Не понятно, что вы вообще сделали.
если вам нужны соответствия, то уж точно не нужен их массив.

Не видя вашего кода, трудно что-то посоветовать.

Допустим сейчас есть массив из 2-х элементов:

```1c
    мМасив.Добавить(Новый Структура("поле1, Поле2", 1, 2))
    мМасив.Добавить(Новый Структура("поле1, Поле2", 11, 12)).
```

Если надо искать только по "поле2", то забываем про этот массив и используем только новое
соответствие:

```1c
    мСоотв = Новый Соответствие();
    Для Каждого Стр Из мМассив Цикл
    мСоотв.Вставить(Стр.Поле2, Стр); //обратите внимание, мы каждый раз добавляем, а не перезаписываем
    КонецЦикла;
```

мМасив = Неопределено; //он более не нужен Теперь у нас есть структура, где все очень быстро можно получать.

И еще раз - такое работает только если нужен поиск только по одному полю структуры.

В ином случае намного правильнее использовать Табл. значений (индексированную).
---
если вам нужны соответствия, то уж точно не нужен их массив. Кто сказал, что в массив соответствий не может быть разных значений в одинаковых ключах?
---
Если проверить наличие структуры (есть или нет) можно попробовать штатный метод массива "Найти"
---
Найти у меня не сработал, всегда, при любых вариантах возвращает 0
Специальную обработку сделал для проверки. Может и сработает в другой версии платформы, у меня 8,1
---
после долгих экспериментов и размышлений выяснилось, сто метод найти прекрасно справлялся. Единственное - при добавлении нового элемента нужно было структуру элемента
 пересоздавать заново, причем похоже не переменной, иначе при ее пересоздании предыдущие элементы исчезнут, в непосредственно кодом
Массив.Добавить(Новый Структура(.......))
. А то она добавлялась ссылкой и в итоге все элементы массива равны друг другу.