1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

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

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

  1. Гость

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

    vbs Well-Known Member

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

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

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

    Hryv Гость

    Репутация:
    0
    Как пользователь или как программист?
     
  5. vitfil

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

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

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

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

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

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


    КонецЕсли;

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

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

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


    КонецЕсли;


    КонецЦикла;

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

    vbs Well-Known Member

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

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

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

    Hryv Гость

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

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

    unknown181538 НеГуру
    1C Team

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

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

    puh14 Well-Known Member
    1C Team

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

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

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

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

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

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

    Hryv Гость

    Репутация:
    0
    Все же рекурсия - сильная вещь!!!

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

    Вложения:

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

    Репутация:
    0
  16. Hryv

    Hryv Гость

    Репутация:
    0
    Маksim, незачто :)
     
  17. vbs

    vbs Well-Known Member

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

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