v7: Как с помошью обработки копировать все элементы из одной группы в другую?

Новая тема
Показывать по 10 20 40 сообщений
Я недавно начал программировать в 1С v7.7.
И мне необходимо  с помошью обработки копировать все элементы из одной группы справочника в другую?Если можно сделать, как-то еще подскажите...))) А то в ручную слишком много элементов перенасить надо...времени уйдет очень много! Зарание спасибо...
"...
Сп=СоздатьОбъект("Справочник....");
Сп.ИспользоватьРодителя(ВыбРодительОткуда); // это группа, откуда переносить
Сп.ВыбратьЭлементы(1);
НачатьТранзакцию(); // на всякий случай для работы в сети немонопольно
Пока Сп.ПолучитьЭлемент()=1 Цикл
Сп.Родитель=ВыбРодительКуда; // это группа, куда переносить
Сп.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
...

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

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

PS. Рекомендую записаться на курсы программистов 1с, поможет.
"
"Думаю, что не будет работать, скажет, что нарушен порядок выборки.
Я бы делал так:
СписокКПеремещению=СоздатьОбъект("СписокЗначений");
Сп=СоздатьОбъект("Справочник....");
Сп.ИспользоватьРодителя(ВыбРодительОткуда); // это группа, откуда переносить
Сп.ВыбратьЭлементы(1);
Пока Сп.ПолучитьЭлемент()=1 Цикл
СписокКПеремещению.ДобавитьЗначение(Сп.ТекущийЭлемент());
КонецЦикла;
НачатьТранзакцию(); // на всякий случай для работы в сети немонопольно
Для i=1 По СписокКПеремещению.РазмерСписка() Цикл
Сп.НайтиЭлемент(СписокКПеремещению.ПолучитьЗначение(i));
Сп.Родитель=ВыбРодительКуда; // это группа, куда переносить
Сп.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
"
Верное замечание, действительно, при первом варианте "перепрогонять" приходится обработку. Спасибо.
В данном примере показано, как переносить элементы а мне их надо копировать.... непродскажете как сделать?)))
Готовую обработку попробуй:
http://infostart.ru/projects/590/?;"Копир групп, элементов и подчинённых справочников"
> В данном примере показано, как переносить элементы а мне их надо >копировать.... непродскажете как сделать?)))

Копировать элементы справочника из одной группы в другую - вы хоть понимаете что такое система справочников в системе 1С?
Это касается и другово вашего вопроса по переодическим реквизитам. Лучше обяъсните что вы делаете и что надо сделать на самом деле(какая поставлена перед вами задача)?

Копировать тоже можно, но! Боюсь, что поскольку вы написали, что вы новичок, не стоит вам этого делать. Это отпугнет вас от изучения языка и принципов работы системы. Но мне не жалко, я, в принципе, могу описать основные проблемы, которые возникают при этой задаче.
Если рассматривать задачу в общем виде и пытаться написать универсальный алгоритм для проведения данной операции, то мы должны понимать, что у нас имеется:
1. Набор произвольных реквизитов для отдельно взятого справочника.
2. Реквизиты могут быть не простыми, а периодическими.
3. Значения периодических реквизитов могут быть установлены не только вручную, но и документами.
4. Существует понятие подчиненности справочников. То есть, копируемый элемент может иметь какого то владельца, мало того, в свою очередь может являться владельцем для каких то других элементов. Мало того, и для тех элементов тоже могут иметься и владельцы и подчиненные элементы.

Реализовать задачу с какими то упрощениями можно! Например, значения периодических реквизитов, установленные документами можно записывать в элементе-приемнике как "установленные вручную". Если для вас эта задача просто для обучения - реализуйте ее с еще большими упрощениями. Копируйте только код и наименование. Общий принцип работы вы поймете. Код и наименование ненулевые практически в любом справочнике.
О! я еще забыл про то, что реквизиты могут быть неопределенного типа или объектами известного типа, но неопределенного вида. :) так что это будет в моем повествовании проблем номером 5
Спасибо, всем за помощь!)))
Читают тему
(гостей: 1)

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