Копирование дополнительных свойств и значений вместе с объектом в УФ

1. egorover 113 04.12.15 12:01 Сейчас в теме
Может кто сталкивался при копировании документа необходимо копировать и некоторые дополнительные свойства и значения, сделал на событие ПриКопировании, пытаюсь записать Объект что бы подставить в регистр ДополнительныеРеквизитыИСведения, но форму с сервера то не могу обновить...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Boneman 298 04.12.15 15:41 Сейчас в теме
(1) egorover, если уж меняете документ, то пилить по полной.
Доп сведения - без записи не заполнить, - это факт.
Записывать, сразу при копировании - не комильфо.
Значит, надо сделать еще один реквизитик в документе, в который в случае срабатывания при копировании, записывалась бы ссылка объекта копирования.
Далее, перед записью, ставим проверку заполненности этого реквизита, и когда оператор документ приготовил и решил его записать, оно у него должно спросить - заполнять ли доп свойства или нет, ну или безусловно заполнить и очистить реквизит за собой.
Вот и все.
6. egorover 113 08.12.15 16:32 Сейчас в теме
(3) так и сделал, хочется сделать используя только доп. реквизиты, а так конечно можно и без доп. реквизитов обходится только добавленными реквизитами ...
7. limonas 10 08.04.21 19:41 Сейчас в теме
(3) Все намного проще:
1. Не нужны никакие дополнительные реквизиты у документов
2. Записываться при копировании, конечно, документ не будет.
3. Создается подписка на событие ПриКопированииДокумента, в которой будет практически одна строка кода:
Источник.ДополнительныеСвойства.Вставить("ДокументКопирования", ОбъектКопирования.Ссылка);

4. Создается подписка на событие ПриЗаписиДокумента, в которой получаем через чудесные дополнительные свойства документа тот самый объект копирования и вытаскиваем через него значения дополнительных свойств, что-то в этом роде:
ДокументКопирования = Неопределено;
	Если НЕ Источник.ДополнительныеСвойства.Свойство("ДокументКопирования", ДокументКопирования) Тогда
		Возврат;
	КонецЕсли;
	
	// копировать значения не всех подряд свойств
	МассивСвойств = Новый Массив;
	МассивСвойств.Добавить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("_Автомобиль"));
	МассивСвойств.Добавить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("_Агент"));

	
	ТЗЗначенийСвойств = ПолучитьСвойстваОбъекта(ДокументКопирования, МассивСвойств);
	
	Если ТЗЗначенийСвойств.Количество() > 0 Тогда
		
		НаборЗаписейСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
		НаборЗаписейСвойств.Отбор.Объект.Установить(Источник.Ссылка);
		
		Для каждого Строка Из ТЗЗначенийСвойств Цикл
			
			Запись = НаборЗаписейСвойств.Добавить();
			ЗаполнитьЗначенияСвойств(Запись, Строка);
			
			Запись.Объект = Источник.Ссылка;
			
		КонецЦикла;
		
		НаборЗаписейСвойств.Записать(Истина);
		
	КонецЕсли;

Источник.ДополнительныеСвойства.Удалить("ДокументКопирования");
Показать
8. olololeg 13.04.21 12:43 Сейчас в теме
(7)Что то, вдуплить не могу, у меня на этапе записи в подписке на событие ПриЗаписиДокумента, в доп. свойствах уже информация по записи объекта, а свойства "ДокументКопирования" нет.
9. limonas 10 13.04.21 16:24 Сейчас в теме
не совсем понял это - (8)
свойства "ДокументКопирования" нет

у документа, как объекта есть свойство-структура "ДополнительныеСвойства", этой структурой я и воспользовался для хранения документа копирования, чтобы при записи вытащить у него свойства и записать созданному документу.
2. x2z7yy 04.12.15 15:14 Сейчас в теме
пытаюсь записать Объект что бы подставить в регистр


Это означает, что при копирование сразу записываете документ, я правильно понял? Если так, то это очень не красиво, мягко говоря.
4. oldfornit 04.12.15 15:51 Сейчас в теме
ой-ой-ой. "УстановитьСсылкуНового"
5. Boneman 298 04.12.15 16:18 Сейчас в теме
(4) oldfornit, а если человек откажется от записи ? поимеем битую ссылку
10. small555 03.05.24 09:26 Сейчас в теме
(7)К сожалению, не работает. ПриЗаписи ДополнительныеСвойства уже не содержит ДокументКопирования. Там структура совсем с другим ключом - "РежимЗаписи" со значением "Запись". А ключ "ДокументКопирования" исчез. В момент копирования, да я его видела. В момент записи уже нет. Жаль, не работает. А так хочется научиться копировать доп.сведения при копировании
11. limonas 10 03.05.24 15:29 Сейчас в теме
(10) У меня это рабочий код и должно работать, как описано выше. Вы в обработчике события ПриКопированииДокумента специально не записывали в структуру "ДополнительныеСвойства" как указано в п. 3:
Источник.ДополнительныеСвойства.Вставить("ДокументКопирования", ОбъектКопирования.Ссылка);
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот