Из табличной части документа инвентаризация создать приход

1. ru_spaiky 28.07.21 04:38 Сейчас в теме
Доброго времени суток, уважаемые знатоки подскажите как грамотно реализовать задумку.
имеем документ инвентаризация с табличной частью дата, номер накладной, номенклатура и количество
как сделать правильно чтобы при нажатии кнопки создать новый приход из данных.
На форуме нашел решение, оно работает, только если номера накладных одинаковые нужно номенклутару и количество помещать в один документ новый а не создовать по строчно новые документы.
ТЗ_Инвентаризация = Объект.Подрядчик.Выгрузить();

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

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

	Если ТекДок <> Неопределено Тогда
  	ТекДок.Записать();
	КонецЕсли;

Показать
По теме из базы знаний
Найденные решения
14. spacecraft 28.07.21 09:54 Сейчас в теме
(12) а, нашел.
Сразу после
Если Стр.Накладная <> ТекНомер Тогда
добавить
ТекНомер = Стр.Накладная;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 28.07.21 05:15 Сейчас в теме
(1)
ТЗ_Инвентаризация = Объект.Подрядчик.Выгрузить();

ТекДок = Документы.ПриходДокументов.СоздатьДокумент();
ТекДок.Дата = ТекущаяДатаСеанса();
Для Каждого Стр Из ТЗ_Инвентаризация Цикл
	НоваяСтрока = ТекДок.Таблица.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
КонецЦикла;
ТекДок.Записать();
Показать
3. alxarz 31 28.07.21 05:19 Сейчас в теме
(1)
ТекДок = Документы.ПриходДокументов.СоздатьДокумент();
строчка должна быть не внутри цикла, либо должно быть необходимое условие сознание нового документа.
4. ru_spaiky 28.07.21 05:22 Сейчас в теме
(3)
строчка должна быть не внутри цикла, либо должно быть необходимое условие сознание нового документа.

Вот думаю как реализовать это условие, условие то одно только по накладным номерам.
Если три строчки с одинаковыми накладными то номенклатуру из этих трех строк засовываем в один документ
5. ZergKRSK 129 28.07.21 05:29 Сейчас в теме
(4) еще раз - по какому признаку надо формировать новый документ?
6. ru_spaiky 28.07.21 05:36 Сейчас в теме
(5)
еще раз - по какому признаку надо формировать новый документ?

по номеру документа с табличной части Инвентаризации
7. ZergKRSK 129 28.07.21 05:38 Сейчас в теме
(6) делаете запрос к табл части "Подрядчик" с итогами по полю "НомерДокумента". Выбираете запрос по иерархической группировке и создаете документы.
10. alxarz 31 28.07.21 08:01 Сейчас в теме
(4)
Вот думаю как реализовать это условие
предварительно отсортировать табличку по номеру документа, и при обходе проверять - если номер совпал с предыдущим, значит добавляем строку в уже созданный документ, а если не совпал - значит записываем уже созданный и создаем новый.
11. spacecraft 28.07.21 09:06 Сейчас в теме
(1) Этот код подойдет, только нужно таблицу сортировать.
Сразу после
ТЗ_Инвентаризация = Объект.Подрядчик.Выгрузить();
добавить:
ТЗ_Инвентаризация.Сортировать("НомерНакладной"); // или как там колонка называется.
12. ru_spaiky 28.07.21 09:38 Сейчас в теме
(11)
ТЗ_Инвентаризация.Сортировать("НомерНакладной");

Получается создаётся так же три документа а не один с тремя позициями номенклатуры
13. spacecraft 28.07.21 09:48 Сейчас в теме
(12) если для данных из (8), то 3 документа и должно быть.
Сам код в (1) правильный. Единственно что, проверить названия колонок и переменных.
14. spacecraft 28.07.21 09:54 Сейчас в теме
(12) а, нашел.
Сразу после
Если Стр.Накладная <> ТекНомер Тогда
добавить
ТекНомер = Стр.Накладная;
15. ru_spaiky 28.07.21 10:01 Сейчас в теме
16. ru_spaiky 28.07.21 10:02 Сейчас в теме
(14) СПАСИБО помогло)))))) очень благодарен)))))))))))))))))))))))))))
8. ru_spaiky 28.07.21 05:39 Сейчас в теме
Вот как выглядит исходная таблица
Прикрепленные файлы:
9. VPanin56 537 28.07.21 06:21 Сейчас в теме
Если с иерархическими группировками в запросах туго, то можно разделить на две составляющие решение такой задачи.

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот