Как перебрать ТЧ документов
Показывать по
10
20
40
сообщений
- 1
- 2
06.04.2010
14:23
#1
"Задача из ТЗ я перебираю все док.(допустим около 5-ти) перебрала реквизиты, а теперь мне надо из 5 док. сделать один. Подскажите как перебрать ТЧ док. и их записать в один док?
Процедура КнопкаВыполнитьНажатие(Кнопка)
НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент();
л_пр_док = """";
Для каждого СтрокаТП Из ТабличноеПоле Цикл
Если (л_пр_док <> """") Тогда
Если (СтрокаТП.Документ.Организация = л_пр_док.Организация)
И (СтрокаТП.Документ.Контрагент = л_пр_док.Контрагент)
И (СтрокаТП.Документ.ДоговорКонтрагента = л_пр_док.ДоговорКонтрагента)
И (СтрокаТП.Документ.Склад = л_пр_док.Склад)
Тогда
//Шапка
НовыйДок.Дата = ТекущаяДата();
НовыйДок.УстановитьНовыйНомер();
НовыйДок.Организация = СтрокаТП.Документ.Организация;
НовыйДок.Контрагент = СтрокаТП.Документ.Контрагент;
НовыйДок.Склад = СтрокаТП.Документ.Склад;
НовыйДок.Сделка = """";
ОтражатьВУправленческомУчете = Истина;
ОтражатьВБухгалтерскомУчете = Истина;
ОтражатьВНалоговомУчете = Истина;
АктивацияЗаказа = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
"
Процедура КнопкаВыполнитьНажатие(Кнопка)
НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент();
л_пр_док = """";
Для каждого СтрокаТП Из ТабличноеПоле Цикл
Если (л_пр_док <> """") Тогда
Если (СтрокаТП.Документ.Организация = л_пр_док.Организация)
И (СтрокаТП.Документ.Контрагент = л_пр_док.Контрагент)
И (СтрокаТП.Документ.ДоговорКонтрагента = л_пр_док.ДоговорКонтрагента)
И (СтрокаТП.Документ.Склад = л_пр_док.Склад)
Тогда
//Шапка
НовыйДок.Дата = ТекущаяДата();
НовыйДок.УстановитьНовыйНомер();
НовыйДок.Организация = СтрокаТП.Документ.Организация;
НовыйДок.Контрагент = СтрокаТП.Документ.Контрагент;
НовыйДок.Склад = СтрокаТП.Документ.Склад;
НовыйДок.Сделка = """";
ОтражатьВУправленческомУчете = Истина;
ОтражатьВБухгалтерскомУчете = Истина;
ОтражатьВНалоговомУчете = Истина;
АктивацияЗаказа = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
"
06.04.2010
14:53
#2
А если у вас в таблице только один документ - когда будет заполнена Шапка нового?
06.04.2010
14:55
#3
И как понимать фразу
> перебрала реквизиты
Что будет если из 5-ти документов у одного будет другой Склад?
> перебрала реквизиты
Что будет если из 5-ти документов у одного будет другой Склад?
06.04.2010
14:56
#4
Моя задача из мн-во док. одного типа сделать один. В итоге буду т браться несколько док.
06.04.2010
14:59
#5
Мне же надо из нескольких документов с одинаковыми реквизитами сделать один и ТЧ объединить.
06.04.2010
15:25
#6
"В вашем коде много логических ошибок. Поэтому напишу по своему и сокращенно:
1. Обязательна сортировка по ключевым полям Контрагент, ДоговорКонтрагента, Организация, Склад
2. Не знаю, что у вас за документы в ТабличноеПоле и какие есть поля (и какая конфигурация), поэтому еще 2 условия: Должно быть поле Ссылка (ссылка на документ) и у документа должна быть табличная часть Товары.
НовыйДок = Неопределено;
Для каждого СтрокаТП Из ТабличноеПоле Цикл
Если НовыйДок = Неопределено Тогда
НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент(); //Первый документ
<Заполнить шапку документа>
Иначе
Если Не (<Проверка ключевых полей на равенство>) Тогда
НовыйДок.Записать(); //Записать сформированный документ
НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент(); //И создать новый
<Заполнить шапку документа>
КонецЕсли;
КонецЕсли;
Для Каждого Стр Из СтрокаТП.Ссылка.Товары Цикл
нСтр = НовыйДок.Товары.Добавить();
ЗаполнитьЗначенияСвойств (нСтр, Стр);
<Возможно дозаполнить еще что-то>
КонецЦикла;
КонецЦикла;
Если НовыйДок <> Неопределено Тогда
НовыйДок.Записать(); //Записать сформированный документ
КонецЕсли;"
1. Обязательна сортировка по ключевым полям Контрагент, ДоговорКонтрагента, Организация, Склад
2. Не знаю, что у вас за документы в ТабличноеПоле и какие есть поля (и какая конфигурация), поэтому еще 2 условия: Должно быть поле Ссылка (ссылка на документ) и у документа должна быть табличная часть Товары.
НовыйДок = Неопределено;
Для каждого СтрокаТП Из ТабличноеПоле Цикл
Если НовыйДок = Неопределено Тогда
НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент(); //Первый документ
<Заполнить шапку документа>
Иначе
Если Не (<Проверка ключевых полей на равенство>) Тогда
НовыйДок.Записать(); //Записать сформированный документ
НовыйДок = Документы.ВозвратТоваровПоставщику.СоздатьДокумент(); //И создать новый
<Заполнить шапку документа>
КонецЕсли;
КонецЕсли;
Для Каждого Стр Из СтрокаТП.Ссылка.Товары Цикл
нСтр = НовыйДок.Товары.Добавить();
ЗаполнитьЗначенияСвойств (нСтр, Стр);
<Возможно дозаполнить еще что-то>
КонецЦикла;
КонецЦикла;
Если НовыйДок <> Неопределено Тогда
НовыйДок.Записать(); //Записать сформированный документ
КонецЕсли;"
06.04.2010
15:38
#7
Опишу мою задачу.
В УТ есть док. ВозвратТовараПоставщику. Надо из мн-во док.ВозвратТовараПоставщику создать один. При этом должно быть соответствие при выборе док. в ТабличноеПоле по реквизитам шапки. А вот на счет ТЧ он должен выбрать из каждого док. и объеденить в один.
В УТ есть док. ВозвратТовараПоставщику. Надо из мн-во док.ВозвратТовараПоставщику создать один. При этом должно быть соответствие при выборе док. в ТабличноеПоле по реквизитам шапки. А вот на счет ТЧ он должен выбрать из каждого док. и объеденить в один.
06.04.2010
15:55
#8
Julia13, что непонятного в ответе BelikovS-а? Или написанное противоречит условиям вашей задачи?
06.04.2010
16:08
#9
"А вы программист?
Кстати, при такой постановке, я бы задал еще такой вопрос: Будет ли документ проводиться? Если да, то что с теми документами, из которых черпались данные (они проведены или как)?
В общем если дописать условие и вместо <Заполнить шапку документа>
ЗаполнитьЗначенияСвойств (НовыйДок, СтрокаТП.Ссылка)
НовыйДок.Дата = ТекущаяДата();
НовыйДок.УстановитьНовыйНомер();
Код станет рабочим.
Да, я заметил, что ссылка на документ у вас есть - колонка Документ. Тогда надо мою "Ссылка" заменить на ваш "Документ"
p.s.: Хорошее число 13, а вы ему соответствуете? :)"
Кстати, при такой постановке, я бы задал еще такой вопрос: Будет ли документ проводиться? Если да, то что с теми документами, из которых черпались данные (они проведены или как)?
В общем если дописать условие и вместо <Заполнить шапку документа>
ЗаполнитьЗначенияСвойств (НовыйДок, СтрокаТП.Ссылка)
НовыйДок.Дата = ТекущаяДата();
НовыйДок.УстановитьНовыйНомер();
Код станет рабочим.
Да, я заметил, что ссылка на документ у вас есть - колонка Документ. Тогда надо мою "Ссылка" заменить на ваш "Документ"
p.s.: Хорошее число 13, а вы ему соответствуете? :)"
- 1
- 2
Как на основании Акта об оказании услуг ввести ПКО в 1С:Бухгалтерии 7.7?Бухгалтерия 8,1 конфигурация 1,6,24,7
Читают тему
(гостей: 1)