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