Проблема с циклом при смене родителя 1с77

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

  1. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Здравствуйте. Есть обработка. Фрагмент кода для наглядности приведен ниже. Суть обработки - это изменение наименования папок 2 уровня и, если папка не удовлетворяет нужному условию, то мы переходим внутрь этой папки и изменяем родителя для каждого из элементов данной папки.
    Код (Text):
            СпрОбучение.ВыбратьЭлементы();
    Пока СпрОбучение.ПолучитьЭлемент() = 1 Цикл
    Если (СпрОбучение.ТекущийЭлемент().ЭтоГруппа()=1) Тогда
    Если СпрОбучение.ТекущийЭлемент().УчГруппаГ.Выбран()=1 Тогда
    СпрОбучение.ПорядокКодов();
    СпрОбучение.Наименование = СокрЛП(СпрОбучение.УчГруппаГ);
    СпрОбучение.Записать();
    //ищем папку в данном справочнике, из которой надо элементы переместить в папку выбывшие
    ............
    //Если нашли нужную папку, то переходим в нее       
    СпрОбучение.ИспользоватьРодителя(СпрОбучение.ТекущийЭлемент());
    //меняем у всех элементов данной папки родителя
    СпрОбучение.ВыбратьЭлементы();
    Пока СпрОбучение.ПолучитьЭлемент()=1 Цикл
    СпрОбучение.Родитель = ПапкаВыбывших;
    СпрОбучение.УчГруппа="";
    СпрОбучение.Записать();
    КонецЦикла;
    ...............
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Столкнулась с такой проблемой: идет цикл по всем папкам справочника Обучение, как только надо изменить родителя, то первая папка проходит нормально и элемент перемещается в нужное место , а потом цикл заканчивается, не проходя по оставшимся папкам и ничего с ними не делая. Вопрос: почему вылетает цикл, ведь там еще куча папок? Я понимаю, что этим переносом элементов сильно изменяется структура справочника, но это же не повод, чтобы цикл вылетал, хотя....
     
  2. kaa

    kaa Гость

    Создайте две переменных справочника СпрОбучение и СпрОбучение1
     
  3. Hryv

    Hryv Гость

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

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

    но лично я не уверен, что в данном случае поможет совет kaa
    Использовать СпрОбучение1 для второго цикла помогло бы, если бы там не происходила смена родителя

    Можно сначала проверить и если не поможет, то я завел бы ТЗ и во втором цикле (выборке по СпрОбучение1) заполнял бы в одну колонку ТЗ элементы, а в другую их новых родителей

    А после завершения перебора всех групп сделал бы цикл по строкам ТЗ и уже в нем перенес бы элементы в новые группы
     
  4. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Спасибо, вроде все работает как надо.
    Спасибо, интересный вариант. Буду знать, если первый не будет помогать)
     
Загрузка...
Похожие Темы - Проблема циклом при
  1. c0de3r
    Ответов:
    5
    Просмотров:
    127
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    136
  3. SoulPaladin
    Ответов:
    4
    Просмотров:
    132
  4. Artael
    Ответов:
    1
    Просмотров:
    110
  5. ENSLER
    Ответов:
    0
    Просмотров:
    103

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