|
Таблица иерархии и проверка зацикленности |
☑ |
0
Ненавижу 1С
гуру
27.07.11
✎
15:09
|
Всего мнений: 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сылке можно закодировать иерархию.
и проверять её при создании элемента.
тогда можно создать эффективный индекс.
Нет |
|