|
v7: Как программно скопировать строку табличной части документа? | ☑ | ||
---|---|---|---|---|
0
Dolphinbet
18.06.14
✎
13:16
|
Как программно скопировать строку табличной части документа? Т е добавить новую строку и заполнить реквизиты ТЧ значениями соответствующих реквизитов строки источника (ЗаполнитьЗначения() в восьмерке)
|
|||
1
Dolphinbet
18.06.14
✎
13:20
|
т е аналог ЗаполнитьЗначенияСвойств с семере какой-нибудь нужен
|
|||
2
Dolphinbet
18.06.14
✎
13:26
|
похоже я один остался на семерке :(
|
|||
3
NikVars
18.06.14
✎
13:32
|
Метода нет - изобретай. Получай строку и бегай по столбцам в цикле и копируй.
|
|||
4
Dolphinbet
18.06.14
✎
13:32
|
(3) это не будет изобретением велосипеда?
|
|||
5
vcv
18.06.14
✎
13:33
|
Там велосипеда на пяток строк. Если в документе нет реквизитов неопределенного вида/вида.
|
|||
6
Ёпрст
18.06.14
✎
13:34
|
(0) выгрузитьТабличнуючасть - загрузитьТабличнуючасть.. с ТЗ делай че хочешь - копируй, удаляй..
|
|||
7
vcv
18.06.14
✎
13:35
|
(6) У ТЗ есть штатная возможность копирования строки? Или это с ТЗ делается проще, чем с документом?
|
|||
8
NikVars
18.06.14
✎
13:35
|
(4) Будет маленький велосипедик ввиду отсутсвия нужного метода реализованного средствами платформы 7.7.
|
|||
9
Ёпрст
18.06.14
✎
13:35
|
(7) кончно есть, КоличествоСтрок() + Заполнить
|
|||
10
NikVars
18.06.14
✎
13:36
|
(7) Нет. Нет.
|
|||
11
Dolphinbet
18.06.14
✎
13:36
|
(9) чтобы скопировать строку нужно выгрузить всю ТЧ документа в таблицу значений? фигасе!
|
|||
12
vcv
18.06.14
✎
13:37
|
(9) Боюсь, таким образом скопируешь только первую строку. Или несколько первых. А как Заполнить скопировать, например, четвертую.
|
|||
13
Ёпрст
18.06.14
✎
13:37
|
(11) не хочешь работать с ТЗ, ничто не мешает бегать по метаданным и копировать через ПолучитьАтрибут-УстановитьАтрибут
|
|||
14
NikVars
18.06.14
✎
13:38
|
(11) Такой подход тоже может быть оправдан в отдельных случаях. Не подходит этот вариант - рубай другим.
|
|||
15
Ёпрст
18.06.14
✎
13:38
|
(12) че как маленький ? Выгрузил во временную че надо, заполнил этими данными что надо.
|
|||
16
vcv
18.06.14
✎
13:38
|
(11) На практике использовать метод типа Заполнить, может оказаться быстрее перебора всех реквизитов МнЧ.
|
|||
17
vcv
18.06.14
✎
13:40
|
(15) Разъяснись. У тебя ТЗ из, например, 10 строк. Нужно скопировать четвертую. Добавляешь новую строку, вызываешь ТЗ.Заполнить(ТЗ,ТЗ.КоличествоСтрок())
Получаешь копию первой строки. Как произвольную скопировать? |
|||
18
Ёпрст
18.06.14
✎
13:43
|
(17)
:))))) ТЗ.Выгрузить(врТЗ,4,4); ТЗ.НоваяСтрока(); ТЗ.Заполнить(врТЗ,ТЗ.КоличествоСтрок()); |
|||
19
Ёпрст
18.06.14
✎
13:44
|
можно и так написать:
ТЗ.Выгрузить(врТЗ,4,4); ТЗ.КоличествоСтрок(ТЗ.КоличествоСтрок()+1); ТЗ.Заполнить(врТЗ,ТЗ.КоличествоСтрок()); |
|||
20
Ясный перец
18.06.14
✎
13:44
|
В ТиС я прикручивал для подобного сабжу глОбработкаПодбора с параметрами.
|
|||
21
vcv
18.06.14
✎
13:46
|
(19) Точно. Туплю. Совсем уже эти кластера с репликациями голову забили. Публично извиняюсь.
|
|||
22
Dolphinbet
18.06.14
✎
13:58
|
(19) хороший вариант, а можно без выгрузки табличной части в ТЗ, чет мне кажется тормоза будут... выгрузить, потом загрузить обратно
|
|||
23
Ёпрст
18.06.14
✎
13:59
|
можно, см (13)
|
|||
24
Dolphinbet
18.06.14
✎
14:00
|
(23) видел, но как конкретно сделать не понял)
|
|||
25
Ёпрст
18.06.14
✎
14:00
|
Хотя, если в документе у тебя не 100 тыщ строк, то через ТЗ вполне приемлимый вариант
|
|||
26
Dolphinbet
18.06.14
✎
14:01
|
(25) а если хотя бы 1000?
|
|||
27
Ёпрст
18.06.14
✎
14:03
|
(24)
Док.НоваяСтрока(); Для к = 1 По Метаданные.Документ(НужныйВид).РеквизитТабличнойЧасти() Цикл Индетификатор = Метаданные.Документ(НужныйВид).РеквизитТабличнойЧасти(к).ИИдентификатор Док.УстановитьАтрибут(Идентификатор,ДокИсточник.ПолучитьАтрибут(Идентификатор)); КонецЦикла; |
|||
28
Ёпрст
18.06.14
✎
14:03
|
(26) это слишком мало, чтоб задумываться о размерах тз.
|
|||
29
Ёпрст
18.06.14
✎
14:05
|
+27
только, нужно еще условие в (27) пихать на Тип реквизита, если он неопределенный - то сперва назначать тии, получив его из значения реквизита источника. |
|||
30
Ёпрст
18.06.14
✎
14:06
|
Тип глядеть как
Метаданные.Документ(НужныйВид).РеквизитТабличнойЧасти(к).Тип |
|||
31
Dolphinbet
18.06.14
✎
14:08
|
(27) а ДокИсточник это что? у меня модуле формы документа этого же нет)
|
|||
32
Dolphinbet
18.06.14
✎
14:08
|
т е мне нужно как то спозиционироваться на строку источник
|
|||
33
Ёпрст
18.06.14
✎
17:01
|
(32) тебе в самом доке нужна копия ?
Тогда так: Док.НоваяСтрока(); Для к = 1 По Метаданные.Документ(Док.Вид()).РеквизитТабличнойЧасти() Цикл Идентификатор = Метаданные.Документ(Док.Вид()).РеквизитТабличнойЧасти(к).Идентификатор; Док.ПолучитьСтрокуПоНомеру(НужныйНумерСтроки); ЗначениеАтрибута Док.ПолучитьАтрибут(Идентификатор); Док.ПолучитьСтрокуПоНомеру(Док.КоличествоСтрок()); //тут воткнуть условие на тип атрибута и если надо, сделать Док.НазначитьТип Док.УстановитьАтрибут(Идентификатор,ЗначениеАтрибута); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |