Как перенести элемент справочника из группы в группу программно?
30.03.2006
10:55
#1
"Требуется изменить Родителя элемента справочника, а именно - сделать так, чтобы он не входил ни в какую группу.
Пишу так:
Спр.ВыбратьЭлементы;
Пока Спр.ПолучитьЭлемент()=1 Цикл
ТекЭл=Спр.ТекущийЭлемент();
Если (ТекЭл.ЭтоГруппа()=0) и (ТекЭл.Уровень()>1) Тогда
ТекЭл.Родитель=ПолучитьПустоеЗначение("Справочник.Номенклатура");
КонецЕсли;
КонецЦикла;
Выдает: Объект не может быть перепозиционирован!
Похожий вопрос нашла на форуме, но четкого ответа там нет.
Подскажите, пожалуйста, может я что не так делаю?"
Пишу так:
Спр.ВыбратьЭлементы;
Пока Спр.ПолучитьЭлемент()=1 Цикл
ТекЭл=Спр.ТекущийЭлемент();
Если (ТекЭл.ЭтоГруппа()=0) и (ТекЭл.Уровень()>1) Тогда
ТекЭл.Родитель=ПолучитьПустоеЗначение("Справочник.Номенклатура");
КонецЕсли;
КонецЦикла;
Выдает: Объект не может быть перепозиционирован!
Похожий вопрос нашла на форуме, но четкого ответа там нет.
Подскажите, пожалуйста, может я что не так делаю?"
30.03.2006
12:57
#2
"стоит попробовать так:
Спр.УстановитьАтрибут("Родитель", ПолучитьПустоеЗначение("Справочник.ОсновныеСредства"));
Спр.Записать();
Однако у меня возникают сомнения по поводу такого перебора. Как никак начинается перебор всех элементов в справочнике, и тут же они переносятся. Не уверен что цикл отработает до конца."
Спр.УстановитьАтрибут("Родитель", ПолучитьПустоеЗначение("Справочник.ОсновныеСредства"));
Спр.Записать();
Однако у меня возникают сомнения по поводу такого перебора. Как никак начинается перебор всех элементов в справочнике, и тут же они переносятся. Не уверен что цикл отработает до конца."
30.03.2006
13:41
#3
Переносила элементы справочника из группы в группу (существующую). Группы выбирались в диалоге как ОТКУДА и КУДА.
1. Считываем элементы группы ОТКУДА в таблицу значений.
2. При просмотре полученной таблицы значений в цикле, позиционируемся на совпадающий элем-т справочника,и устанавливаем для него ОС1.Родитель=КУДА (это группа выбранная в диалоге)
Программа работает, текст не могу привести, т.к.получается непонятный шрифт.
1. Считываем элементы группы ОТКУДА в таблицу значений.
2. При просмотре полученной таблицы значений в цикле, позиционируемся на совпадающий элем-т справочника,и устанавливаем для него ОС1.Родитель=КУДА (это группа выбранная в диалоге)
Программа работает, текст не могу привести, т.к.получается непонятный шрифт.
31.03.2006
06:09
#4
если копируете текст из 1С то перед копированием русского текста нужно переключить раскладку клавиатуры на русский, тогда копирует нормально. если будет включён английский то при копировании фигня всякая получается. Глюк программы 1С.
31.03.2006
09:07
#5
"Спасибо за подсказку. Правда, все получается.
Процедура Сформировать()
О1 = СоздатьОбъект("ТаблицаЗначений");
О1.НоваяКолонка("ИнвНомер");
ОС1 = СоздатьОбъект("Справочник.ОсновныеСредства");
ОС1.ИспользоватьДату(Дата("31.12.2004"));
ОС1.ПорядокНаименований();
ОС1.ВыбратьЭлементы();
Пока ОС1.ПолучитьЭлемент()>0 Цикл
Если ОС1.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если ОС1.ПринадлежитГруппе(ВыбГр)=1 Тогда
О1.НоваяСтрока();
О1.ИнвНомер=ОС1.Код;
КонецЕсли;
КонецЦикла;
О1.ВыбратьСтроки();
Пока О1.ПолучитьСтроку()>0 Цикл
// Сообщить(О1.ИнвНомер);
Код=СокрЛП(О1.ИнвНомер);
ОС1.ВыбратьЭлементы();
Пока ОС1.ПолучитьЭлемент()>0 Цикл
Если ОС1.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если ОС1.Код=Код Тогда
ОС1.Родитель=Куда;
ОС1.Записать();
КонецЕсли;
КонецЦикла;
КонецЦикла;
"
Процедура Сформировать()
О1 = СоздатьОбъект("ТаблицаЗначений");
О1.НоваяКолонка("ИнвНомер");
ОС1 = СоздатьОбъект("Справочник.ОсновныеСредства");
ОС1.ИспользоватьДату(Дата("31.12.2004"));
ОС1.ПорядокНаименований();
ОС1.ВыбратьЭлементы();
Пока ОС1.ПолучитьЭлемент()>0 Цикл
Если ОС1.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если ОС1.ПринадлежитГруппе(ВыбГр)=1 Тогда
О1.НоваяСтрока();
О1.ИнвНомер=ОС1.Код;
КонецЕсли;
КонецЦикла;
О1.ВыбратьСтроки();
Пока О1.ПолучитьСтроку()>0 Цикл
// Сообщить(О1.ИнвНомер);
Код=СокрЛП(О1.ИнвНомер);
ОС1.ВыбратьЭлементы();
Пока ОС1.ПолучитьЭлемент()>0 Цикл
Если ОС1.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если ОС1.Код=Код Тогда
ОС1.Родитель=Куда;
ОС1.Записать();
КонецЕсли;
КонецЦикла;
КонецЦикла;
"
Читают тему
(гостей: 1)