Копирование характеристик номенклатуры

1. HaIIpuKoJIe 13.08.18 15:59 Сейчас в теме
Добрый день. Копирую номенклатуру обработкой

&НаКлиенте
Процедура Скопировать(Команда)
	СкопироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СкопироватьНаСервере()
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	Номенклатура.Ссылка
	                      |ИЗ
	                      |	Справочник.Номенклатура КАК Номенклатура
	                      |ГДЕ
	                      |	Номенклатура.Родитель = &Родитель");
	Запрос.УстановитьПараметр("Родитель", Объект.ГруппаИсточник);
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		ЭлементКопия = Выборка.Ссылка.Скопировать();
		ЭлементКопия.Родитель = Объект.ГруппаПриемник;
		ЭлементКопия.Наименование = ЭлементКопия.Наименование + " -Копия";
		Если ЭлементКопия.Артикул<>0 Тогда
		НовыйНомерАртикула = битАртикулы.НовыйНомерАртикула();
		Если НЕ НовыйНомерАртикула = 0 Тогда
			ЭлементКопия.Артикул = НовыйНомерАртикула;
		КонецЕсли;
	КонецЕсли;


		ЭлементКопия.Записать();
	
	КонецЦикла; 
	
	
КонецПроцедуры

Показать

Не могу понять как копировать вместе с номенклатурой ее характеристики?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 13.08.18 16:03 Сейчас в теме
(1) как-как,
это 2 этапа.
1.Этап Ты прошел. Скопировали элемент, и записали его в базу данных.

2. Этап по ссылке исходной номенклатуры, запросом выбираешь характеристики, по владельцу.
Каждую копируешь - и у копии родителем устанавливаешь ссылку твоей скопированной номенклатуры (ссылка у тебя уже есть, т.к. элемент в базу записан).
4. HaIIpuKoJIe 24.08.18 11:28 Сейчас в теме
(2)Не могу понять как в цикле указать владельца из первого этапа.
&НаКлиенте
Процедура Скопировать(Команда)
	СкопироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СкопироватьНаСервере()
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	Номенклатура.Ссылка
	                      |ИЗ
	                      |	Справочник.Номенклатура КАК Номенклатура
	                      |ГДЕ
	                      |	Номенклатура.Родитель = &Родитель");
	Запрос.УстановитьПараметр("Родитель", Объект.ГруппаИсточник);
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		ЭлементКопия = Выборка.Ссылка.Скопировать();
		ЭлементКопия.Родитель = Объект.ГруппаПриемник;
		ЭлементКопия.Наименование = ЭлементКопия.Наименование + " -Копия";
		
		Если ЭлементКопия.Артикул<>0 Тогда
		НовыйНомерАртикула = битАртикулы.НовыйНомерАртикула();
		Если НЕ НовыйНомерАртикула = 0 Тогда
			ЭлементКопия.Артикул = НовыйНомерАртикула;
		КонецЕсли;
	КонецЕсли;
		ЭлементКопия.Записать();
		
	КонецЦикла; 
	    	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ХарактеристикиНоменклатуры.Ссылка
		|ИЗ
		|	Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
		|ГДЕ
		|	ХарактеристикиНоменклатуры.Владелец = &Владелец";
	
	Запрос.УстановитьПараметр("Владелец", Объект.ГруппаИсточник);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ЭлементКопия = Выборка.Ссылка.Скопировать();
		ЭлементКопия.Владелец = ????????????????????????????
		ЭлементКопия.Наименование = ЭлементКопия.Наименование;
	КонецЦикла;
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

	
КонецПроцедуры
Показать
5. Boneman 298 24.08.18 11:40 Сейчас в теме
(4)
Не могу понять как в цикле указать владельца из первого этапа.

у тебя же выборка. Там много элементов.
Тебе для второго этапа нужно либо массив элементов подготовить,
либо второй этап засунуть внутрь первого, после ЭлементКопия.Записать;

у характеристики, в запросе владелец = Выборка.Ссылка
у копии характеристики владелец = ЭлементКопия.Ссылка
3. Doreng 27 13.08.18 17:28 Сейчас в теме
(1) Конечно в (2) ответ уже дан, но ради разнообразия могу предложить зайти со стороны характеристик, то есть запрос к характеристикам, а уже из них получать номенклатуру.
З.Ы. на правах альтернативы :-)
Оставьте свое сообщение

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