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