как сделать копию группы

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 25 май 2010.

  1. Гость

    Добрый день, есть справочник (поле код и наименование) в нем есть группа с под группами и элементами
    Как можно сделать копию этой группы со всеми элементами и под группами.
    Я пытался не чего не получилось. Платформа 1cv77
     
  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Платформу укажи
     
  3. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    В чем именно выражается "я пытался"? Давайте конкретней: что делали, что не получилось.
    P.S. Честное слово, скоро начну банить, если еще один расскажет, как он тужился над проблемой...
     
  4. Hryv

    Hryv Гость

    Как пользователь или как программист?
     
  5. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Маksim, ну скажите, что вы обычный пользователь... Ну спровоцируйте меня на гнев праведный!
     
  6. Гость

    Вот мой код:
    перем текст;
    Процедура Сформировать()
    спр=СоздатьОбъект("Справочник.задача");
    спрнов=СоздатьОбъект("Справочник.задача");

    если ВыбСправочник.Выбран()=0 Тогда
    Сообщить("Выберите группу");
    Возврат;
    Иначе

    спр.ИспользоватьРодителя(ВыбСправочник.ТекущийЭлемент());
    текст=СтрЗаменить(ВыбСправочник.Наименование,Прав(ВыбСправочник.Наименование,4),
    Строка(ВыбЧисло));// нов.группа

    спрнов.НоваяГруппа();
    спрнов.Наименование=текст;
    спрнов.Записать();
    спрнов.НайтиПоНаименованию(текст);
    этагруппа=спрнов.ТекущийЭлемент();
    спрнов.ИспользоватьРодителя(этагруппа);


    КонецЕсли;

    спр.ВыбратьЭлементы();

    Пока спр.ПолучитьЭлемент()=1 Цикл
    если спр.ЭтоГруппа()=1 Тогда
    спрнов.НоваяГруппа();
    спрнов.Наименование=спр.Наименование
    спрнов.Записать();

    Иначе
    спрнов.Новый();
    спрнов.Наименование=спр.Наименование;
    спрнов.Записать();


    КонецЕсли;


    КонецЦикла;

    Получается что в новой группе создаются группы и все элементы
     
  7. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Так все-таки получается ? В чем тогда проблема ?
     
  8. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    А проблема в том, что надо посмотреть в синтаксис-помощнике писание метода ВыбратьЭлементы()
     
  9. Hryv

    Hryv Гость

    Как я понял, элементы, которые изначально лежат в группах, которые лежит внутри выбранной группы, в копии попадают в корень новой группы и не раскладываются по отдельным группам

    Алгоритмическая ошибка.
    Как-то на с++ я делал нечто подобное для копирования файлов. Там идеально получилось использовать рекурсию
    В 1С можно решить иначе
     
  10. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Можно обходить иерархически, и искать группу-родителя по коду.
     
  11. Гость

    Да у меня все элементы и группы попадают в корень новой группы, а мне нужно распределить их по родителям.
     
  12. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Выбирай группы в цикле (параметр метода выбратьэлементы()). Внутри выборки групп пускай цикл по выборке элементов.

    второй вариант - таки запрос, ТЗ, её перебор. Иерархия там автоматом встает, кто родитель - понятно из предыдущей строчки.

    Up. Насчет того что выбратьЭлементы позволяет выбрать только группы если параметр задать - это я погорячился.
     
  13. Гость

    второй вариант - таки запрос, ТЗ, её перебор. Иерархия там автоматом встает, кто родитель - понятно из предыдущей строчки

    Т.е соэдаем ТЗ в ТЗ создаем колонку наименование, и родитель.

    ТЗ.родитель=спр.родитель
     
  14. Hryv

    Hryv Гость

    Все же рекурсия - сильная вещь!!!

    Прилагаю обработку
    У себя протестил - работает
     

    Вложения:

    • CopyGroup.rar
      Размер файла:
      9,3 КБ
      Просмотров:
      18
  15. Гость

  16. Hryv

    Hryv Гость

    Маksim, незачто :)
     
  17. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Классно !
    Чуть-чуть косметики - и первое место на конкурсе красоты
    (Статус вывести, в частности, а то я всегда боюсь зацикливания рекурсий)
     
Загрузка...

Поделиться этой страницей