Добрый день, помогите решить такой вопрос.
Есть таблица значений в ней данные которые отличаются друг от друга полем Смена.
На освании этих данных я создаю документ "Отчет о продажах", нужно создать такое количество НовыйОРП сколько смен, и чтобы попадали туда только нужные данным по сменам?

```1c
    НовыйОРП = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
    Для каждого СтрТЗПродажи ИЗ Объект.Продажи Цикл
    СтрОРП = НовыйОРП.Товары.Добавить();
    СтрОРП.Номенклатура = СтрТЗПродажи.Номенклатура;
    СтрОРП.Склад = Объект.Склад;
    СтрОРП.Цена = СтрТЗПродажи.Цена;
    СтрОРП.КоличествоУпаковок = СтрТЗПродажи.Количество;
    СтрОРП.Сумма = СтрТЗПродажи.Сумма;
    КонецЦикла;
    НовыйОРП.Записать();
```
---
Если я правильно понял, то надо из таблицы значений "Объект.Продажи" сделать несколько ОРП.
Тогда так можно:

```1c
    ОбъектПродажи=Объект.Продажи.Выгрузить();

    ИндескыПоСменам=ОбъектПродажи.Скопировать();
    ИндескыПоСменам.Свернуть("Смена","Сумма");
    ИндескыПоСменам.Сортировать("Смена");

    Для Каждого СтрСмена Из ИндексыПоСменам Цикл

    НовыйОРП = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();

    СтруктураПоиска=Новый Структура("Смена",СтрСмена.Смена);
    НайденныеСтроки=ОбъектПродажи.НайтиСтроки(СтруктураПоиска);

    Для Каждого СтрТЗПродажи Из НайденныеСтроки Цикл

    СтрОРП = НовыйОРП.Товары.Добавить();
    СтрОРП.Номенклатура = СтрТЗПродажи.Номенклатура;
    СтрОРП.Склад = Объект.Склад;
    СтрОРП.Цена = СтрТЗПродажи.Цена;
    СтрОРП.КоличествоУпаковок = СтрТЗПродажи.Количество;
    СтрОРП.Сумма = СтрТЗПродажи.Сумма;

    КонецЦикла;

    Попытка
    НовыйОРП.Записать();
    Исключение
    Сообщить("Не записан ОРП по смене "+СтрСмена.Смена+" на сумму "+СтрСмена.Сумма+" по причтине "+ОписаниеОшибки());
    КонецПопытки;

    КонецЦикла;
```
---
тебе нужно ввести переменную смена. и когда она меняется делать новый документ о продажах
---
Запросом получить данные по табличной части, итоги по смене, обход по группировкам. первый цикл идет по сменам и в нем создаются новые документы, во втором цикле заполняется таб часть для документа.
---
Прошу прошения, не ТЗ, а таблица значений
---
в общем вот так примерно это должно выглядеть:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ПриходнаяНакладнаяТовары.Номенклатура,
    | ПриходнаяНакладнаяТовары.Количество,
    | ПриходнаяНакладнаяТовары.Сумма,
    | ПриходнаяНакладнаяТовары.Смена КАК Смена
    |ИЗ
    | Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
    | Где ПриходнаяНакладнаяТовары.Ссылка = &Ссылка
    |ИТОГИ ПО
    | Смена"
    Запрос.УстановитьПараметр("Ссылка", ИсходныйДокумент);
    Результат = Запрос.Выполнить();
    Если Не Результат.Пустой() Тогда
    ВыборкаПоСменам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПоСменам.Следующий() Цикл
    НовыйОРП = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
    ВыборкаПоНоменклатуре = ВыборкаПоСменам.Выбрать();
    Пока ВыборкаПоНоменклатуре.Следующий() Цикл
    СтрОРП = НовыйОРП.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(СтрОРП, ВыборкаПоНоменклатуре);
    КонецЦикла;
    НовыйОРП.Записать();
    КонецЦикла;
    КонецЕсли;
```
---
Если исходными данными является таблица значений, то можно ее во временную таблицу поместить либо как предложили в первом варианте - проверять переменную на соответствие.
---
вот вариант с временной таблицей:

Запрос = Новый Запрос;

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | ТЧ.Номенклатура,
    | ТЧ.Количество,
    | ТЧ.Сумма,
    | ТЧ.Смена КАК Смена
    |ПОМЕСТИТЬ ВтТоварыПоСменам
    |ИЗ
    | &ТЧ КАК ТЧ
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВтТоварыПоСменам.Номенклатура,
    | ВтТоварыПоСменам.Количество,
    | ВтТоварыПоСменам.Сумма,
    | ВтТоварыПоСменам.Смена КАК Смена
    |ИЗ
    | ВтТоварыПоСменам КАК ВтТоварыПоСменам
    |ИТОГИ ПО
    | Смена"
    Запрос.УстановитьПараметр("ТЧ", ИсходнаяТаблицаЗначений);
    Результат = Запрос.Выполнить();
    Если Не Результат.Пустой() Тогда
    ВыборкаПоСменам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПоСменам.Следующий() Цикл
    НовыйОРП = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
    ВыборкаПоНоменклатуре = ВыборкаПоСменам.Выбрать();
    Пока ВыборкаПоНоменклатуре.Следующий() Цикл
    СтрОРП = НовыйОРП.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(СтрОРП, ВыборкаПоНоменклатуре);
    КонецЦикла;
    НовыйОРП.Записать();
    КонецЦикла;
    КонецЕсли;
```
---
Если я правильно понял, то надо из таблицы значений "Объект.Продажи" сделать несколько ОРП.
Тогда так можно:

```1c
    ОбъектПродажи=Объект.Продажи.Выгрузить();

    ИндескыПоСменам=ОбъектПродажи.Скопировать();
    ИндескыПоСменам.Свернуть("Смена","Сумма");
    ИндескыПоСменам.Сортировать("Смена");

    Для Каждого СтрСмена Из ИндексыПоСменам Цикл

    НовыйОРП = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();

    СтруктураПоиска=Новый Структура("Смена",СтрСмена.Смена);
    НайденныеСтроки=ОбъектПродажи.НайтиСтроки(СтруктураПоиска);

    Для Каждого СтрТЗПродажи Из НайденныеСтроки Цикл

    СтрОРП = НовыйОРП.Товары.Добавить();
    СтрОРП.Номенклатура = СтрТЗПродажи.Номенклатура;
    СтрОРП.Склад = Объект.Склад;
    СтрОРП.Цена = СтрТЗПродажи.Цена;
    СтрОРП.КоличествоУпаковок = СтрТЗПродажи.Количество;
    СтрОРП.Сумма = СтрТЗПродажи.Сумма;

    КонецЦикла;

    Попытка
    НовыйОРП.Записать();
    Исключение
    Сообщить("Не записан ОРП по смене "+СтрСмена.Смена+" на сумму "+СтрСмена.Сумма+" по причтине "+ОписаниеОшибки());
    КонецПопытки;

    КонецЦикла;
```
---
Спасибо, использовал вариант с сверткой.

Полный текст рабочий:

```1c
    ОбъектПродажи=Объект.Продажи.Выгрузить();

    ИндексыПоСменам = ОбъектПродажи.Скопировать();
    ИндексыПоСменам.Свернуть("Смена","Сумма");
    ИндексыПоСменам.Сортировать("Смена");

    Для Каждого СтрСмена Из ИндексыПоСменам Цикл

    НовыйОРП = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
    НовыйОРП.Дата = ТекущаяДата();
    НовыйОРП.КассаККМ = Объект.КассаККМ;
    НовыйОРП.Магазин = Объект.Магазин;
    НовыйОРП.Организация = Объект.Организация;
    НовыйОРП.Комментарий = Объект.Комментарий;

    СтруктураПоиска=Новый Структура("Смена",СтрСмена.Смена);
    НайденныеСтроки=ОбъектПродажи.НайтиСтроки(СтруктураПоиска);

    Для Каждого СтрТЗПродажи Из НайденныеСтроки Цикл

    Если СтрТЗПродажи.Возврат = 2 Тогда
    Возв = НовыйОРП.ВозвращенныеТовары.Добавить();
    Возв.Номенклатура = СтрТЗПродажи.Номенклатура;
    Возв.Склад = Объект.Склад;
    Возв.Цена = СтрТЗПродажи.Цена;
    Возв.КоличествоУпаковок = СтрТЗПродажи.Количество;
    Возв.Сумма = СтрТЗПродажи.Сумма;
    Возв.СтавкаНДС = Объект.НДС;
    Возв.Количество = СтрТЗПродажи.Количество;
    Возв.СуммаНДС = 0;
    Возв.АналитикаХозяйственнойОперации = Объект.АналитикаХозВозврат;
    Продолжить;
    КонецЕсли;
    СтрОРП = НовыйОРП.Товары.Добавить();
    СтрОРП.Номенклатура = СтрТЗПродажи.Номенклатура;
    СтрОРП.Склад = Объект.Склад;
    СтрОРП.Цена = СтрТЗПродажи.Цена;
    СтрОРП.КоличествоУпаковок = СтрТЗПродажи.Количество;
    СтрОРП.Сумма = СтрТЗПродажи.Сумма;
    СтрОРП.СтавкаНДС = Объект.НДС;
    СтрОРП.Количество = СтрТЗПродажи.Количество;
    СтрОРП.СуммаНДС = 0;
    КонецЦикла;

    Попытка
    НовыйОРП.Товары.Свернуть("Номенклатура, Цена, Склад, СтавкаНДС, СуммаНДС", "Количество, КоличествоУпаковок , Сумма");
    НовыйОРП.ВозвращенныеТовары.Свернуть("Номенклатура, Цена, Склад, СтавкаНДС, СуммаНДС, АналитикаХозяйственнойОперации", "Количество, КоличествоУпаковок , Сумма");
    НовыйОРП.Записать();
    Исключение
    Сообщить("Не записан ОРП по смене "+СтрСмена.Смена+" на сумму "+СтрСмена.Сумма+" по причтине "+ОписаниеОшибки());
    КонецПопытки;
```