Есть обработка драйвера ТСД.
Происходит поиск номенклатуры в ТЧ документа методом найти по номенклатуре.
Но данное действие ищет только одну строку с наименованием номенклатуры, а нужен отбор еще и по характеристике.

Оговорюсь сразу метод НайтиСтроки не подходит т.к. возвращает массив. А мне для дальнейших действий нужна именно строка.
У кого есть идеи?.
Или как из массива получить строку или как получить строку из ТЧ по Номенклатуре и Характеристике. Заранее спасибо за советы!

Сейчас вот такой модуль

```1c
    НайденнаяСтрока = ПересчетТоваров.Товары.Найти(Номенклатура,"Номенклатура");

    Если НайденнаяСтрока = Неопределено Тогда
    Возврат СформироватьОшибку(МассивДляОтправки,"Товара нет в документе!");
    КонецЕсли;

    ДобавитьКонтрол(МассивДляОтправки,"КодТовараТовара",Номенклатура.Код,"0","0","0");
    ДобавитьКонтрол(МассивДляОтправки,"Номенклатура",Номенклатура.Наименование,"1","1","0");
    ДобавитьКонтрол(МассивДляОтправки,"КоличествоПлан",НайденнаяСтрока.КоличествоУчет,"1","1","0");
    ДобавитьКонтрол(МассивДляОтправки,"КоличествоФакт",НайденнаяСтрока.Количество,"1","1","0");
```
---
так в чем проблема из массива строку достать?

```1c
    Для Каждого Строка Из Выборка цикл
    СтруктураОтбора = Новый Структура;
    СтруктураОтбора.Вставить("Код", "000000001");
    СтруктураОтбора.Вставить("Код","000000002");
    СтруктураОтбора.Вставить("Код","000000003");
    Данные = Выборка.НайтиСтроки(СтруктураОтбора);
    Если Не Данные.Количество() = 0 Тогда

    Код = Данные[0].Код;

    КонецЕсли;
    КонецЦикла;
```

Вот тут возвращается строка)
---
Оговорюсь сразу метод НайтиСтроки не подходит т.к. возвращает массив. А мне для дальнейших действий нужна именно строка. А что мешает использовать ТЗ.НайтиСтроки(Отбор)[0]?
---
```1c
    Если МассивСтрок.Количество() > 0
```
---
В чем проблемы сделать так:

```1c
    МассивСтрок = ТЧ.НайтиСтроки(Отбор);

    Для Каждого Строка Из МассивСтрок Цикл

    //что-то там делать с Строка.
    КонецЦикла;
```

?
---
Оговорюсь сразу метод НайтиСтроки не подходит т.к. возвращает массив. А мне для дальнейших действий нужна именно строка. А что мешает использовать ТЗ.НайтиСтроки(Отбор)[0]?
---
Так находит но когда нет номенклатуры в ТЧ пишет Что индекс находится за пределами массива. Как сделать исключение есле штрихкод не находится в ТЧ
---
```1c
    Если МассивСтрок.Количество() > 0
```
---
а как сейчас определяется нашлась строка в ТЧ или нет? Точно так же.....
---
не совсем, "неопределено" вернут
а когда мы получаем массив найденных строк, то нам вернут пустой массив
---
так в чем проблема из массива строку достать?

```1c
    Для Каждого Строка Из Выборка цикл
    СтруктураОтбора = Новый Структура;
    СтруктураОтбора.Вставить("Код", "000000001");
    СтруктураОтбора.Вставить("Код","000000002");
    СтруктураОтбора.Вставить("Код","000000003");
    Данные = Выборка.НайтиСтроки(СтруктураОтбора);
    Если Не Данные.Количество() = 0 Тогда

    Код = Данные[0].Код;

    КонецЕсли;
    КонецЦикла;
```

Вот тут возвращается строка)
---
```1c
    //Отбор с использованием построителя отчетов
    &НаКлиенте
    Процедура ОтборПостроителем(Команда)
    ОтборПостроителемНаСервере();
    КонецПроцедуры

    &НаСервере
    Процедура ОтборПостроителемНаСервере()

    ТаблицаТовары = РеквизитФормыВЗначение("ИсходнаяТаблица");

    СписокНаименований = Новый СписокЗначений;
    СписокНаименований.Добавить("Ручка");
    СписокНаименований.Добавить("Карандаш");

    Построитель = Новый ПостроительЗапроса;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаТовары);

    Отбор = Построитель.Отбор;
    ОтборНаименование = Отбор.Добавить("Наименование");

    ОтборНаименование.ВидСравнения = ВидСравнения.ВСписке;
    ОтборНаименование.Использование = Истина;
    ОтборНаименование.Значение = СписокНаименований;

    Построитель.Выполнить();
    ТаблицаРезультат = Построитель.Результат.Выгрузить();

    ЗначениеВРеквизитФормы(ТаблицаРезультат, "Результат");

    КонецПроцедуры
```

Отбор - можно добавлять сколько угодно...
---
Забыл сказать что это обычные формы
---
Понимаю что вопросу "сто лет в обед", но решение может быть еще банальнее (для тех кто набредет в будущем):
необходимо должное согласование типов. Если мы ищем в Колонке типа (число), то по дефолту сравнивается Строка с Числом, поэтому нужно явно в первом аргументе указывать Найти(Число(Переменная), "НомерТаблицы"). Где НомерТаблицы числовая колонка.
---
Четко отбор по числу и искал) Спасибо.