Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как переместить элемент справочника из одной группы в другую?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Po4emu4ka
Всем, добрый день! Не знаю как в иерархическом справочнике изменить пренадлежность элемента одной группы этого же справочника к другой. То есть, если вручную найти нужный элемент, открыть его форму и в ней в поле ввода с возможностью выбора, которое ссылается на этот же справочник (Данные:Родитель и ТипЗначения:СправочникСсылка.ОсновныеСредства) указать другую группу, то этот элемент без проблем перемещается в указанную группу. А как это сделать программно подскажите, пожалуйста?!
P.S. Вот мои не удачные попытки сделать это sad.gif

...
ИнвНомер="030026"; //Элемент, у которого надо изменить группу с Кода:13 и Наименования:"13 Сооружения" на
                               // Код:20 и Наименование:"20 Передаточные устройства";
СпрОС=Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомер).ПолучитьОбъект();
СпрОС.Родитель="20 Передаточные устройства";
СпрОС.Записать();
...


В итоге, элемент не принадлежит теперь ни одной из имеющихся групп
Vofka
...
ИнвНомер="030026";
ИнвНомерРодителя = "12345";
СпрОС=Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомер).ПолучитьОбъект();
СпрРодитель = Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомерРодителя).ПолучитьОбъект();
СпрОС.Родитель=СпрРодитель;
СпрОС.Записать();
...
awp
Я бы руками переместил если только один элемент и шпилил бы дальше в WOW
kNives
Цитата(Vofka @ 23.07.10, 12:49) необходимо зарегистрироваться для просмотра ссылки
...
ИнвНомер="030026";
ИнвНомерРодителя = "12345";
СпрОС=Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомер).ПолучитьОбъект();
СпрРодитель = Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомерРодителя).ПолучитьОбъект();
СпрОС.Родитель=СпрРодитель;
СпрОС.Записать();
...


Этот код не делает то, что нужно, справочник остаётся без родителя. тестировалось в 1С 8.1. Было бы замечательно всё-таки найти решение, вроде бы элементарная задача, а решения в Сети нет. А нужно очень.
Если не использовать метод ПолучитьОбъект(), выдаётся ошибка "Поле объекта недоступно для записи (Родитель)".

2awp
WOW это, конечно, замечательно, но один элемент - это утопический случай )
Batchir
Во всех стандартных конфигурациях (я так думаю) есть универсальная обработка справочников и документов.
Там можно установить по разным условиям отбор по необходимым вам элементам.
С полученным списком можно выполнять различные действия, в том числе и смену родителя.
kNives
то есть Вы предлагаете в дебаггере отследить, как меняется родитель?
у меня была такая такая мысль относительно элемента справочника, а не групповой обработки (отследить выполнение кнопки Переместить в группу), но только я не придумал где точку останова поставить
Batchir
Вообще я предлагал использовать готовый инструмент. А так схема простая
1. Получаете ССЫЛКУ на родителя.
ИнвНомерРодителя = "12345";
СпрРодительССЫЛКА = Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомерРодителя);

2. Получаете ОБЪЕКТ элемента, которому нужно присвоить нового родителя
ИнвНомер="030026";
СпрОСОБЪЕКТ=Справочники.ОсновныеСредства.НайтиПоКоду(ИнвНомер).ПолучитьОбъект();

3. Присваиваете полученному ОБЪЕКТУ элемета новую ССЫЛКУ родителя
СпрОСОБЪЕКТ.Родитель=СпрРодительССЫЛКА;
СпрОСОБЪЕКТ.Записать();
kNives
Batchir, спасибо большое, работает! На счёт ссылки - это, конечно, был пробел)

По поводу готовых инструментов - в некоторых случаях, к сожалению, их использование невозможно, как, например, в случае с конвертацией данных.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.