Есть ТЧ документа, в которой необходимо увеличивать количество товара, если он там имеется, иначе добавить новую строку. Список добавляемого товара создается запросом на основе выбранных документов и заносится в ТЗ. Собственно вопрос: как можно проверить, есть ли в этом документе товар из ТЗ?
---
Что-то примерно такое:

```1c
    Отбор = Новый Структура();
    Отбор.Вставить("Номенклатура",Номенклатура);
    НайденныеСтроки = ТЗ_СписокНоменклатуры.НайтиСтроки(Отбор);

    Если НайденныеСтроки.Количество() > 0 Тогда
    СтрокаТЗ = ТЗ_СписокНоменклатуры.Получить(ТЗ_СписокНоменклатуры.Индекс(НайденныеСтроки[0]));
    СтрокаТЗ.КоличествоПодобрано = СтрокаТЗ.КоличествоПодобрано + 1;
    Если СтрокаТЗ.КоличествоПодобрано > СтрокаТЗ.Количество Тогда
    СтрокаТЗ.КоличествоПодобрано = СтрокаТЗ.Количество
    КонецЕсли;
    СтрокаТЗ.ВыделяемаяСтрока = Истина;
    СтрокаТЗ.ЯчейкаИсточник = ЯчейкаИсточник;
    СтрокаТЗ.ЯчейкаПриемник = ЯчейкаПриемник;
    Иначе
    СтрокаТЗ = ТЗ_СписокНоменклатуры.Добавить();
    СтрокаТЗ.Номенклатура = Номенклатура;
    СтрокаТЗ.КоличествоПодобрано = 1;
    СтрокаТЗ.ЯчейкаИсточник = ЯчейкаИсточник;
    СтрокаТЗ.ЯчейкаПриемник = ЯчейкаПриемник;
    КонецЕсли;
```
---
Используйте метод свернуть().
---
ТЧ.Найти
---
Именно так. Плюс СП в помощь!
---
если один-ко-многим, то да, но я так понял там отношение многое-ко-многим
---
Добавлять строки по-любому по одной придется. А так - да, запрос может выйти эффективнее, особенно при большом количестве строк.
---
строк может выходить примерно 500
---
Забыл уточнить. Поиск по нескольким колонкам (номенклатура,характеристика, серия)
---
тогда можно попробовать через ТЧ.НайтиСтроки и задать в отборе ваши поля, на выходе будет массив строк, и их уже обрабатывать
---
Выгрузить колонки товаров из обеих таблиц и сверить эти колонки запросом - самое простое.

можно, конечно, городить и код на три страницы
---
Выгрузите ТЧ в таблицы, передайте ее в запрос, в запросе "Объединить все" соединитесь и сделайте группировку.
---
первая таблица - табличная часть
вторая таблица - свернутая первая таблица
третья таблица - запрос с учетом второй

в третьей все делаешь - заполняешь ТЧ документа из данных третьей - основные параметры и дополняешь изпервой (все остальные параметры)
---
при подборе как раз работает так как вы описали, увеличивает количество или добавляет новую строку. Может и делать ничего не надо?
---
Можно таки посмотреть, что делали и что не получилось?
---
Запросом выбирал ссылки на документ и его ТЧ с номенклатурой с итогами по ссылкам. Далее получаю объект документа, в который нужно увеличить/добавить строки. Выполняю запрос с обходом группировок, т.к. на каждый документ нужно создавать документ закрытия заказа. И вот после этого стоп-машина.

Вот сам кусок кода, где я не понимаю, когда вставлять товары в ТЧ ДокументРезерва.Товары и делать свертку

```1c
    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаЗаказовПокупателя = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаЗаказовПокупателя.Следующий() Цикл

    ВнутреннийЗаказОбъект = ДокументРезерва.ПолучитьОбъект();
    ЗакрытиеЗаказа = Документы.ЗакрытиеЗаказовПокупателей.СоздатьДокумент();
    ЗакрытиеЗаказа.Дата = ТекущаяДата();
    ЗакрытиеЗаказа.Организация = ВнутреннийЗаказОбъект.Организация;
    ЗакрытиеЗаказа.ВидОперации = Перечисления.ВидыОперацийЗакрытиеЗаказовПокупателей.ЗакрытиеЗаказов;
    ВыборкаСсылкаЗаказа = ВыборкаЗаказовПокупателя.Выбрать();

    Пока ВыборкаСсылкаЗаказа.Следующий() Цикл

    СтрокаЗакрытиеЗаказа = ЗакрытиеЗаказа.Заказы.Добавить();
    СтрокаЗакрытиеЗаказа.ЗаказПокупателя = ВыборкаСсылкаЗаказа.Ссылка;

    КонецЦикла;

    КонецЦикла;
```
---
Что-то примерно такое:

```1c
    Отбор = Новый Структура();
    Отбор.Вставить("Номенклатура",Номенклатура);
    НайденныеСтроки = ТЗ_СписокНоменклатуры.НайтиСтроки(Отбор);

    Если НайденныеСтроки.Количество() > 0 Тогда
    СтрокаТЗ = ТЗ_СписокНоменклатуры.Получить(ТЗ_СписокНоменклатуры.Индекс(НайденныеСтроки[0]));
    СтрокаТЗ.КоличествоПодобрано = СтрокаТЗ.КоличествоПодобрано + 1;
    Если СтрокаТЗ.КоличествоПодобрано > СтрокаТЗ.Количество Тогда
    СтрокаТЗ.КоличествоПодобрано = СтрокаТЗ.Количество
    КонецЕсли;
    СтрокаТЗ.ВыделяемаяСтрока = Истина;
    СтрокаТЗ.ЯчейкаИсточник = ЯчейкаИсточник;
    СтрокаТЗ.ЯчейкаПриемник = ЯчейкаПриемник;
    Иначе
    СтрокаТЗ = ТЗ_СписокНоменклатуры.Добавить();
    СтрокаТЗ.Номенклатура = Номенклатура;
    СтрокаТЗ.КоличествоПодобрано = 1;
    СтрокаТЗ.ЯчейкаИсточник = ЯчейкаИсточник;
    СтрокаТЗ.ЯчейкаПриемник = ЯчейкаПриемник;
    КонецЕсли;
```
---
Благодарю