Имя: Пароль:
1C
1С v8
Можно ли вытащить запросом следующее?
,
0 Alexor
 
28.01.13
15:18
Всем привет.

Есть справочник номенклатура.
У групп и элементов есть реквизит, Статус.

Требуется в запросе вытащить номенклатуру и статус. Причем у номенклатуры если статус не задан, то должно "брать" статус родителя, если у данного родителя не задан, то смотрим вышестоящего.

Вопрос можно ли это запросом вытащить или нет?
1 DrShad
 
28.01.13
15:19
можно
2 samozvanec
 
28.01.13
15:20
(0) Причем у номенклатуры если статус не задан, то должно "брать" статус родителя, если у данного родителя не задан, то смотрим вышестоящего
вот тут сколько пропишешь, столько уровней вверх и просмотрит
3 ThreeTONE
 
28.01.13
15:20
выбор когда номенклатура.статус = "" тогда номенклатура.родитель.статус иначе  номенклатура.статус конец как статус
4 Error pro
 
28.01.13
15:21
(3) А если и у родителя не задан? А иерархия 10 уровней.
5 lEvGl
 
гуру
28.01.13
15:23
(4) сколько уровней, столько и "надписей"
6 Alexor
 
28.01.13
15:23
(1) А скелетом не поделишся?

(2)(3) Такое решение "в тупую" я думал, но хотел более красивое решение.
7 samozvanec
 
28.01.13
15:24
(6) вроде не придумали еще
8 Alexor
 
28.01.13
15:25
(2)(3) Кстати, а запрос не загнется, если я буду анализировать элемент 2-го уровня, а у условии у меня проверка до десятого родитель.родитель....родитель.Статус

да и тормозить такое решение полагаю будет.
9 France
 
28.01.13
15:26
выбрать все элементы в иерархии с группировкой по реквизиту "Статус"...
потом обход по группировкам
10 pumbaEO
 
28.01.13
15:26
(6) красивое решение
1. сначала посчитать макс. количество уровней , а потом динамически собрать текст запроса.
2. Подписка для номенклатуры: Перед записью и заполняй сразу статус, если не заполненно.
11 Alexor
 
28.01.13
15:27
(10) 2-ой вариант, тоже рассматривался, но пока не комфортен. Номенклатура может перемещаться из группы в группу, иметь или не иметь свой статус.
12 Chin
 
28.01.13
15:29
(0) А не проще вопрос со статусами решить при записи номенклатуры? Зачем мучить себе мозг... Ну конечно если интересно, то пожалуйста, а так:
а) тратишь зря время
б) не знаю для чего тебе такой запрос, но если у тебя справочик номенклатуры огромный, то работать он может занудно долго. По возможности такие вопросы лучше решать на этапе создание объетов.
13 Chin
 
28.01.13
15:31
(11) При перемещении из группы в группу так же записывается элемент, так как у него меняется родитель...
14 К_Дач
 
28.01.13
15:37
Рекурсию не предлагать?
15 c00Lo
 
28.01.13
15:40
красивей рекурсии нет решения
16 France
 
28.01.13
15:40
рекурсию запросом??
17 Chin
 
28.01.13
15:42
(14) Рекурсию как раз лучше использовать при записи номенклатуры, для поиска родителя с непустым статусом.
Я бы на месте автора сделал бы так:
1. создал реквизит номенклатуры ("НаследуемыйСтатус" - булево)
2. перед записью, если стутус явно не указан, искал бы родительский статус и устанавливал признак "НаследуемыйСтатус". При перемещении из одной группы в другую, если статус заполнен, а флаг "наследуемый статус" не установлен, статус не менять. Если флаг установлен, обновлять статус по данным нового родителя...

В итоге с запросом не придется мучиться...
18 samozvanec
 
28.01.13
15:53
(17) хорошее решение
19 France
 
28.01.13
15:55
(0) можешь про статус рассказать?? может, лучшее решение найдут..
20 hhhh
 
28.01.13
15:59
(15) есть красивее. Запретить Статус в группах. Задавать его только в элементах.
21 К_Дач
 
28.01.13
15:59
Можно запросом вытащить всю иерархию в ТЗ вида:

Родитель Элемент Статус

<пусто> Группа1 Статус1
Группа1 Группа2 Статус2
Группа2 Группа3 Статус3
Группа3 Элемент4 Статус4

и потом обрабатывать эту ТЗ снизу вверх в цикле, проверяя заполненность статуса. Весь цимус в том, как всю иерархию вытащить одним запросом, не зная количество уровней заранее....
22 Chin
 
28.01.13
16:28
(20) Если в группе 10000 номенклатур и у них у всех один  итот же статус - смысл изменять у каждого?
23 acsent
 
28.01.13
16:29
только для ограниченного количества родителей
Основная теорема систематики: Новые системы плодят новые проблемы.