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