Имя: Пароль:
1C
1С v8
Таблица иерархии и проверка зацикленности
0 Ненавижу 1С
 
гуру
27.07.11
15:09
1. Нет 100% (7)
2. Да 0% (0)
Всего мнений: 7

Есть таблица с двумя полями: ссылка и родитель. Ссылка в таблице уникальна и всегда заполнена. Родитель - это ссылка непосредственного родителя (он тоже обязательно есть в некоторой записи этой таблицы в поле Ссылка). Если родителя нет, то поля Родитель не заполнено (ммм... в терминах 1С "пустая ссылка") - это корневой элемент.
Требуется написать ОДИН запрос (можно пакетный) на языке запросов 1С, с помощью которого можно проверить нет ли в этой таблице иерархии зацикленности? То есть проверить на валидность данные.

Взлетит?
6 Jstunner
 
27.07.11
15:16
невозможно утверждать о зацикленности не пройдя все точки. Циклов в запросах нет

Нет
7 Ник второй
 
27.07.11
15:16
голос забыл

Нет
9 Fragster
 
гуру
27.07.11
15:17
ыц

Нет
16 Mort
 
27.07.11
15:53
+(15) Почему то не проголосовалось.

Нет
17 Юрий Лазаренко
 
27.07.11
15:54
(0) Сам недавно бодался с подобной ботвой, в итоге остановился на рекурсии.

Нет
19 sikuda
 
27.07.11
16:23
Реляционный подход требует получения данных за ограниченное количество внутренних запросов в системе. Если вы используете рекурсию типа TSQL оператор with, то количесто подзапросов растет как квардат от уровня вложенности. Если количество вложенности до 10, то этот костыль подходит. Но запихнуть его в 1С мне не удалось.
В общем случае создавайте кэш-РегистрСведений Родитель(любого уровня), Ссылка, УровеньВложенности. Записывайте его при любом изменении иерархии. С помощью этой структуры ваш запрос строиться легко.

Нет
49 МихаилМ
 
27.07.11
18:22
--------------------------
можно
только если известно макс колво вложенности уровней


но можно построить более эффективнуюю иерархию :
в cсылке можно закодировать иерархию.
и проверять её при создании элемента.

тогда можно создать эффективный индекс.

Нет