|
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) Точно! затупил. Спасибо....
|
|