×
×
Закрытая тема
Показано с 1 по 6 из 6
  1. #1
    Клерк
    Регистрация
    27.08.2002
    Сообщений
    3

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

    Вот ведь, когда не надо было, несколько раз натыкался на пример переноса, сейчас приспичило - не могу найти!
    Подскажите, плиз, заранее благодарен.
    Поделиться с друзьями

  2. #2
    moroder
    Гость
    Переназначаешь аттрибут элемента "Родитель" на нужную групп и все

  3. #3
    Клерк
    Регистрация
    27.08.2002
    Сообщений
    3
    Спасибо, я это уже случайно сообразил (но все равно спасибо!), но теперь другая проблема: один элемент переносится с полпинка, а вот в цикле для всего справочника- никак. У меня 4 группы (в каждой порядка 6 - 8 тысяч элементов, в одной аж 15530), мне надо от групп избавиться, т.е. выкинуть все материалы в корневик справочника (есс-но, коды я делаю уникальные):

    // нг - переменная, содержащая номер группы

    СпрМ = СоздатьОбъект("Справочник.Материалы");
    СпрМ.ВыбратьЭлементы();
    Пока СпрМ.ПолучитьЭлемент() = 1 Цикл
    Если СпрМ.ЭтоГруппа() = 1 Тогда
    Продолжить;
    КонецЕсли;
    СпрМ.Код = Число(СпрМ.Код) + 100000 * нг;
    СпрМ.Родитель = "";
    СпрМ.Записать();
    КонецЦикла;

    Цикл выполняется 4 раза, по одному для каждой группы. Если повторить обработку, он выполнится снова 4 раза. Причем, если заремить строчку Родитель, то изменение кодов отрабатывается полностью для всего справочника. Видимо, при записи нового Родителя курсор цикла сдвигается в конец текущей группы... И как это побороть? Можно, конечно, этот цикл засунуть в еще один, и прогнать внешний 20000 раз, но это же крайне некрасиво и чудовищно долго.
    Сама процедура посложнее, конечно (там проверка текущего кода, родителя и кой-чего еще), но остальное неважно.

  4. #4
    moroder
    Гость
    Это понятно, есть такая проблем, что после перноса элементы в другую группу "выборка "портиться" ", поэтому поставь все эти строки еще раз в цикл (по количеству элементов) правда это будет долго работать,

    либо создай список значений, куда запихаешь ссылки на все элементы, а потом уже цикл не по справочнику, а по элементам списка .....

  5. #5
    Клерк
    Регистрация
    27.08.2002
    Сообщений
    3
    >> поэтому поставь все эти строки еще раз в цикл
    >> (по количеству элементов) правда это будет
    >> долго работать,

    дык я так и сделал, тока самому аж тошно смотреть - некрасиво енто... хочется же, шоб усё было окейно!

    а вот список значений - это интересно, отстанут бухгалтера - доделаю процедурку, вдруг исчо пригодится...

    спасибо за помощь

  6. #6
    Fosihas
    Гость
    Можно было отключить контроль за уникальностью кодов.
    Просто перебирая Справочник Материалов присваивать нового Родителя и новые Код, на который поставить счетчик для подсчета. Все заново перенумеруется,
    После снова включить контроль уникальности..

Закрытая тема

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы можете создавать новые темы
  • Вы можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •