Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

скопировать элемент справочника в другой справочник

скопировать элемент справочника в другой справочник
Я
   I_learn_1c
 
18.01.18 - 15:37
День добрый!

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

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

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

вариант

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует