Перейти к содержимому

Перейти
Перейти

Загрузил

Тема поддержки файла Информация

  • Загружен: Mar 02 2014 06:00
  • Последнее обновление: Mar 02 2014 06:00
  • Размер: 4.44К
  • Просмотров: 1733
  • Скачан: 2

Копирование группы справочника с иерархией и элементами в другую группу

* * * * * 1 Голосов



Для работы нужно поменять тип справочника в реквизитах обработки и в запросе на нужный Вам.
Например, если Вы хотите использовать эту обработку для справочника "Номенклатура", то Вам надо зайти в реквизиты обработки и изменить тип реквизита "Откуда" и "Куда" на "СправочникСсылка.Номенклатура" и далее в модуле формы обработки в тексте запроса заменить "БизнесПроекты" на "Номенклатура".
Т.е. вместо текста:
Запрос = Новый Запрос("ВЫБРАТЬ
| БизнесПроекты.Ссылка
|ИЗ
| Справочник.БизнесПроекты КАК БизнесПроекты
|ГДЕ
| БизнесПроекты.Ссылка В ИЕРАРХИИ(&Группа)"
);

должно получиться:

Запрос = Новый Запрос("ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)"
);

Для наглядности весь код модуля формы:

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



Администрация не несет ответственности за возможный вред, причиненный этим материалом.





13 посетителей за последние 15 минут

0 пользователей, 13 гостей, 0 анонимных