
Как из katdoc узнать имя таблицы откуда документ
Модераторы: m0p3e, edward_K, Модераторы
Как из katdoc узнать имя таблицы откуда документ
Может есть какая-нибудь функция, которая по типу документа из katdoc определяет имя таблицы. Например, Бухгалтерская справка, тип = 10, а из какой таблицы берется не понятно (я знаю что из plpor), но как это явно или не явно выяснить? 

пишу форму, там такой view:
.create view dt20 as select * from groupusl,oborot,katsopr, dogovor, katorg
where (('220' == oborot.scheto
and d1 <<= oborot.datob
and d2 >>= oborot.datob
and oborot.kauos[2] == groupusl.nrec
and oborot.csoprdoc == katsopr.nrec
and katsopr.cdogovor == dogovor.nrec
and katsopr.corg == katorg.nrec))
и оказалось, что oborot.csoprdoc не всегда ссылка на katsopr, может на plpor ссылаться, а может еще куда-нибудь. И для каждой т-цы отдельный view писать не хочется. Вот и думаю как это реализавать с помощью oborot.tidk и таблицы katdoc.
.create view dt20 as select * from groupusl,oborot,katsopr, dogovor, katorg
where (('220' == oborot.scheto
and d1 <<= oborot.datob
and d2 >>= oborot.datob
and oborot.kauos[2] == groupusl.nrec
and oborot.csoprdoc == katsopr.nrec
and katsopr.cdogovor == dogovor.nrec
and katsopr.corg == katorg.nrec))
и оказалось, что oborot.csoprdoc не всегда ссылка на katsopr, может на plpor ссылаться, а может еще куда-нибудь. И для каждой т-цы отдельный view писать не хочется. Вот и думаю как это реализавать с помощью oborot.tidk и таблицы katdoc.
-
- Постоянный обитатель
- Сообщения: 143
- Зарегистрирован: 09 авг 2006, 16:40
- Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"
cgDoc_0001 = 1;
....
cgDoc_0017 = 17;
.function GetSoprDoc(Tidk : word; cSopr : comp) : string; // результат в зависимости что вам нужно
begin
GetSoprDoc := '';
case Tidk of
cgDoc_0001..cgDoc_0011, cgDoc_0017, cgDoc_0018, cgDoc_0021, cgDoc_0022,
cgDoc_0027, cgDoc_0030..cgDoc_0033, cgDoc_0037..cgDoc_0039, cgDoc_0044,
cgDoc_1004, cgDoc_1005, cgDoc_1011, cgDoc_1030, cgDoc_1032, cgDoc_1044 : {
if dt20.GetFirst PlPor where((cSopr == PlPor.nRec)) = tsOk then
GetSoprDoc := dt20.PlPor.NODOK;
}
cgDoc_0111,cgDoc_0211 : {
if dt20.GetFirst KatSopr where((cSopr == KatSopr.nRec)) = tsOk then
GetSoprDoc := dt20.KatSopr.NSopr;
}
//....
//и т.д.......
end;
end.
....
cgDoc_0017 = 17;
.function GetSoprDoc(Tidk : word; cSopr : comp) : string; // результат в зависимости что вам нужно
begin
GetSoprDoc := '';
case Tidk of
cgDoc_0001..cgDoc_0011, cgDoc_0017, cgDoc_0018, cgDoc_0021, cgDoc_0022,
cgDoc_0027, cgDoc_0030..cgDoc_0033, cgDoc_0037..cgDoc_0039, cgDoc_0044,
cgDoc_1004, cgDoc_1005, cgDoc_1011, cgDoc_1030, cgDoc_1032, cgDoc_1044 : {
if dt20.GetFirst PlPor where((cSopr == PlPor.nRec)) = tsOk then
GetSoprDoc := dt20.PlPor.NODOK;
}
cgDoc_0111,cgDoc_0211 : {
if dt20.GetFirst KatSopr where((cSopr == KatSopr.nRec)) = tsOk then
GetSoprDoc := dt20.KatSopr.NSopr;
}
//....
//и т.д.......
end;
end.