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

05.04.12

Задачи пользователя - Подбор и обработка объектов

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

Скачать файлы

Наименование Файл Версия Размер
КопированиеГруппыСправочникаСЭлементами
.epf 6,76Kb
93
.epf 6,76Kb 93 Скачать

Как-то возникала необходимость, решил поделиться.

Естественно нужно поменять тип справочника в реквизитах обработки и в запросе на нужный вам.

Например, если вы хотите использовать эту обработку для справочника "Номенклатура", то вам надо зайти в реквизиты обработки и изменить тип реквизита "Откуда" и "Куда" на "СправочникСсылка.Номенклатура" и далее в модуле формы обработки в тексте запроса заменить "БизнесПроекты" на "Номенклатура". Т.е. вместо текста:

 

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

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

  

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


 

Вобщем, чтобы было нагляднее выкладываю весь код модуля формы:

 

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

См. также

Групповое копирование документов из периода в период

Подбор и обработка объектов Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Очень часто бывает, что документы одного периода повторяются в следующем. Поэтому приходится выполнять рутинную работу по их повторению, а именно копировать каждый документ по отдельности. Чтобы этого избежать, была написана обработка группового копирования документов для конфигурации 1С Бухгалтерия версии 3.0.

3600 руб.

29.06.2015    44631    90    18    

100

Групповая обработка проводок для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0

Подбор и обработка объектов Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Данная обработка предлагается для случаев, когда бывает необходимо изменить какой-либо реквизит в группе проводок, отобранных по определенному набору полей, за определенный период, с определенным типом документа-регистратора. Предлагается четыре варианта обработки для конфигураций: БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0 .

2000 руб.

30.05.2016    28792    29    0    

49

Шаблон обработки документов/справочников по произвольному алгоритму

Подбор и обработка объектов Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

Обработка-шаблон, позволяющая вносить изменения в существующие документы/элементы справочника по произвольному алгоритму, созданному в режиме Предприятия.

1 стартмани

11.03.2024    255    6    SanchoD    0    

3

Объединение табличных частей "Товары" документов "Реализация товаров и услуг"

Подбор и обработка объектов Платформа 1С v8.3 1С:Управление торговлей 11 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Акцизы Абонемент ($m)

Заказчик попросил написать обработку по объединению документов "Реализация товаров услуг" в один итоговый документ, в процессе выполнения получилось 2 обработки.

1 стартмани

29.02.2024    352    3    VdZMWOnC    8    

3

Автоматическое начисление ежемесячных услуг

Производство готовой продукции (работ, услуг) Подбор и обработка объектов Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Автоматизированное начисление ежемесячных услуг с отправкой по электронной почте счетов. Модуль будет полезен организациям, которые ежемесячно выписывают большое количество счетов и реализаций клиентам, например: IT-компании, охранные предприятия, рекламные организации и другие, оказывающие профессиональные услуги на регулярной основе. Упрощенная версия предназначена для организаций, которые работают без НДС и при выписке услуг предполагается одна услуга в документе "Реализация товаров и услуг"

5 стартмани

18.02.2024    493    3    pean    1    

6

Проведение документов на управляемых формах

Подбор и обработка объектов Платформа 1С v8.3 Управляемые формы 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

Универсальная обработка проведения/перепроведения документов для любой конфигурации на управляемых формах.

1 стартмани

10.02.2024    469    16    SanchoD    0    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Alex_E 2353 04.04.12 07:25 Сейчас в теме
А просто взять и мышкой перетащить не судьба?
4. arhal-ya@yandex.ru 253 04.04.12 09:29 Сейчас в теме
(1) Alex_E,
1. Пробовал в 8.1? Может у тебя судьба отличная от всех остальных пользователей 1с?
2. Читай внимательнее тему, особенно слово "Копирование".
6. Alex_E 2353 04.04.12 09:38 Сейчас в теме
(4) Судьба у мня обычная. Переносить из группы в группу можно было ещё в 7.7, кнопочка соответственная была и в 7.7 и в 8.0 и в 8.1 и в 8.2. В 8.2 можно ещё и мышкой. Слово копирование в публикации - крутое слово. Для чего - непонятно :-( Может что бы создать несколько одинаковых элементов номенклатуры в разных папках?
8. arhal-ya@yandex.ru 253 04.04.12 09:48 Сейчас в теме
(6) Alex_E,
Слово копирование в публикации - крутое слово. Для чего - непонятно :-( Может что бы создать несколько одинаковых элементов номенклатуры в разных папках?
Правильно, а если внимательнее почитать тему, то не только элементов, но и групп с учетом вложенной иерархии. Насчет "крутое" не знаю - слово как слово, меня особо не впечатляет:)
2. yegorovnv 04.04.12 07:59 Сейчас в теме
есть аналог... уже с выбором справочника в форме.
давайте не будем плодить плохие клоны.
умение пользоваться методом Скопировать() похвально, рад за вас
7. arhal-ya@yandex.ru 253 04.04.12 09:40 Сейчас в теме
(2) rinatru,
Не встречал.
Во первых это простой оригинальный инструмент а не клон. Кстати, не увидел ссылку на аналог.
Во вторых не претендует на универсальность типа выбора справочника - потому и делюсь задаром.
По поводу "Скопировать()" - это пафос уставшего от своей значимости кодера 1С? Зачем тогда было вообще лезть в код если и так все знаешь и умеешь? Тем более в такой "плохой клон".
9. yegorovnv 04.04.12 09:58 Сейчас в теме
(7)

я не лез в код.. просто предположил, что использовался метод Скопировать()...
перед тем как выкладывать свой простой продукт, рекомендуется использовать поиск аналогов...
пафоса нет, просто рекомендация

аналог вот здесь -- >> http://infostart.ru/public/92395/
специально потратил 2 минуты, чтобы найти аналог и показать его тебе
10. arhal-ya@yandex.ru 253 04.04.12 11:06 Сейчас в теме
(9) rinatru,
пафоса нет
,
специально потратил 2 минуты
- ... :)
Посмотрел аналог - клоном и не пахнет. Справедливости ради надо заметить - удобней для конечного пользователя потому что есть выбор любого справочника. Использование транзакции наверно обусловлено скорее избыточностью алгоритма копирования (в котором, например может быть не найден родитель при копировании o_O) а не критичностью процесса.
Собственно резюме:
- для конечного пользователя лучше "аналог".
- для кодера, сисадмина и прочих причастных к 1с не только поверхностно - лучше "мой плохой клон" потому как алгоритм раза в три проще и допиливать, соответственно, удобнее.
3. fishca 1254 04.04.12 09:13 Сейчас в теме
стандартного функционала разве не достаточно?
Прикрепленные файлы:
5. arhal-ya@yandex.ru 253 04.04.12 09:30 Сейчас в теме
(3) fishca,
Еще раз - читаем слово "Копирование" в теме публикации.
11. Roni 25.04.12 15:09 Сейчас в теме
Я тоже считаю что не аналог. А когда нужно скопировать более 1000 элементов мышкой пощелкать тяжеловато будет...
12. Ranika 25.04.12 15:10 Сейчас в теме
Спасибо! Просто, удобно :)
13. пользователь 30.06.12 13:27
Сообщение было скрыто модератором.
...
14. yuraskas 176 19.09.13 16:59 Сейчас в теме
15. yuraskas 176 27.09.13 09:44 Сейчас в теме
Код не рабочий. Иерархия не сохраняется.
16. пользователь 09.12.14 07:31
Сообщение было скрыто модератором.
...
17. Yakudza1984 05.09.18 09:02 Сейчас в теме
Спасибо. Просто, удобно, ничего лишнего. Помогло.
18. nik389 19.11.18 23:38 Сейчас в теме
Иерархия не сохраняется
Оставьте свое сообщение