|
запрос_рекурсия | ☑ | ||
---|---|---|---|---|
0
devochka_1c
10.12.14
✎
14:22
|
Добрый день!конфигурация 1С. есть справочник партии. у партии есть реквизит исходная партия (ссылка на элемент справочника партии). получается, что партии с партиями связываются в цепочку через этот реквизит. Мне нужно найти самую первую партию во всей этой цепочке. Каким образом это правильно сделать? я так понимаю, что это рекурсия? имеется ли возможность реализовать запросом?
|
|||
1
antoneus
10.12.14
✎
14:26
|
тоже долго думал над таким, потом плюнул и сделал через рекурсию.
|
|||
2
Ненавижу 1С
гуру
10.12.14
✎
14:30
|
можно хранить дополнительный реквизит "начальная партия", который будет рассчитываться ПередЗаписью
но лучше сделать даже не реквизит, а регистр сведений |
|||
3
zulu_mix
10.12.14
✎
14:32
|
если известно количество уровней то можно запросом. если нет то динамически собирать запрос
|
|||
4
Garykom
гуру
10.12.14
✎
14:37
|
(0) у самой первой партии реквизит "исходная партия" пустой - логично?
тогда одним запросом найди все такие партии и потом присоедини в несколько приемов (по числу уровней вложенности) все "подчиненные" партии |
|||
5
Garykom
гуру
10.12.14
✎
14:38
|
(4) т.е. сделай временную таблицу (по сути) где будет список пар "любая партия"-"самая исходная партия"
|
|||
6
Йохохо
10.12.14
✎
14:39
|
(4) + а потом через Имеющие отфильтруй по нужной партии
|
|||
7
devochka_1c
10.12.14
✎
14:42
|
(5), (6) а примерчиком не поделитесь подобного?
|
|||
8
dk
10.12.14
✎
14:45
|
не обязательно рекурсия - просто цикла хватает
Пока Не Партия.Партия.Пустая() Цикл Партия = Партия.ПАртия; конеццикла |
|||
9
Dionis Sergeevich
10.12.14
✎
14:51
|
выбрать ссылка
из справочники.партия где партия = &ПустаяСсылка И ссылка в иерархии(&НашаПартия) |
|||
10
ДенисЧ
10.12.14
✎
14:52
|
(8) to iterate is human to recurse divine
|
|||
11
dk
10.12.14
✎
14:55
|
))
|
|||
12
Dionis Sergeevich
10.12.14
✎
15:19
|
(9)не так немного ))
|
|||
13
Classic
10.12.14
✎
15:27
|
(0)
Они хоть не циклятся? |
|||
14
devochka_1c
10.12.14
✎
15:57
|
(13) вероятность не исключена
|
|||
15
Dionis Sergeevich
10.12.14
✎
16:04
|
(14) Тогда такой запрос не выполнится ни когда
|
|||
16
GANR
10.12.14
✎
16:04
|
(0) если не известно пиковое количество звеньев в цепочке - то нельзя
|
|||
17
GANR
10.12.14
✎
16:06
|
+(16) в смысле запросом нельзя - циклом в коде можно
|
|||
18
Fragster
гуру
10.12.14
✎
16:07
|
вместо реквизита сделать табличную часть и заполнять призаписи
|
|||
19
Фокусник
10.12.14
✎
16:08
|
(2)+1
(0) лучше один раз "напрячь базу" на запись нужной информации и потом многократно "быстр и легко" её получать, чем при каждом чтении "напрягать базу" на поиск нужной информации ;) |
|||
20
Йохохо
10.12.14
✎
16:09
|
(14) как в отношении родитель-потомок может возникнуть цикл?
|
|||
21
Бубка Гоп
10.12.14
✎
16:16
|
(20) Партия получилась из самой себя. Прям размножение почкованием.
|
|||
22
DexterMorgan
10.12.14
✎
16:54
|
(19) философский вопрос что лучше)
|
|||
23
Лефмихалыч
10.12.14
✎
17:17
|
(18) или nested set. Один фиг - при записи колдовать...
|
|||
24
Ненавижу 1С
гуру
11.12.14
✎
00:09
|
(18) лучше РС всё так
|
|||
25
ifso
11.12.14
✎
00:21
|
(22) тут философия нервно курит над вводом остатков без возможности указать первичную партию, не ?
|
|||
26
exwill
11.12.14
✎
04:24
|
(0) У разработчиков 1С под рукой оказалась старая книга по SQL. Хочешь рекурсию запросом - пиши прямой с конструкцией WITH.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |