Поиск  Пользователи  Правила  Войти
RSS
Как перебрать ТЧ документов
 
"Задача из ТЗ я перебираю все док.(допустим около 5-ти) перебрала реквизиты, а теперь мне надо из 5 док. сделать один. Подскажите как перебрать ТЧ док. и их записать в один док?

Процедура КнопкаВыполнитьНажатие(Кнопка)

НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент();

л_пр_док = """";

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

КонецЦикла;


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

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

В общем если дописать условие и вместо <Заполнить шапку документа>
ЗаполнитьЗначенияСвойств (НовыйДок, СтрокаТП.Ссылка)
НовыйДок.Дата = ТекущаяДата();
НовыйДок.УстановитьНовыйНомер();

Код станет рабочим.
Да, я заметил, что ссылка на документ у вас есть - колонка Документ. Тогда надо мою "Ссылка" заменить на ваш "Документ"

p.s.: Хорошее число 13, а вы ему соответствуете? :)"
 
Я сравнила реквизиты шапки.
Потом завожу новый цикл заполнения шапки.
Потом надо заполнить ТЧ.
Из которых черпаю инфу я их помечу на удаление.
Я учусь кодить на 1с
Читают тему

Читайте нас: