Показано с 1 по 3 из 3
-
18.01.2013, 10:34 #1
- Регистрация
- 19.02.2009
- Сообщений
- 6
- Сказал(а) спасибо
- 31
- Поблагодарили 11 раз(а) в 1 сообщении
Как скопировать иерархический справочник?
Доброго времени суток!
Имеется иерархический справочник. Необходимо скопировать одну из его групп, со всеми вложенными элементами и уровнями.
Под семерку нашел пример:
//************************************************** *****Процедура КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа) СпрНом = СоздатьОбъект("Справочник.Номенклатура "); НовГр = СоздатьОбъект("Справочник.Номенклатура "); СпрНом.ИспользоватьРодителя(СпрТекГруппа); СпрНом.ВыбратьЭлементы(1); Пока СпрНом.ПолучитьЭлемент(1)>0 Цикл Если (СпрНом.ЭтоГруппа() = 1) и (СпрНом.Уровень() - 1 = СпрТекГруппа.Уровень()) Тогда Сообщить(СпрНом); НовГр.ИспользоватьРодителя(СпрНовГруппа); НовГр.НоваяГруппа(); НовГр.Наименование = СпрНом.Наименование; НовГр.Записать(); КопированиеГруппСпр(СпрНом,НовГр); КонецЕсли; КонецЦикла;КонецПроцедуры//************************************************** ****Процедура Сформировать() КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа);КонецПроцедуры//************************************************** ****Где:СпрТекГруппа - группа справочника откуда нужно выполнять переносСпрНовГруппа - группа справочника куда нужно выполнять перенос
Попытался переделать его под восьмерку, но пока ничего не выходит :(
Вот что получилось:
Перем СпрТекГруппа,СпрНовГруппа;Процедура КнопкаВыполнитьНажатие(Кнопка)СпрТекГруппа = Справочники.Номенклатура.НайтиПоКоду("0 11");КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа);КонецПроцедурыПроцедура КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа)СпрНом = Справочники.Номенклатура;НовГр = Справочники.Номенклатура;;Выборка = СпрНом.Выбрать(СпрТекГруппа);Пока Выборка.Следующий() Цикл //Если (Выборка.ЭтоГруппа() = 1) и (Выборка.Уровень() - 1 = СпрТекГруппа.Уровень()) Тогда Если (Выборка.ЭтоГруппа) Тогда Сообщить(СпрНом); НовЭл = НовГр.СоздатьГруппу(); //НовЭл.Родитель(СпрНовГрупп а); НовЭл.Наименование = Выборка.Наименование; НовЭл.Записать(); Сообщить(НовЭл.Код); КопированиеГруппСпр(Выборка,НовЭл); КонецЕсли; КонецЦикла;КонецПроцедуры
Цикл проходит один раз, создается новая группа и уже на втором кругу цикла вываливает ошибку:
{Форма.Форма(12)}: Ошибка при вызове метода контекста (Выбрать): Несоответствие типов (параметр номер '1')Выборка = СпрНом.Выбрать(СпрТекГруппа);по причине:Несоответствие типов (параметр номер '1')
Да и с условием этим
Если (Выборка.ЭтоГруппа() = 1) и (Выборка.Уровень() - 1 = СпрТекГруппа.Уровень())
я никак не разберусь :(
-
18.01.2013, 12:54 #2
- Регистрация
- 04.07.2011
- Адрес
- Киев
- Сообщений
- 23
- Сказал(а) спасибо
- 53
- Поблагодарили 18 раз(а) в 8 сообщениях
Если структура справочников первой и второй конфигураций одинакова - это делается за 5 минут обработкой "Выгрузка и загрузка данных XML".
Взять можно с диска ИТС.
-
Пользователь сказал cпасибо:
vovka135 (18.01.2013)
-
18.01.2013, 13:02 #3
- Регистрация
- 19.02.2009
- Сообщений
- 6
- Сказал(а) спасибо
- 31
- Поблагодарили 11 раз(а) в 1 сообщении
Скопировать надо в пределах ОДНОЙ БАЗЫ :)
Есть справочник "Номенклатура". В нем куча групп с подгруппами. Вот одну из групп и надо скопировать со всем её содержимым и структурой. Оставить все как есть, за исключением кодов разумеется.
Но за идею спасибо! Сейчас попробую из базы в ее копию залить. Возможно что-то и получится.
Похожие темы
-
1С сбился справочник валют
от ali-fd в разделе 1С - Предприятие 7.7Ответов: 0Последнее сообщение: 04.02.2012, 15:09
Социальные закладки