Имя: Пароль:
1C
 
Как засунуть элемент справочника в группу ПРОГРАММНО ???
0 Sh_s
 
11.05.04
16:34
Суть: Есть справочник_1, без подчинения, с группамы.
Цель: Добавить в него 2-3 сотни единиц из др. справочника_2,
         причем добавлять в определенные группы справочника_1.
Реализация:      
 Спр1=СоздатьОбъект("Справочник.КодыПоставщики");
 Спр=СоздатьОбъект("Справочник.Номенклатура");
 Пока Запрос.Группировка() = 1 Цикл
     Спр.НайтиЭлемент(Запрос.ТекущийЭлемент);
     Если Запрос.ТекущийЭлемент.ЭтоГруппа()=0 Тогда
         Спр1.Новый();
         Спр1.УстановитьАтрибут("Наименование", Спр.Наименование);
         Спр1.УстановитьАтрибут("Товар", Спр.Наименование);
         Спр1.УстановитьАтрибут("Поставщик", ВыбКонтрагенты);
         Спр1.УстановитьАтрибут("Родитель", Запрос.ТекущийЭлемент);                _________________________________^^^^^^^^^^^^^Тут засада
         Спр1.УстановитьАтрибут("КодПост" , Код_Пост(Спр.Наименование));
         Спр1.Записать();
     КонецЕсли;
 КонецЦикла;

Ошибка: Вываливает сообщение что: "{C:\...\КОЛ-ВО В ГРУППЕ И ГРУППОВОЙ ПОСТАВЩИК.ERT(113)}: Неверный тип справочника".

Вопрос: Как засунуть элемент справочника в группу ПРОГРАММНО ???
1 Gavrila
 
11.05.04
16:43
Я так понимаю, что "Запрос.ТекущийЭлемент" - "Справочник.Номенклатура", а родитель Спр1 - "Справочник.КодыПоставщики", поэтому работать не будет уже из-за этого...
лучше добавь перед
  Спр1.Новый();
строку
  Спр1.ИспользоватьРодителя(какой-то_там_родитель);
, где какой-то_там_родитель - группа справочника "КодыПоставщики" :)
2 Valery
 
11.05.04
16:47
В логике непонятно. Присваиваешь родителю элемент не являющийся группой.
3 AVP
 
11.05.04
16:49
Хорошо заданный вопрос содержит 80% ответа...
4 Sh_s
 
12.05.04
10:38
(1)Спр1.ИспользоватьРодителя(какой-то_там_родитель);

Я такое делал, ошибок не было, но все равно в группу не попадало. Все элементы попадали в корень, а не в указанную группу.
5 SiMаzх
 
12.05.04
10:40
А какой-то_там_родитель - это что было?
6 Рупор абсурда
 
12.05.04
10:44
(5) Не можешь помочь, не лезь!
7 Frol
 
12.05.04
12:30
Вообщето, у тебя всё правильно с кодом. Единственное, строчку Спр1.УстановитьАтрибут("Родитель", Запрос.ТекущийЭлемент);
тебе надо поменять на:
код = Спр1.Код;
Спр1.УстановитьАтрибут("КодПост" , Код_Пост(Спр.Наименование));
Спр1.Записать();
Спр1.НоваяГруппа();
Спр1.Наименование = Запрос.ТекущийЭлемент;
Спр1.Записать();
Группа = Спр1.НайтиПоНаименованию(Запрос.ТекущийЭлемент,0,1);
Спр1.НайтиПоКоду(код,0);
Спр1.УстановитьАтрибут("Родитель",Группа);
Спр1.Записать();
Вот и все дела-то. Ну мож чуток не так, но идея правильная, у меня работало.
8 SnarkHunter
 
12.05.04
12:36
(7) См. (6)
9 Sh_s
 
12.05.04
23:46
Как и ковырял ранее, все срослось, надо перед Новый()
Спр1.ИспользоватьРодителя(какой-то_там_родитель);
как и говорил (1) , что собственно я ранее и делал, но не работало.
Тепер понял что передавал в качестве Родителя строку с его именем, а надо передавать как объект, если слово объект здесь корректно. Ну в общем идея понятна. Все заработало как нуна. Всем спасибо.
P.S. Кто тут темы закрывает ....??????