Имя: Пароль:
1C
1С v8
скопировать элемент справочника в другой справочник
,
0 I_learn_1c
 
18.01.18
15:37
День добрый!

Есть задачка. Справочник Спецификации и Спецификации2. Второй создан копированием первого, то есть все реквизиты, табличные части у них одинаковые.

Нужно в форме элемента справочника Спецификации2 описать команду(кнопка) по которой этот элемент скопируется в справочник Спецификации.

То есть создать новый элемент и переписать в него все данные кроме ссылки.
ЭтаФорма.Объект.Ссылка.Скопировать() не подходит так как в новой потом не могу изменить ссылку на ссылку другого справочника.

вариант

КопияСпецификации=Справочники.Спецификации.СоздатьЭлемент();
    ЗаполнитьЗначенияСвойств(КопияСпецификации,ЭтаФорма.Объект.Ссылка,,"Ссылка,Родитель");
    КопияСпецификации.Записать();

работает,но не до конца, не переносит табличные части. Может есть еще варианты чтобы не перебирать табличные части циклом?

Есть какие-то идеи?
1 lapinio
 
18.01.18
15:43
Очень странная запись ЭтаФорма.Объект.Ссылка. Если у тебя Упр.интерфейс. Просто объект. И что такое копия спецификации
2 lapinio
 
18.01.18
15:45
ЗаполнитьЗначенияСвойств - Не заполняет Табличные части
3 1Сергей
 
18.01.18
15:45
ЗаполнитьВащеВсеЗначенияСвойств(
4 Мыш
 
18.01.18
15:50
Метаданные()
5 I_learn_1c
 
18.01.18
15:50
(1) мне нужно создать копию элемента справочника Спецификации2, и поместить ее в справочник Спецификации.

ЭтаФорма.Объект -ну да, странно.поняла.
6 I_learn_1c
 
18.01.18
15:50
(2) это я поняла уже до написания вопроса сюда. А что заполняет?
7 I_learn_1c
 
18.01.18
15:51
(4) всмысле перебрать все в цикле?
8 lapinio
 
18.01.18
15:53
Можешь проще сделать. Объект.Заполнить(Передать реквизиты ) в модуле объекта заполнить.
9 Мыш
 
18.01.18
15:54
(7) А как иначе.
10 lapinio
 
18.01.18
15:55
И копии спецификации в модуле объекта заполняешь. Процедура обработка заполнения. Я как бы не вижу смысла обходить метаданные. Если универсально сделать тогда да. Если только для этого объекта заполни и все его ТЧ.Загрузить(ТЧ.Выгрузить) итд
11 1Сергей
 
18.01.18
15:56
ТЗ = Объект.ТабличнаяЧасть.Выгрузить();
КопияСпецификации.ТабличнаяЧасть.Загрузить(ТЗ);
12 I_learn_1c
 
18.01.18
16:07
(11) точноо.. спасибо большое)))

остановилась на варианте ниже

КопияСпецификации=Справочники.Спецификации.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(КопияСпецификации,ЭтаФорма.Объект.Ссылка,,"Ссылка,Родитель");
ТЗ = Объект.Состав.Выгрузить();
КопияСпецификации.Состав.Загрузить(ТЗ);
ТЗ.Очистить();
ТЗ= Объект.Операции.Выгрузить();
КопияСпецификации.Операции.Загрузить(ТЗ);
КопияСпецификации.Записать();
13 I_learn_1c
 
18.01.18
16:08
без

ЭтаФорма.
14 Мыш
 
18.01.18
16:10
(10) Универсально проще.
Для Каждого ТабличнаяЧасть Из ОбъектИлиСсылка.Метаданные().ТабличныеЧасти Цикл
ОбъектВКоторыйКопируем[ТабличнаяЧасть.Имя].Загрузить(ОткудаКопируем[ТабличнаяЧасть.Имя].Выгрузить());
КонецЦикла;
15 I_learn_1c
 
18.01.18
16:20
(14) да, так проще будет. спасибо)
16 Серёжа_
программист
 
19.01.18
05:09
(3) Должно сработать ;)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.