Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 09:24

Обработка Справочника

Автор cannabis_86, 18 янв 2011, 09:24

0 Пользователей и 1 гость просматривают эту тему.

cannabis_86

1с 7.7 ТиС 9.2
Здравствуйте, уважаемые форумчане. Мне необходимо перебрать все элементы справочника которые находятся в группе "Газеты".
Написал такую вещь:
   СпрНом = СоздатьОбъект("Справочник.Номенклатура");
   СпрНом.ВыбратьЭлементы();
   Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
        Если СпрНом.ПринадлежитГруппе("Газеты") = 0 ТОгда
         Сообщить(СпрНом.Наименование);
      КонецЕсли;   
   КонецЦикла;

Но проблема у меня в том, что в группе Газеты встречаются и другие группы, в которых есть номенклатура. А я как понимаю у той номенклатуры Родителем не является группа Газеты. Хотя мне их тоже нужно перебрать. И как мне сделать обработку в этом случае?   

prog1c7.7

СпрНом.ВыбратьЭлементы(0);

cannabis_86

Что-то я не допонял. Что это мне даст? Или мне нужно выбрать данную группу, а потом сделать СпрНом,ВЫбратьЭлементы(0); ??

prog1c7.7

нет
но и так должно работать, т.к. принадлежитгруппе  вытаскивает все элементы независимо от уровня вниз по группе

prog1c7.7

//и еще, наверно не
Если СпрНом.ПринадлежитГруппе("Газеты") = 0
//а
Если СпрНом.ПринадлежитГруппе("Газеты") = 1
//так ведь?

prog1c7.7


cannabis_86

При принадлежности к группе функция Принадлежит группе возвращать должно 1? Просто что-то у меня не получается. Когда ставлю 1, то он мне не выдает результат. Мб я не правильно указываю параметр в функции?("Газеты")

cannabis_86

Как правильно передать группу в функцию. Я попробовал это сделать, при возможности выбора из справочника, то тогда работает.(Имеется виду переменная, ссылка на элемент справочника)

cannabis_86

Все я разобрался. Нужно сделать так?
   СпрНом = СоздатьОбъект("Справочник.Номенклатура");
   СпрНом.НайтиПоНаименованию("Газеты", 0); 
   Если СпрНом.Выбран() > 0 Тогда
      Газеты = СпрНом.ТекущийЭлемент();
   КонецЕсли;
   
   СпрНом.ВыбратьЭлементы(0);
   Пока СпрНом.ПолучитьЭлемент() = 1 Цикл     
      Если СпрНом.ПринадлежитГруппе(Газеты) = 1 Тогда
         Сообщить(СпрНом.Наименование);
      КонецЕсли;
   КонецЦикла;

prog1c7.7

//Правильно, только
//проверку на группу сделай
Если СпрНом.Выбран() > 0 Тогда
  Если СпрНом.ТекущийЭлемент().ЭтоГруппа = 1 тогда
      Газеты = СпрНом.ТекущийЭлемент();
  КонецЕсли;
КонецЕсли;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск