0
Roman2012
14.03.16
✎
05:14
|
Здравствуйте
Нужно скопировать содержимое ветки справочника в другую ветку (с некоторыми изменениями)
написал следующую обработку
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СписЗнач = СоздатьОбъект("СписокЗначений");
СпрНом.ИспользоватьРодителя(СпрОткуда);
СпрНом.ИспользоватьДату(РабочаяДата());
СпрНом.ВыбратьЭлементы(1);
Пока СпрНом.ПолучитьЭлемент()=1 Цикл
СписЗнач.ДобавитьЗначение(СпрНом.ТекущийЭлемент());
Сообщить("СпрНом=["+СпрНом+"] цена спр="+СпрНом.Цена);
КонецЦикла;
СпрНом.ИспользоватьРодителя(СпрКуда);
СпрНом.ИспользоватьДату(РабочаяДата());
Для Сч = 1 По СписЗнач.РазмерСписка() Цикл
ТекЗнач = СписЗнач.ПолучитьЗначение(Сч);
СпрНом.Новый();
Для Рек = 1 По Метаданные.Справочник("Номенклатура").Реквизит() Цикл
ИД = Метаданные.Справочник("Номенклатура").Реквизит(Рек).Идентификатор;
ТекущийРеквизит = Метаданные.Справочник("Номенклатура").Реквизит(Рек);
СпрНом.УстановитьАтрибут(ИД, ТекЗнач.ПолучитьАтрибут(ИД) )
КонецЦикла;
Все нормально копируются, кроме цены (периодический реквизит)
пробовал вставлять следующий код
Если ТекущийРеквизит.Периодический = 0 тогда
СпрНом.УстановитьАтрибут(ИД, ТекЗнач.ПолучитьАтрибут(ИД) )
Иначе
// периодический
ИсторияИсточник=СоздатьОбъект("Периодический");
ИсторияИсточник.ИспользоватьОбъект(ИД, ТекущийРеквизит);
ИсторияПриемник=СоздатьОбъект("Периодический");
ИсторияПриемник.ИспользоватьОбъект(ИД, СпрНом.ТекущийЭлемент());
ИсторияИсточник.ВыбратьЗначения();
Пока ИсторияИсточник.ПолучитьЗначение()=1 Цикл
ИсторияПриемник.ДатаЗнач=ИсторияИсточник.ДатаЗнач;
ИсторияПриемник.Значение=ИсторияИсточник.Значение;
ИсторияПриемник.Записать();
КонецЦикла
КонецЕсли
однако, хотя ТекущийРеквизит - периодический (в отладчике "Периодический"=1), но ИспользоватьОбъект выдает ошибку
"Цена не является константой или периодическим параметром"
Поэтому вопрос - при сохранении объекта типа справочник в списке значений - сохраняются ли в нем периодические реквизиты? И как можно решить проблему?
В принципе, устроил бы даже вариант с передачей последнего значения цены, но она не передается никак. ИспользоватьДату() не помогает
Заранее спасибо!
|
|