Имя: Пароль:
1C
 
v8: Как указать уровень элемента справочника в запросе
0 Grand
 
07.11.06
12:25
Вот есть в языке возможность узнать уровень в справочнике, например, СпрНоменклатура.Уровень().

Подскажите пожалуйста, как можно этоже сделать в запросе, чтобы была:
_____________________________
Номенклатура   |    Уровень  |
-----------------------------
              |             |
1 megalodon
 
07.11.06
12:27
ну если известен реально максимальный уровень - тогда да.
2 Grand
 
07.11.06
12:35
Как?
3 zbv
 
07.11.06
12:37
(2) Непонял что надо то? поподробнее
4 VasilyKushnir
 
07.11.06
12:37
А зачем в запросе? При выводе на печать из запроса имеешь ссылку на элемент номенклатуры, к примеру, Товар, тогда Товар.Уровень(). Или, что мне больше по душе, Товар.ПолноеНаименование() - выдаст всю цыпочку подчиненности для выбраного элемента.
5 Grand
 
07.11.06
12:38
У меня есть такая реализация, но она мне не очень нравится
-------------------------------------------------------------
ВЫБОР
 КОГДА Номенклатура = &ПустаяНоменклатура
   ТОГДА 1
 КОГДА Номенклатура.Родитель = &ПустаяНоменклатура
   ТОГДА 2
 КОГДА Номенклатура.Родитель.Родитель = &ПустаяНоменклатура
   ТОГДА 3
 КОГДА Номенклатура.Родитель.Родитель.Родитель = &ПустаяНоменклатура
   ТОГДА 4
 КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель = &ПустаяНоменклатура
   ТОГДА 5
 ИНАЧЕ 6
КОНЕЦ КАК УровеньНоменклатуры
6 megalodon
 
07.11.06
12:39
// ну вот пример для максимум 3 уровня

выбрать
с.ссылка,
выбор
 когда с1.ссылка is null тогда 1
 когда с2.ссылка is null тогда 2
 иначе 3 конец как уровень
из
справочник.статьизатрат как с
левое соединение
справочник.статьизатрат как с1
по с.родитель = с1.ссылка
левое соединение
справочник.статьизатрат как с2
по с1.родитель = с2.ссылка
7 Grand
 
07.11.06
12:40
Потому что в зависимости от уровня там зависит процент
и чем уровень ближе к самой номенклатуре, тот процент и нужно брать
8 Лефмихалыч
 
07.11.06
12:41
(7) добавь реквизит родителям "процент" и не парься
9 Grand
 
07.11.06
12:42
он добавлен
10 Grand
 
07.11.06
12:42
чем уровень ближе к самой номенклатуре, тот процент и нужно брать
11 Grand
 
07.11.06
12:46
ПЕРЕФРАЗИРУЮ: чем группа с установленным процентом ближе к самой номенклатуре, тот процент и нужно брать
12 Scooter
 
07.11.06
12:57
проще создать РС и в него записывать процент
или воспользоваться свойствами номенклатуры
13 Grand
 
07.11.06
13:01
И как РС будет устроен? или что в свойствах хранить?
14 Scooter
 
07.11.06
13:02
(13) Номенклатура/процент
15 Grand
 
07.11.06
13:03
Элемент номенклатуры?
16 Scooter
 
07.11.06
13:04
(15)да
17 Grand
 
07.11.06
13:04
А если менеджер хочет установить процент на группу, а в группе их 500? Что делать?
18 Scooter
 
07.11.06
13:11
(17)или обработкой или документом
у меня была такая ситуация, пришел к выводу что (12) проще
могу ошибаться, поапай, поспрашивай мнение
19 megalodon
 
07.11.06
13:12
(17) тут приходится выбирать между удобством ввода и удобством хранения информации. можно хранить коэффициент на группу - но придется отказаться от получения его запросом, а можно при установке коэффициента на группу программно устанавливать его на все подчиненные элементы, отрабатывать перенос элемента/группы в другую группу и так далее. выбирать естественно тебе.
20 Grand
 
07.11.06
13:16
Понятно.
21 Grand
 
07.11.06
13:16
Это я и так знал.
22 t_vladimir
 
07.11.06
13:28
Добавить в справочник реквизит Уровень и записывать его при записи элемента.
Других вариантов я в свое время не нашел.
1С не хранит в БД уровни элементов справочника, поэтому и запросом их не выдает.
Иерархия в 1С организуется только хранением Родителя.