Имя: Пароль:
1C
1С v8
Элементы номенклатуры старшего родителя 1С
,
0 Gossar1C
 
12.03.13
14:01
Здраствуйте! Подскажите пожалуйста как получить подчиненные элементы старшего родителя?
Пример:
 СтаршаяГруппа
   Группа1
    Группа1.1
      Номенклатура1
      Номенклатура2
   Группа2
    Группа2.2
      Номенклатура1

Дело заключается в том что когда мы изменяем в форме группы поле "Входит в группу" (Тобишь надо занести эту Старшую группу вместе с подчиненными элементами в Группу "не использовать" в это группе хранится номенклатура со статусом невидимка) и поэтому мне надо в старшей группе и подчиненных в ней элементах выбрать номенклатуру и изменить статус на НЕВИДИМКУ и потом уже с чистой душой эта группа переносится в группу "не использовать", вот такое вот извращение)

это мой код но он не правильный =\
&НаКлиенте
Процедура РодительПриИзменении(Элемент)
   ВыполнитьЗапрос(Объект.Наименование);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьЗапрос(Родитель)
   
   Запрос = Новый Запрос;
   Запрос.Текст =
     "ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Родитель = &Родитель";
   Запрос.УстановитьПараметр("Родитель",Родитель);
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() Цикл
   ОбъектНоменклатура = Выборка.Ссылка.ПолучитьОбъект();
   ОбъектНоменклатура.ГруппаДоступа = Справочники.ГруппыДоступаНоменклатуры.НайтиПоНаименованию("Не использовать (невидимка)");
   ОбъектНоменклатура.Записать();
   КонецЦикла;
   
КонецПроцедуры

Не судите строго, я начинающий программист 1С) Запрос неправильно выстроил, так как у старшей группы есть еще и подчиненные группы( но немогу понять как сделать
1 Gossar1C
 
12.03.13
14:02
В Параметр родителя передается Старшая группа
2 Очкарик
 
12.03.13
14:04
В ИЕРАРХИИ
3 Gossar1C
 
12.03.13
14:06
(2) блин забыл как там... ОбходРезультат.ВИерархии?
4 Gossar1C
 
12.03.13
14:07
ща СП покурю)
5 Gossar1C
 
12.03.13
14:08
(2) ааа вроде бы допер) Номенклатура.Родитель В ИЕРАРХИИ &Родитель
6 Gossar1C
 
12.03.13
14:11
или не допер =(
7 Gossar1C
 
12.03.13
14:14
Все норм) Очкарик большое спасибо) Не первый раз выручаешь)
8 Очкарик
 
12.03.13
14:18
(7) Пожалуйста, обращайся если чо :)
9 Gossar1C
 
12.03.13
14:25
(8) кстати у меня запрос полностью неправильный =( в иерархии это да...
Пишу
ВЫБРАТЬ
  Номенклатура.Ссылка  КАК Ссылка
ИЗ
  Справочник.Номенклатура КАК Номенклатура
ГДЕ
  Ссылка В Иерархии (&Родитель)

ничего не ищет...
пробовал пример группы
  СтаршаяГруппа
    Номенклатура1
10 Очкарик
 
12.03.13
14:31
(9) Ссылка В Иерархии (&Родитель) выберет все, что входит в группу Родитель
11 Очкарик
 
12.03.13
14:33
(10) Если тебе надо наоборот, то пиши так

НЕ Контрагенты.Ссылка В ИЕРАРХИИ (&Ссылка)
12 Gossar1C
 
12.03.13
14:38
(11) немного тебя не понял)

СтаршаяГруппа
   ЭлементНоменклатуры

=\ Ссылка по идее на группу... а как на сам элемент получить ссылку?
13 Gossar1C
 
12.03.13
14:46
поподробнее)

&НаКлиенте
Процедура РодительПриИзменении(Элемент)
   ВыполнитьЗапрос(Объект.Ссылка);//Передает ссылку на группу в моем случае "ЛАМПЫ"
КонецПроцедуры

&НаСервере
Процедура ВыполнитьЗапрос(Родитель)
   
   Запрос = Новый Запрос;
   Запрос.Текст =
     "ВЫБРАТЬ
     |    Номенклатура.Ссылка КАК Ссылка //Если я правильно понимаю выбирает элемент справочника, если же нет то выбирает группу...
     |ИЗ
     |    Справочник.Номенклатура КАК Номенклатура
     |ГДЕ
     |    Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)";
   Запрос.УстановитьПараметр("Родитель",Родитель);
   Выборка = Запрос.Выполнить().Выбрать();
//Все бы ничего... но выборка пустая (по отладчику), тоесть ссылка "ошибка чтения значения"
   
   Пока Выборка.Следующий() Цикл// удивительно проходит выборку)в выборке содержится группа...
   ОбъектНоменклатура = Выборка.Ссылка.ПолучитьОбъект();
   ОбъектНоменклатура.ГруппаДоступа = Справочники.ГруппыДоступаНоменклатуры.НайтиПоНаименованию("Не использовать (невидимка)");
   ОбъектНоменклатура.Записать();
   КонецЦикла;
   
КонецПроцедуры
14 Gossar1C
 
12.03.13
14:51
Выборка содержит и номенклатуру и группу эту,
буду делать проверку)
Если Не Выборка.Ссылка.ЭтоГруппа Тогда
 ОбъектНоменклатура = Выборка.Ссылка.ПолучитьОбъект();
КонецЕсли;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан