Имя: Пароль:
1C
1C 7.7
v7: Выборка элементов справочника не обходит все элементы!
,
0 Vitekkkk
 
31.05.13
13:16
Обхожу справочник контрагентов проверяю есть ли по нем движения и если нет переношу их в другую группу. Но при обходе он берет только 1 контрагента из группы. Туплю не могу въехать почему всех не обходит в каждой подгруппе. Посмотрите мож че видно по коду (папкаС содержит в себе 1 уровень подгрупп):
 СпрВ = СоздатьОбъект("Справочник.ВидыДоговоров");
   СпрВ.НайтиПоКоду(13);
   ВыбВид = СпрВ.ТекущийЭлемент();
   
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)

   |Период с НачДата по КонДата;
   |Обрабатывать НеПомеченныеНаУдаление;
   |Контрагент = Регистр.Продажи.Контрагент;
   |Менеджер = Регистр.Продажи.Контрагент.Менеджер;
   |Регион = Регистр.Продажи.Контрагент.Регион;
   |Количество = Регистр.Продажи.Количество;
   |ВидДоговора = Регистр.Продажи.Договор.ВидДоговора;
   |Функция КоличествоСумма = Сумма(Количество);
   |Группировка Контрагент упорядочить по Контрагент.Наименование без групп;
   |Условие(ВидДоговора = ВыбВид);
   |Условие(Контрагент в ПапкаС);
   |"//}}ЗАПРОС

   ;

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;  

   Спр = СоздатьОбъект("Справочник.Контрагенты");  
   Спр.ИспользоватьРодителя(ПапкаС);


   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
       Если Спр.ЭтоГруппа() = 0 Тогда
           Если Запрос.Получить(Спр.ТекущийЭлемент()) = 0 Тогда      
               Спр.Родитель = ПапкаВ;
               Спр.Записать();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
1 Ненавижу 1С
 
гуру
31.05.13
13:19
потому что ты портишь выборку своими переносами, сначала сформируй коллекцию "переносимых" элементов, а потом все их перенеси
2 KishMish
 
31.05.13
13:19
ты записываешь тот же споциционирвоанный элмент из выборки. и выборка сбивается.

тебе нао сделать доп переменную
Спр
ДляЗаписи=СоздатьОбъект("Справочник.Контрагенты");
а вц кикле
ДляЗаписи.НайтиЭлемент(Спр.ТекущийЭлемент());
ДляЗаписи.Родитель = ПапкаВ;
ДляЗаписи.Записать();
3 Ёпрст
 
31.05.13
13:21
(0) наслаждайся:
 
Спр = СоздатьОбъект("Справочник.Контрагенты");  
Спр.ИспользоватьРодителя(ПапкаС);
Спр.ВыбратьЭлементы();
Спр.Родитель = ПапкаВ;
Спр.Записать();

//перенесёт всех в выбранную папку
4 Vitekkkk
 
31.05.13
13:27
(2) Точно! затупил. Спасибо....
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн