Каталог решений - Копирование элемента справочника Номенклатура с данными вкладок Единицы и Свойства

Копирование элемента справочника Номенклатура с данными вкладок Единицы и Свойства

Копирование элемента справочника Номенклатура с данными вкладок Единицы и Свойства

В наличии

Как при помощи подписки на событие копировать элемент справочника "Номенклатура" с данными вкладок "Единицы" и "Свойства".
Сначала нужно создать подписку на событие При копировании Элемента спр. "Номенклатура", а затем в обработчике написать следующий код:

Категория:

Описание

Процедура ПриКопированииЭлементаНоменклатурыПриКопировании(Источник, ОбъектКопирования) Экспорт
	
	
	Источник.Записать();//Запись созданного объекта для получения ссылки 
	 
	
	 //////////////Вкладка "Единицы" элемента справочника "Номенклатура"///////////
	 ЗапросЕдИзм = Новый Запрос;
	 ЗапросЕдИзм.Текст = "ВЫБРАТЬ
	                     |	ЕдиницыИзмерения.Владелец,
	                     |	Номенклатура.Ссылка КАК Номенклатура,
	                     |	ЕдиницыИзмерения.Код,
	                     |	ЕдиницыИзмерения.ЕдиницаПоКлассификатору КАК ПоКлассификатору,
	                     |	ЕдиницыИзмерения.Наименование,
	                     |	ЕдиницыИзмерения.Коэффициент,
	                     |	ЕдиницыИзмерения.Вес,
	                     |	ЕдиницыИзмерения.Объем,
	                     |	ЕдиницыИзмерения.ПорогОкругления,
	                     |	ЕдиницыИзмерения.ПредупреждатьОНецелыхМестах
	                     |ИЗ
	                     |	Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
	                     |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
	                     |		ПО ЕдиницыИзмерения.Владелец = Номенклатура.Ссылка
	                     |ГДЕ
	                     |	Номенклатура.Ссылка = &Номенклатура";
	
	 ЗапросЕдИзм.УстановитьПараметр("Номенклатура",ОбъектКопирования.Ссылка);
	 РезультатЕдИзм=ЗапросЕдИзм.Выполнить().Выбрать();
		

      Если НЕ РезультатЕдИзм.Количество() = 0 ТОГДА 
		                         
		Пока РезультатЕдИзм.Следующий() Цикл	
			                                  
		НоваяСтрока = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();	
		
		НоваяСтрока.Владелец 					= Источник.Ссылка;
		НоваяСтрока.ЕдиницаПоКлассификатору 	= РезультатЕдИзм.ПоКлассификатору;
		НоваяСтрока.Наименование 				= РезультатЕдИзм.Наименование;
		НоваяСтрока.Коэффициент 				= РезультатЕдИзм.Коэффициент;
		НоваяСтрока.Вес 						= РезультатЕдИзм.Вес;
		НоваяСтрока.Объем 						= РезультатЕдИзм.Объем;
		НоваяСтрока.ПорогОкругления 			= РезультатЕдИзм.ПорогОкругления;
		НоваяСтрока.ПредупреждатьОНецелыхМестах = РезультатЕдИзм.ПредупреждатьОНецелыхМестах;
		НоваяСтрока.Записать();
		
	    КонецЦикла;
	 
	  КонецЕсли; 

	 
	 
	//////////////Вкладка "Свойства" элемента справочника "Номенклатура"///////////	
		ЗапросСвойства = Новый Запрос;
		ЗапросСвойства.Текст = "ВЫБРАТЬ
		                       |	Номенклатура.Ссылка КАК Номенклатура,
							   |	ЗначенияСвойствОбъектов.Объект,
		                       |	ЗначенияСвойствОбъектов.Свойство,
		                       |	ЗначенияСвойствОбъектов.Значение
		                       |ИЗ
		                       |	Справочник.Номенклатура КАК Номенклатура
		                       |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		                       |		ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
		                       |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
		                       |		ПО Номенклатура.ЕдиницаДляОтчетов = ЕдиницыИзмерения.Ссылка
		                       |			И Номенклатура.ЕдиницаХраненияОстатков = ЕдиницыИзмерения.Ссылка
		                       |			И Номенклатура.ЕдиницаИзмеренияМест = ЕдиницыИзмерения.Ссылка
		                       |ГДЕ
		                       |	Номенклатура.Ссылка = &Номенклатура";
		
		ЗапросСвойства.УстановитьПараметр("Номенклатура",ОбъектКопирования.Ссылка);
		Результат=ЗапросСвойства.Выполнить().Выбрать();
		 
		
		Если НЕ Результат.Количество() = 0 ТОГДА 
			
		Движения = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();	
		//Движения.Записывать = Истина;
		
		Движения.Прочитать();//Добавление в созданный набор записей тех данных, которые уже были в рег. свед.
		
		Пока Результат.Следующий() Цикл
		Движение = Движения.Добавить();	
		Движение.Объект	  = Источник.Ссылка;
		Движение.Свойство = Результат.Свойство;
		Движение.Значение = Результат.Значение;
		
	    КонецЦикла;
		Движения.Записать(Истина); 
		КонецЕсли; 
 
	
КонецПроцедуры
has been added to your cart:
Оформление заказа