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

Новая тема
"Примеры http://www.forum.mista.ru/topic.php?id=111004 и http://www.mista.ru/tutor_1c/sprav.htm#group оказались неработоспособными. Привожу свой вариант (перемещаю только элементы справочника, не входящие ни в одну из групп):

Процедура Сформировать()

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

Спр.НайтиПоНаименованию("Наша группа");

ВотЭтаГруппа = Спр.ТекущийЭлемент();

Спис = СоздатьОбъект("СписокЗначений");


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

Пока Спр.ПолучитьЭлемент(0) = 1 Цикл

Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли;

Спис.ДобавитьЗначение(Спр.Код);
   
КонецЦикла;


Ст = """";

Для С = 1 По Спис.РазмерСписка() Цикл

Код = Спис.ПолучитьЗначение(С,Ст);

Спр.НайтиПоКоду(Код);

Спр.Родитель=ВотЭтаГруппа;

Спр.Записать();

КонецЦикла;

КонецПроцедуры"
А что же на "мисте" этот вариант не выложил?
"А зачем:
> Спис.ДобавитьЗначение(Спр.Код);
> Код = Спис.ПолучитьЗначение(С,Ст);
> Спр.НайтиПоКоду(Код);
Если можно:
Спис.ДобавитьЗначение(Спр.ТекущийЭлемент());
и далее:
Для С = 1 По Спис.РазмерСписка() Цикл
Элемент=Спис.ПолучитьЭлемент(С);
Элемент.Родитель=ВотЭтаГруппа;
Спр.Записать();
КонецЦикла;

Но проще вообще:
Спр.ВыбратьЭлементы(1);
Пока Спр.ПолучитьЭлемент(0) = 1 Цикл
Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли;
Спр.Родитель=ВотЭтаГруппа;
Спр.Записать();
КонецЦикла;

Если я не прав спецы меня поправят... :)"
"> Но проще вообще:
> Спр.ВыбратьЭлементы(1);
> Пока Спр.ПолучитьЭлемент(0) = 1 Цикл
> Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли;
> Спр.Родитель=ВотЭтаГруппа;
> Спр.Записать();
> КонецЦикла;
>
> Если я не прав спецы меня поправят... :)

выборка собьётся!"
"> (перемещаю только элементы справочника, не входящие ни в одну из групп):


Процедура Сформировать()

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

Спр.НайтиПоНаименованию("Наша группа");

ВотЭтаГруппа = Спр.ТекущийЭлемент();

Спис = СоздатьОбъект("СписокЗначений");


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

Пока Спр.ПолучитьЭлемент(0) = 1 Цикл

Если (Спр.ЭтоГруппа() = 1) или (спр.Уровень()>0) Тогда Продолжить; КонецЕсли;

Спис.ДобавитьЗначение(Спр.ТекущийЭлемент());
 
КонецЦикла;

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

Для С = 1 По Спис.РазмерСписка() Цикл

Код = Спис.ПолучитьЗначение(С);

Если Спр.НайтиЭлемент(Код)=1 тогда

Спр.Родитель=ВотЭтаГруппа;

Спр.Записать();
КонецЕсли;
КонецЦикла;

КонецПроцедуры

соточку на тел )))))))"
Читают тему
(гостей: 1)

Быстрый переход