Имя: Пароль:
1C
1С v8
Как получить значение по иерархии?
,
0 Boudybuilder
 
16.02.13
01:54
Уже второй раз сталкиваюсь с проблемой.
Первый раз , когда делал вознаграждения на номенклатуру. Присваивал группе значение , внутри группы какой то группе исключительное значение , и надо было чтобы ...  в общем описываю...

Группа "телевизоры" - вознаграждение 5 %
       - ВВК -""
       - LG  -""
       - Sony-"5,5" %

Объясняю. По группе телевизоры стоит 5 процентов вознаграждения за все элементы в группе , а телеки Sony вознаграждаются уже дороже. И по них запросом надо получать их процент а не общий.

Теперь решаю дело с гарантией.

Мобильные телефоны - гарантия 12 месяцев
         - Сертифицырованые   -""
         - НеСертефицированые -"3" месяца
         - Б/У                -"2" дня


Снова таки , надо запросом получать по всем сертифицированным 12 месяцев , по НеСертефицированые  только 3... И тд... Как то так чтобы не пересекались 3 с 12 ...  Как получать самую ближайшую иерархию элемента?
1 MadHead
 
16.02.13
02:02
вообще проблема в проектировании. Надо в таких случаях каждому элементу присваивать значения.
2 Boudybuilder
 
16.02.13
02:16
(1)Спасибо дружище за ответ , но это очень трудоемкое дело таким способом присваивать. Разве что... При создании нового элемента справочника проверять это значение у родителя и заполнять себе же. Но как оно на практике покажет себя?
3 Тролль главный
 
16.02.13
02:20
простой запрос, который выгружается во временную таблицу, потом уже делаем что хотим
4 Boudybuilder
 
16.02.13
03:37
(3) Пример простоты в студию!
5 Web00001
 
16.02.13
03:48
ну например, почему просто нельзя сделать, что то в этом духе?
Выбор Когда Ссылка.Вознагражедение = 0 Тогда
  Ссылка.Родитель.Вознаграждение
Иначе
  Ссылка.Вознагражедение
Конец
6 Web00001
 
16.02.13
04:05
Точнее как то так
Выбор Когда Ссылка.Родитель.Вознагражедение = 0 Тогда
  Ссылка.Родитель.Родитель.Вознаграждение
7 echo77
 
16.02.13
05:54
(0) Проектируйте.
Присваивайте значение каждому элементу.
Реализуйте установку значения для элемента, при записи, если он находится в группе, для которой это значение установлено.
все
8 MadHead
 
16.02.13
13:10
(5) Не лучшая идея в плане производительности. Так как подразумевает запросы в цикле при большой глубине вложенности справочника
9 MadHead
 
16.02.13
13:13
(2) Именно при создании элементу нужно присваивать значение из родителя. Сейчас можешь простенькой обработкой это все проделать и добавить код в справочник при создании элемента. Добавлять вернее в модуль объекта
10 GANR
 
16.02.13
13:54
(0) выборка с итогами по иерархии, да и обойти её просредством рекурсии/стека, других методов просто нету
11 GANR
 
16.02.13
14:00
(11) а если надо не прайс-лист, а конкретный элемент - алгоритмически проще циклом (не скажу, что рациональнее по быстродействию)

ТекЭлемент = НашЭлемент;
Пока Не ЗначениеЗаполнено(ТекЭлемент.Цена) И ЗначениеЗаполнено(ТекЭлемент.Родитель) Цикл
  ТекЭлемент = ТекЭлемент.Родитель;
КонецЦикла;
12 mistеr
 
16.02.13
14:31
В типовых делают циклом (например, счета учета номенклатуры). Видимо не зря.
13 GANR
 
16.02.13
14:45
(12) не зря... иногда нужно пожертвовать производительностью ради алгоритмической простоты
14 France
 
16.02.13
14:48
так, между делом: если кто то, где то, как то перенес товар в неправильную группу??
15 GANR
 
16.02.13
14:51
(14) это как раз просто: даем такую возможность ограниченному  кругу пользователей
16 France
 
16.02.13
15:04
(15) ок, человек из ограниченного круга случайно перепестил в другую группу..
17 GANR
 
16.02.13
15:31
(16) ну и по шеям ему ))) утопиться можно и в ложке
18 Boudybuilder
 
16.02.13
19:23
(14) Уже думал над этим. Тогда может самое мудрое решение будет (2) ?
19 wade25
 
16.02.13
19:26
На нынешней работе классный механизм внедрен. Через свойства товара. К примеру типа товара "Телевизор Sony". Свойство подгруппа автоматически проставляется из соответствующего справочника и т.д. Юзер заполняет только тип товара, все остальное автоматом. Мне оч нравится)
20 Boudybuilder
 
16.02.13
19:29
(19) Можете подробнее описать. Интересно было бы посмотреть , и скрины где то выложить .
21 AlexSvt
 
16.02.13
19:32
получается, что если товар перенесли в другую группу то у него изменилась и гарантия и % вознаграждения? Как-то совсем нехорошо получается.
22 mih_io
 
16.02.13
20:46
сделай условие в запросе на 2 уровня вверх, Можно и больше.

Что то типа
КОГДА
ВЫБОР Ном.Родитель.НашРеквизит = ""
 ТОГДА Ном.Родитель.Родитель.НашРеквизит
 ИНАЧЕ Ном.Родитель.НашРеквизит
КОНЕЦ
23 mih_io
 
16.02.13
20:47
+(22) пардон, слова попутал в запросе местами )