Доброго времени суток, уважаемые знатоки подскажите как грамотно реализовать задумку.
имеем документ инвентаризация с табличной частью дата, номер накладной, номенклатура и количество
как сделать правильно чтобы при нажатии кнопки создать новый приход из данных.
На форуме нашел решение, оно работает, только если номера накладных одинаковые нужно номенклутару и количество помещать в один документ новый а не создовать по строчно новые документы.

```1c
    ТЗ_Инвентаризация = Объект.Подрядчик.Выгрузить();

    ТекНомер = Неопределено;
    ТекДок = Неопределено;
    Для Каждого Стр Из ТЗ_Инвентаризация Цикл
    Если Стр.Накладная <> ТекНомер Тогда
    Если ТекДок <> Неопределено Тогда
    ТекДок.Записать();
    КонецЕсли;
    ТекДок = Документы.ПриходДокументов.СоздатьДокумент();
    // заполнить шапку документа
    ТекДок.ВходящийДокумент = Стр.Накладная;
    ТекДок.Дата = ТекущаяДатаСеанса();

    КонецЕсли;
    НоваяСтрока = ТекДок.Таблица.Добавить();
    НоваяСтрока.Номенклатура = стр.Номенклатура;

    КонецЦикла;

    Если ТекДок <> Неопределено Тогда
    ТекДок.Записать();
    КонецЕсли;
```
---
а, нашел.
Сразу после
Если Стр.Накладная <> ТекНомер Тогда
добавить
ТекНомер = Стр.Накладная;
---
```1c
    ТЗ_Инвентаризация = Объект.Подрядчик.Выгрузить();

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

1) Строим запрос к табличной части документа и выбираем Различные Номера накладной.
2) Перебирая получившуюся выборку номеров накладной создаем новый документ. Для заполнения табличной части которого используем метод НайтиСтроки(отбор) в табличной части с отбором по текущему номеру накладной