Обращение к группе номенклатуры внешнего уровня.

1. Alexponenta 24.08.21 08:14 Сейчас в теме
Имеется справочник Номенклатура в нем имеется группа А, в ней имеется еще ряд групп.
Пишу условие, что если внешняя группа равна группе А, то выполняется один ряд действий, иначе другой ряд действий:

Если <<ГруппаА>> Тогда
<<Алгоритм1>> Иначе
<<Алгоритм2>>

Точнее даже так: если карточка номенклатуры находится в группе которая принадлежит группе А.

Группа А
Группа 1
КарточкаНоменклатуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 24.08.21 08:34 Сейчас в теме
(1) вопрос то в чем?
Если узнать, какой группе принадлежит элемент справочника Номенклатура, то можно через свойство Родитель.
Соответственно вышестоящая группа получается как:
ЭлементСпр.Родитель.Родитель
3. retr0 24.08.21 08:48 Сейчас в теме
(2) А потом че? Родитель.Родитель.Родитель.Родитель? У ссылки есть метод ПринадлежитЭлементу(СсылкаНаРодителя)
4. spacecraft 24.08.21 08:55 Сейчас в теме
(3) так я и спросил: "вопрос то в чем?"
"Если узнать, какой группе принадлежит элемент справочника Номенклатура, то можно через свойство Родитель."
"У ссылки есть метод ПринадлежитЭлементу(СсылкаНаРодителя)"
Это разные ответы на разные вопросы.
6. retr0 24.08.21 09:27 Сейчас в теме
(4) Нет, это ответ на один и тот же вопрос. Свойство родитель не дает ответа на принадлежность элемента к группе. Ты можешь сидеть и до посинения вызывать свойство элемента Родитель. И выстраивать цепочку "Элемент.Родитель.Родитель.Родитель...", если у тебя не большая иерархия.
7. spacecraft 24.08.21 09:33 Сейчас в теме
(6)
Свойство родитель не дает ответа на принадлежность элемента к группе

зачем подменять понятия?
Еще раз: Свойство Родитель дает ответ, какой группе принадлежит элемент справочника.
А ПринадлежитЭлементу(СсылкаНаРодителя) не дает ответ на этот вопрос. Он дает ответ на противоположный вопрос, принадлежит ли этой группе данный элемент справочника.
8. retr0 24.08.21 09:46 Сейчас в теме
(7) Дядя ты пьяный что ли? Родитель = Группа. Метод ПринадлежитЭлементу() и есть твое дурное "Элемент.Родитель.Родитель". Я тебе повторю еще раз, вызов метода дает четко понять Да или Нет. А твое Элемент.Родитель - НЕТ. Потому что вложений может быть 100500. Допустим требуется определить принадлежность элемента к группе находящейся на 100500 уровней выше. И че ты будешь в цикле/рекурсивно писать Элемент.Родитель = ГруппаА? Я не подменял понятия, а сказал лишь, что не даст ответа нужного. И добавлю, ты можешь получить ответ таким способом если у тебя иерархия 2-3 уровня. Тогда да норм. Почитай СП, прежде чем сидеть и доказывать мне обратное.
9. spacecraft 24.08.21 09:49 Сейчас в теме
(8) хамить не надо. Еще раз прочитайте мои сообщения.
11. FatPanzer 24.08.21 10:02 Сейчас в теме
(8) Читай автора. Он сам перепутал понятия. В его вопросе две составляющие: 1. Узнать непосредственную группу элемента справочника 2) Определить, входит ли эта группа в иерархию другой определенной группы.
То, что автор в обоих случаях употребляет слово "принадлежит" - это его косяк, конечно.Вот вокруг этого все и сцепились.
А ответ просто;
Если КарточкаНоменклатуры.Родитель.ПринадлежитЭлементу(КакаяТоГруппаА) Тогда
10. FatPanzer 24.08.21 09:49 Сейчас в теме
(7) Ну можно перефразировать. ПринадлежитЭлементу() можно сравнить с семьёй (вплоть до восьмого колена с прапрапрадедами). А Родитель - это и есть родитель.
И да, тогда получаются разные вопросы:
1) Данный чувак является прямым потомком прапрадеда Иванова Сергея Петровича? (Ответ - да)
2) Кто папа этого чувака? (Ответ - Иванов Игорь Юрьевич)
12. retr0 24.08.21 10:08 Сейчас в теме
(11)
имеется группа А
- У него есть конкретная группа, ссылку на которую он может получить, хз поиском по коду к примеру. Дальше он пытается определить принадлежность элемента к группе. Что здесь еще внимательней нужно было изучить? Есть группа есть какие-то элементы которые нужно проверить и выполнить какие-то действие в зависимости от Да или Нет. Все просто как 3 копейки.
5. Ivanov_OM 38 24.08.21 09:14 Сейчас в теме
Где-то так:
Если КарточкаНоменклатуры.ПринадлежитЭлементу(ГруппаА) Тогда
    Процедура1()
ИначеЕсли КарточкаНоменклатуры.ПринадлежитЭлементу(ГруппаВ) Тогда
    Процедура2()
Иначе
    Процедура3()
КонецЕсли;

Неважно на каком уровне будет Карточка номенклатуры, все рабно метод отработает.
То же самое касается и нижних групп
13. retr0 24.08.21 10:11 Сейчас в теме
(11) Здесь дальнейший дискус не имеет никого основания, ответ был дан челиком с номером (5).
15. Alexponenta 24.08.21 14:24 Сейчас в теме
(5)

Т.е. даже при той структуре которую я описал - это будет работать?
16. FatPanzer 24.08.21 14:39 Сейчас в теме
17. Alexponenta 24.08.21 14:42 Сейчас в теме
(16) Вот сейчас пытаюсь. Единственное наверно НайтиПоНаименованию(ГруппаА) - колхоз наверно будет.
18. Alexponenta 24.08.21 15:01 Сейчас в теме
(16)

Если НЕ ЭтотОбъект.Родитель.ПринадлежитЭлементу(Справочники.Номенклатура.НайтиПоНаименованию("Кровати")) Тогда
ЭлементыФормы.КоманднаяПанельХарактеристики.Кнопки.ДобавитьХарактеристикуКровати.Доступность = Ложь;
КонецЕсли;


Вполне работает
19. Alexponenta 24.08.21 15:02 Сейчас в теме
(18)

Правда не факт что так правильно
20. FatPanzer 24.08.21 15:08 Сейчас в теме
(19) Технически правильно. Логически ужасно.
21. Alexponenta 24.08.21 15:26 Сейчас в теме
(20)

Ну я не специалист в данном вопрос - всего лишь осваиваю код.

Да и уже столкнулся с проблемой что если группа пустая - ошибка.
22. Ivanov_OM 38 24.08.21 16:56 Сейчас в теме
(15) Да будет, только на Сервере
23. Alexponenta 24.08.21 17:04 Сейчас в теме
(22) Еще вопрос: как адекватно [КарточкаНоменклатуры.ПринадлежитЭлементу(ГруппаА)] тут организовать, что ищем мы именно по группе А. НайтиПоНаименованию - крайне колхозно.
14. Alexponenta 24.08.21 12:38 Сейчас в теме
просто в запросе есть в иерархии... но хотелось бы что то аналогичное но без запроса
24. Alexponenta 25.08.21 10:55 Сейчас в теме
ГДЕ
Номенклатура.Родитель В ИЕРАРХИИ(&Кровати)
И НЕ ЭтоГруппа
И НЕ ПометкаУдаления

Вот так это работает в запросе.

А мне нужно именно без запроса.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот