Как из katdoc узнать имя таблицы откуда документ

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

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

Ответить
kdm
Посетитель
Сообщения: 44
Зарегистрирован: 15 дек 2005, 08:38
Откуда: Нижний Тагил

Как из katdoc узнать имя таблицы откуда документ

Сообщение kdm »

Может есть какая-нибудь функция, которая по типу документа из katdoc определяет имя таблицы. Например, Бухгалтерская справка, тип = 10, а из какой таблицы берется не понятно (я знаю что из plpor), но как это явно или не явно выяснить? :-(
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

А что вы хотите сделать?


Если вопрос касается бухгалтерского контура, то там не так уж много таблиц, ссылающихся на KatDoc : BaseDoc, KatSopr, PlPor и проводки Oborot
kdm
Посетитель
Сообщения: 44
Зарегистрирован: 15 дек 2005, 08:38
Откуда: Нижний Тагил

Сообщение kdm »

пишу форму, там такой 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.
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

А зачем делать несколько логических таблиц : можно написать свою функцию в которой воспользоваться case'ом по типам документов.

В интерфейсеOborot именно так это и реализовано (редактирование первичного документа)
kdm
Посетитель
Сообщения: 44
Зарегистрирован: 15 дек 2005, 08:38
Откуда: Нижний Тагил

Сообщение kdm »

Теоретически понятно. А практически как это сделать?
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

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.
kdm
Посетитель
Сообщения: 44
Зарегистрирован: 15 дек 2005, 08:38
Откуда: Нижний Тагил

Сообщение kdm »

Спасибо. Буду эксперементировать. :-)
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

я вообще тупо цеплял к oborot.csoprdoc сразу несколько таблиц, и уже далее, в программе анализирую что надо - выбирал нужную.
....
and oborot.csoprdoc == katsopr.nrec
and oborot.csoprdoc == plpor.nrec
и т.д.
....
Ответить