![]() |
![]() |
|
v7: перенос табличной части в другой документ | ☑ | ||
---|---|---|---|---|
0
curys
16.03.12
✎
09:50
|
Доброе время суток! Задача стоит такая: Необходимо чтобы в выбраный документ переносилсь строки табличной части документов из выбранного списка. Подскажите почему не получается получить строки табличной части документа? Вот код: Процедура Выполнить()
ДокЗап = ДокПост; ДокЗап.Выбран(); Таб = СоздатьОбъект ("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(Таб); СчетчикЦикла = 0; Для СчетчикЦикла = 1 По таб.количествострок() Цикл Сообщить(Таб.ПолучитьЗначение(СчетчикЦикла,2)); ДокПер = Таб.ПолучитьЗначение(СчетчикЦикла,2); ДокПер.ВыбратьСтроки(); Пока ДокПер.ПолучитьСтроку()=1 Цикл ДокЗап.НоваяСтрока();//пишет что документ не выбран!!!!! ДокЗап.НОменклатура = ДокПер.Номенклатура; КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
1
zak555
16.03.12
✎
09:51
|
что такое
ДокПер и ДокЗап ? |
|||
2
zak555
16.03.12
✎
09:52
|
с ДокЗап разобрался
что такое ДостПост ? |
|||
3
vicof
16.03.12
✎
09:52
|
"ДокЗап.Выбран()" +100
|
|||
4
Попытка1С
16.03.12
✎
09:53
|
1) Где найтидокумент который ДокЗап
2) нафига цикл, если названия колонок совпадают можешь просто использовать загрузитьтабличнуючасть |
|||
5
curys
16.03.12
✎
09:54
|
на форме есть поле выбора(ДокПост) это документ в который будут переносится табличные части
|
|||
6
zak555
16.03.12
✎
09:55
|
(5) док пер что из ит ?
|
|||
7
Попытка1С
16.03.12
✎
09:55
|
(5) НайтиДокумент
|
|||
8
curys
16.03.12
✎
09:57
|
ДокПер = Таб.ПолучитьЗначение(СчетчикЦикла,2); здесь я получаю документ из которого необходимо перенести таб часть
|
|||
9
Рэйв
16.03.12
✎
09:58
|
(8)Там пусто
|
|||
10
curys
16.03.12
✎
09:58
|
на 8ке давно бы уже все сделал, а тут въехать не могу....
|
|||
11
curys
16.03.12
✎
09:59
|
(9)нет, там получаю документ из таб части
|
|||
12
vladko
16.03.12
✎
09:59
|
ДокЗап = ДокПост;
ДокЗап.Выбран(); Поэтому ДокЗап.НоваяСтрока();//пишет что документ не выбран!!!!! первые 2 строки - бред программы. Создай Объект для докЗап по виду документа и всё. |
|||
13
zak555
16.03.12
✎
09:59
|
ДокЗап = СоздатьОбъект("Документ");
ДокЗап.НайтиДокумент(ДокПост); Таб = СоздатьОбъект ("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(Таб); ДокЗап.ЗагрузитьТабличнуюЧасть(Таб); ДокЗап.Записать(); |
|||
14
zak555
16.03.12
✎
10:00
|
(10) на 8ке ты тоже не сделал бы
|
|||
15
Рэйв
16.03.12
✎
10:01
|
(13)Зачем его искать то? когда он в докПост лежит уже как ТС утверждает
|
|||
16
zak555
16.03.12
✎
10:01
|
(15) чтоб записать
|
|||
17
Рэйв
16.03.12
✎
10:01
|
аа..ПоняллОбъект нада
|
|||
18
zak555
16.03.12
✎
10:03
|
хотя сейчас выяснится, что автору нужно будет дополнить ТЧ ДокПост тек доком =)
|
|||
19
curys
16.03.12
✎
10:04
|
(14) если я в 7ке плохо шарю, это не значит что и в 8ке тоже....
(15) так оно есть |
|||
20
zak555
16.03.12
✎
10:06
|
(19) в 8ке никто циклами ТЧ не заполняет
запрос и точка |
|||
21
curys
16.03.12
✎
10:09
|
(20) в том то и дело, что в 8ке проще
|
|||
22
zak555
16.03.12
✎
10:10
|
(21) где ты в (13) видишь перебор ?
|
|||
23
Рэйв
16.03.12
✎
10:33
|
(19)У тебя в поле ввода ссылка. Чтобы записать что-то в нее надо получить объект.
ДокЗап = СоздатьОбъект("Документ"); ДокЗап.НайтиДокумент(ДокПост); Это эквивалент .ПолучитьОбъект() в 8.х |
|||
24
curys
16.03.12
✎
10:46
|
вот что получилось:
ДокЗап = СоздатьОбъект("Документ"); ДокЗап.НайтиДокумент(ДокПост); Таб = СоздатьОбъект ("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(Таб); СчетчикЦикла = 0; Для СчетчикЦикла = 1 По таб.количествострок() Цикл Сообщить(Таб.ПолучитьЗначение(СчетчикЦикла,2)); ДокПер = СоздатьОбъект("Документ"); ДокПер.НайтиДокумент(Таб.ПолучитьЗначение(СчетчикЦикла,2)); ТабЧасть = СоздатьОбъект ("ТаблицаЗначений"); ДокПер.ВыгрузитьТабличнуюЧасть(ТабЧасть); ДокЗап.ЗагрузитьТабличнуюЧасть(ТабЧасть); ДокЗап.Записать(); КонецЦикла; но сейчас просто заменяет таб часть в док, а как сделать чтобы она дополнилась? |
|||
25
zak555
16.03.12
✎
10:47
|
что в ТЧ ?
|
|||
26
curys
16.03.12
✎
10:50
|
заменяет существующие строки, а не добовляет новые
|
|||
27
Ёпрст
гуру
16.03.12
✎
11:09
|
Процедура Сформировать()
Перем СлужТЗ; ТЗ=Создатьобъект("ТаблицаЗначений"); ВыбратьСтроки(); Пока ПолучитьСтроку() =1 Цикл КолСтрок = ТЗ.КоличествоСтрок(); Если КолСтрок=0 Тогда ИдентификаторДокументаИзТабличнойЧасти.ВыгрузитьТабличнуюЧасть(ТЗ); Иначе ИдентификаторДокументаИзТабличнойЧасти.ВыгрузитьТабличнуюЧасть(СлужТЗ); ТЗ.КоличествоСтрок(КолСтрок+СлужТЗ.КоличествоСтрок()); ТЗ.Заполнить(СлужТЗ,КолСтрок+1); КонецЕсли; КонецЦикла; ДокЗап = СоздатьОбъект("Документ"); ДокЗап.НайтиДокумент(ДокПост); ДокЗап.ЗагрузитьТабличнуюЧасть(ТЗ); ДокЗап.Записать(); КонецПроцедуры |
|||
28
curys
16.03.12
✎
11:27
|
(27) спасибо за пример, я уже сделал немного подругому:
Процедура Выполнить() ДокЗап = СоздатьОбъект("Документ"); ДокЗап.НайтиДокумент(ДокПост); Таб = СоздатьОбъект ("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(Таб); СчетчикЦикла = 0; Для СчетчикЦикла = 1 По таб.количествострок() Цикл Сообщить(Таб.ПолучитьЗначение(СчетчикЦикла,2)); ДокПер = СоздатьОбъект("Документ"); ДокПер.НайтиДокумент(Таб.ПолучитьЗначение(СчетчикЦикла,2)); ДокПер.ВыбратьСтроки(); Пока ДокПер.ПолучитьСтроку()=1 Цикл ДокЗап.НоваяСтрока(); ДокЗап.Товар = ДокПер.Товар; ДокЗап.Количество = ДокПер.Количество; ДокЗап.Цена = ДокПер.Цена; ДокЗап.Сумма = ДокПер.Сумма; ДокЗап.НДС = ДокПер.НДС; ДокЗап.Всего = ДокПер.Всего; ДокЗап.Записать(); КонецЦикла; КонецЦикла; Спасибо всем за пмощь!!! |
|||
29
Ёпрст
гуру
16.03.12
✎
11:37
|
(28) не надо записывать документ в цикле, не надо искать документ в цикле из табличной части, не надо выгружать табличную часть в тз и делать обход ТЗ..
в общем, твой код смело в топку |
|||
30
Mikeware
16.03.12
✎
11:38
|
(29) вместе с автором....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |