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

Может немножко сумбурно, вот код. Читаются в ТЗ из Excel. В ТЗ я уже протянула поле "Помещение".

```1c
    ТЗ = ПолучитьТоварыДляЗаказа()
    ...
    СформироватьЗаказВ1С(Дата, Контрагент, ТЗ)
```

Хотелось бы

```1c
    ТЗ = ПолучитьТоварыДляЗаказа()
    ...
    ПомещенияВЗаказе = ТЗ.Свернуть("Помещение");
    Для каждого стр из ПомещенияВЗаказе
    ТЗ_Фильтр = ???
    СформироватьЗаказВ1С(Дата, Контрагент, ТЗ_Фильтр)
    КонецЦикла;
```
---
Скопировать(<ПараметрыОтбора>, <Колонки>)
Параметры:
<ПараметрыОтбора> (необязательный)
Тип: Структура.
Ключ структуры - идентификатор колонки, а значение структуры - значение отбора.
<Колонки> (необязательный)
Тип: Строка.
Список колонок для копирования в формате: "Колонка1, Колонка2...".
---
Спасибо всем, это я торможу...

```1c
    ТЗ = ПолучитьТоварыДляЗаказа()
    ПараметрыСклада = ТЗ.Скопировать();
    ПараметрыСклада.Свернуть("Этаж, Линия");
    ...
    Для каждого Стр из ПараметрыСклада цикл
    Отбор = Новый Структура;
    Отбор.Вставить("Этаж", стр.Этаж);
    Отбор.Вставить("Линия", стр.Линия);
    ДанныеЗаказа = ТЗ.Скопировать(Отбор);

    СформироватьЗаказВ1С(Дата, Контрагент, ДанныеЗаказа )
    КонецЦикла;
```

ДанныеЗаказа , ТЗ - это ТаблицаЗначений
---
Скопировать(<ПараметрыОтбора>, <Колонки>)
Параметры:
<ПараметрыОтбора> (необязательный)
Тип: Структура.
Ключ структуры - идентификатор колонки, а значение структуры - значение отбора.
<Колонки> (необязательный)
Тип: Строка.
Список колонок для копирования в формате: "Колонка1, Колонка2...".
---
Зависит от сложности фильтра. Если предполагается обойтись условиями "равно" на значения колонок, то фильтром можно сделать структуру и потом пользоваться процедурами вроде НайтиСтроки или как в (2). Если условия сложнее, то можно, конечно, устроить запрос, но (дальше любителям академически правильного оптимального программирования лучше не смотреть) я бы использовал перебор строк.
---
Парам = Новый Структура("Помещение",Стр);
ТЗ_Фильтр = ТЗ.НайтиСтроки(Парам);
---
Это уже будет не ТЗ)
---
Вот и я про то, что в результате ТЗ не получается. Ни через Отбор, ни через НайтиСтроки...
---
А зачем вам именно ТЗ на выходе? Почему не подходит массив строк или соответствие по ключу?
---
Чтобы функцию не переписывать...
---
Если у вас в функции один большой цикл Для Каждого, то передав массив ничего переписывать и не придется.

И это будет экономней по памяти (т.к. будут ссылки на те же строки), чем делать копию таблицы, пусть и с отбором (если мы говорим о большой ТЗ, конечно).
---
Спасибо всем, это я торможу...

```1c
    ТЗ = ПолучитьТоварыДляЗаказа()
    ПараметрыСклада = ТЗ.Скопировать();
    ПараметрыСклада.Свернуть("Этаж, Линия");
    ...
    Для каждого Стр из ПараметрыСклада цикл
    Отбор = Новый Структура;
    Отбор.Вставить("Этаж", стр.Этаж);
    Отбор.Вставить("Линия", стр.Линия);
    ДанныеЗаказа = ТЗ.Скопировать(Отбор);

    СформироватьЗаказВ1С(Дата, Контрагент, ДанныеЗаказа )
    КонецЦикла;
```

ДанныеЗаказа , ТЗ - это ТаблицаЗначений
---
Пусть переименует переменную)