Внутренняя ошибка - нет родителя

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Внутренняя ошибка - нет родителя

Сообщение RAJAH »

Здравствуйте.
Заметил, что такая ошибка возникает при открытии ещё одного цикла .{table внутри первого, когда второй цикл открывается после закрытия подцикла .{by ... .} из первого.

Код: Выделить всё

.{table 'aaa' by <aaa.f1>...
...
.{by <aaa.f2>...
...
.}
.{table 'bbb' by <bbb.f3>...
...
.}
.}
Нет каких-нибудь лаконичных способов победить это?
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Внутренняя ошибка - нет родителя

Сообщение RAJAH »

Что, никто не встречался с подобным?
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Внутренняя ошибка - нет родителя

Сообщение Semi-bit »

Опишите, пожалуйста, каким образом связаны таблицы, что сейчас выводится, и что вы хотите получить в результате.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Внутренняя ошибка - нет родителя

Сообщение RAJAH »

Ничего не выводится - падает по рантайму.
Во внутреннем цикле считаю сумму, потому и закрываю до открытия следующего .{table.
Хочу получить работоспособный отчёт.
View могу привести, если не боитесь простыни.

Код: Выделить всё

.create view otp as	
select material.*, katmc.*, katpodr.*, sklad.*, spsopr.*, katotped.koef, otped.koef, spobjacc.*, spmnpl.nrec, kated.abbr, katsopr.*, spob.kolcpos, valspmnp.*, attrval.vstring	
from katsopr, spsopr, objacct, spobjacc, spmnpl, katmc, katmc material, katpodr, katpodr sklad, pick, pick pick2, kated, katotped, katotped otped, spobjacc spob, valspmnp, attrval	
where	
((	
begper             <<= katsopr.dopr and	
endper             >>= katsopr.dopr and	
501                 == katsopr.vidsopr and	
katsopr.nrec       /== spsopr.csopr and	
katsopr.nrec       /== objacct.cowner and	
45                  == spobjacc.typeobj and	
objacct.nrec       /== spobjacc.cobjacct and	
spsopr.nrec        /== spobjacc.cobject and	
spobjacc.cspobjacc /== spob.nrec and	
spobjacc.cpos      /== spmnpl.nrec and	
spmnpl.cspmnplan    == attrval.crec and	
10000000000D0h      == attrval.cattrnam and	
11038               == attrval.wtable and	
spmnpl.nrec        /== valspmnp.cspmnpl and	
spmnpl.cizd        /== katmc.nrec and	
spsopr.cmcusl      /== material.nrec and	
material.ced       /== kated.nrec and	
spsopr.cotped       == katotped.nrec and	
spobjacc.cotped     == otped.nrec and	
katsopr.cpodrfrom  /== sklad.nrec and	
katsopr.cpodrto    /== katpodr.nrec and	
784                 == pick.wlist and	
katpodr.nrec       /== pick.crec and	
sklad.nrec         /== pick2.crec and	
11                  == pick2.wlist	
)) 	
order by katmc.name+spmnpl.nrec+katmc.nrec+sklad.name+material.name+material.nrec, katsopr.nrec, spmnpl.nrec;	
А вот обращения к нему:

Код: Выделить всё

.{table 'otp' by otp.spmnpl.nrec
.{by otp.katmc.nrec
...
.{by otp.sklad.name
...
.{by otp.material.nrec
.{by otp.katsopr.nrec
... // здесь идёт суммирование
.}
.{table 'findzamK' by findzamK.katmc.nrec
...
.{by findzamK.histzam.nrec
.}
^ // здесь вывод
.}
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Внутренняя ошибка - нет родителя

Сообщение Semi-bit »

Ну, на первый взгляд, здесь проблема именно в том, что я изначально и подозревал - отсутствуют некоторые индексы.

Могу посоветовать пока переписать вьюху с их использованием, и создать временные таблицы для *.name+*.nrec, ибо в Галактике >95% таблиц не связывают нреки с именами. Можно для начала убрать первое условие ордер бай - уж больно оно сложное. Возможно, в 8 такое условие не проблема, но уж слишком симптомы похожи на поведение 7 в таких случаях.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Внутренняя ошибка - нет родителя

Сообщение RAJAH »

order by spmnpl.nrec, katmc.nrec, sklad.name, material.name, material.nrec, katsopr.nrec, spmnpl.nrec;
тоже не спасает...
8.1 у нас.
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Внутренняя ошибка - нет родителя

Сообщение Semi-bit »

А если оставить только сортировку по нрекам? Имхо, для галактики нет разницы, будет ли написано

Код: Выделить всё

order by spmnpl.nrec, katmc.nrec, sklad.name, material.name
или же

Код: Выделить всё

order by spmnpl.nrec+katmc.nrec+sklad.name+material.name
Я предлагал использовать индексы, то есть

Код: Выделить всё

select ... from SpMnPl (SpMnPl01), Sklad (SkladNN)
где NN - номер индекса, 1-й индекс практически всегда делается по нреку.
По имени индексы обычно делаются в связке с каким-либо типом документа. Вип при компиляции форм индекс не всегда проверяет, а при формировании документа поиск несуществующего индекса вызывает рантайм-ошибку. Отсюда и растут корни падения основного приложения.

Да, и ещё жёсткие подцепки лучше убрать. Вместо них надо ставить пропуски итераций по условию IsValidAll(tnSpSomeTable).
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Внутренняя ошибка - нет родителя

Сообщение RAJAH »

Код: Выделить всё

...
from katsopr, spsopr, objacct, spobjacc, spmnpl(spmnpl01), katmc(katmc01), katmc material(katmc01), katpodr, katpodr sklad(katpodr01), pick, pick pick2, kated, katotped, katotped otped, spobjacc spob, valspmnp, attrval
...
order bord by spmnpl.nrec, katmc.nrec, sklad.nrec, material.nrec, katsopr.nrec;
Итог тот же.
Про жёсткие подцепки не понял: они, вообще-то, мне нужны для отсекания лишних записей.
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Внутренняя ошибка - нет родителя

Сообщение Semi-bit »

:? У меня варианты кончились. Разве что ордер бай убрать. Надеюсь, заставить отчёт так работать не вопрос жизни и смерти :)
Потом как-нибудь сам проверю, если будет время.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Ответить