Как вытянуть nrec зная kotable и код аналитики

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

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

ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Как вытянуть nrec зная kotable и код аналитики

Сообщение ilshat »

Есть kotable[1] и некий цифровой код аналитики. Как вытянуть nrec этой аналитики из нужной таблицы?
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

есть функции

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

If (  GetAnyKAU(Word(0), KodTable[], KodKau[]), GivenAnName(1)), '')

Параметры GivenAnName() :
  cgAnName   = 1; // Наименование КАУ
  cgAnStrKod = 2; // системные String(NRec), ручные SpKau.Code
  cgAnStrKey = 3; // ключ для сортировки в отчетах, определяется по настройкам (StrName+StrKod) (StrKod+StrName)
  cgAnNode   = 4; // строковое представление cNode (вышестоящего элемента)
  cgAnAbbr   = 5; // уникальный строковый ID для использования в формулах (!!!не изменяется!!!)
  cgAnCode   = 6; // код, как правило для сортировки в каталогах; может меняться, может быть неуникальным
  cgAnSort   = 7; // строка для сортировки, но НЕ для группировки
Если 7.12, то необходимо перед вызовом этой функции сделать
InitServKau
а после завершении работы с функцией
DoneServKau
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

а парметры GetAnyKAU можно описание?
что-то у меня не выдергивает ничего :(
может я объяснил не так?
у меня есть например код таблицы KatOrg=1 и значение поля code в ней
вот только по этим параметрам нужно вытащить nrec
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

нет, это я невнимательнно прочитал вопрос :grin:
прошу прощения.


Боюсь ошибится, по-моему никак вы не вытащите nRec, вам не зачто прицепится
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

Я уже вижу как вдали маячит мамонтоподобный CASE :(
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

для закачки небось нужно? не помню есть ли в обмене бизнес документами загрузка проводок.
а так чтобы вам было проще писать :)
останется всего то 100 функций прописать :)
//================================
// системные
//================================
// получить наименование аналитики
Function GetKatKauName(w : word) :string ;
{ GetKatKauName:=if(getfirst fastfirstrow katkau where (( w == katkau.kodgroup ))=0,katkau.name,'???'+string(w))
}
//GetAnaliticNrecByName - получить nrec аналитики по коду и наименованию
Function GetAnaliticNrecByName(wtbl:word ;wname :string ) :comp ;
var wnrec,wnrec1 :comp ;
sKau :string ;
{ GetAnaliticNrecByName:=0 ;
wname:=wname ;
if substr(GetKatKauName(wtbl),1,3)='???' then exit ;
// KauStr2NrecWithGenEx(wtbl, '', wname, wnrec)
wnrec1:=0 ;
sKau:='ZAK' ;
case KatKau.SysNum of
cgKatKau_User: {
if getfirst spkau where (( wtbl == SpKau.KodGrKau and wname == SpKau.name ))<>0
{ insert into spkau set
SpKau.Code := sKau
,SpKau.LevelCode := sKau
,SpKau.Name := wName
,SpKau.KodGrKau := wtbl ;

}
wnrec:=spkau.nrec ;
} //cgKatKau_User: {
cgKatKau_Table: // Системные аналитики
{ case wtbl of
1:wnrec:=GetKatORGNrecByName(wname) ;//│ Организации │
2:wnrec:=GetKatpodrNrecByName(wname) ;// │ Подразделения │
3:wnrec:=GetPersonsNrecByFio(wname) ;// │ Сотрудники предприятия │
4:wnrec:=GetKatMcNrecByName(wname) ;// │ Материальные ценности │
5:wnrec:=GetKatUSLNrecByName(wname) ;// │ Услуги │
6:wnrec:=GetBasedocNrec(0,wname) ;// │ Документы-основания │
7:wnrec:=0 ;// │ Производственные заказы │
8:wnrec:=GetGROUPMCNrecByName(wname,'') ;// │ Группы МЦ │
9:wnrec:=GetGROUPUSLNrecByName(wname) ;// │ Группы услуг │
10:wnrec:=GetKatpartyNrec(0,wname) ;// │ Партии МЦ │
11:wnrec:=0 ;// │ Группы партий МЦ │
12:wnrec:=FindGroupSch('',wname) ;// │ Группы ДО/Договоров │
13:wnrec:=0 ;// │ Статьи расходов/доходов │
14:wnrec:=GetDogovorNrec(0,wname) ;// │ Договоры │
15:wnrec:=GetKatosNrecByName(15,wname) ;// │ Основные средства │
16:wnrec:=GetKatosNrecByName(16,wname) ; ;// │ Нематериальные активы │
17:wnrec:=GetVEKSLNrecByNODOC(81,wname) ;// │ Векселя и ценные бумаги │
18:{ wnrec:=0 ;// │ Виды основных средств │
GetNormOS(wnrec,wnrec1,0,wname,wname,15) // код
}
19: {wnrec:=0 ;// │ Виды нематериальных активов │
GetNormOS(wnrec,wnrec1,0,wname,wname,16) // код
}
20:wnrec:=0 ;// │ Статьи планов (бюджетов) │
21:wnrec:=0 ;// │ Периоды планирования │
22:wnrec:=GetFPCONrecByName(wname) ;// │ Центры ответственности │
23:wnrec:=0 ;// │ Оборудование │
24:wnrec:=0 ;// │ Маршрутные карты │
25:wnrec:=0 ;// │ Производственные спецификации │
26:wnrec:=0 ;// │ Заявки │
27:wnrec:=0 ;// │ Графики │
28:wnrec:=0 ;// │ Планы производства │
29:wnrec:=0 ;// │ Планы снабжения │
30:wnrec:=0 ;// │ Планы сбыта │
34:wnrec:=0 ;// │ Источники финансирования │
35:wnrec:=0 ;// │ Технологические операции │
36:wnrec:=GetCatalNrec1(wname,-22,'') ;// │ Профессии │
37:wnrec:=0 ;// │ Потребности в материалах │
38:wnrec:=0 ;// │ Потребности в трудовых ресурса │
39:wnrec:=0 ;// │ Потребности в производственных │
40:wnrec:=GetKatStroyNrecByName(wname) ;// │ Объекты строительства │
41:wnrec:=0 ;// │ Конструкторские спецификации │
42:wnrec:=0 ;// │ Виды ремонта │
43:wnrec:=0 ;// │ Коды причин постановки на учет │
44:wnrec:=0 ;// │ Бюджеты расчетов с ГНИ │
45:wnrec:=0 ;// │ Типы платежей-начислений │
46:wnrec:=0 ;// │ Наборы МЦ │
47:wnrec:=0 ;// │ Группы оборудования │
48:wnrec:=0 ;// │ Виды работ │
49:wnrec:=0 ;// │ Корпоративные потребности │
50:wnrec:=0 ;// │ Корпоративные планы поставок │
51:wnrec:=0 ;// │ Корпоративные планы производст │
52:wnrec:=0 ;// │ Балансы движения продукции │
53:wnrec:=0 ;// │ Варианты планирования │
54:wnrec:=0 ;// │ Амортизационные группы │
55:wnrec:=0 ;// │ Платежные средства │
56:wnrec:=FindISPOS('',wname,15) ;// │ Признаки использования ОС │
57:wnrec:=FindISPOS('',wname,16) ;// │ Признаки использования НМА │
58:wnrec:=FindGrOs('',wname) ;// │ Группы ОС │
59:wnrec:=GetKatNaznaNrec(wname) ;// │ Назначения сопроводительных до │
60:wnrec:=GetKatMolNrecByName(wname) ;// │ Материально-ответственные лица │
61:wnrec:=0 ;// │ Позиции маршрутных карт │
62:wnrec:=0 ;// │ Позиции производственных специ │
63:wnrec:=0 ;// │ Позиции конструкторских специф │
64:wnrec:=0 ;// │ Типы строительства │
65:wnrec:=0 ;// │ Виды строительства │
66:wnrec:=0 ;// │ Отрасли строительства │
67:wnrec:=FindKatVid(wname,0) ;// │ Виды договоров/соглашений │
68:wnrec:=GetKATORGDESCRNrecByName(wname) ;// │ Группы организаций │
69:wnrec:=0 ;// │ Категории │
70:wnrec:=0 ;// │ Бригады │
71:wnrec:=GetVEKSLNrecByNODOC(85,wname) ;// │ Кредиты │
72:wnrec:=0 ;// │ Административно-территориально │
73:wnrec:=0 ;// │ Статьи затрат объектов строите │
74:wnrec:=0 ;// │ Классы объектов строительства │
76:wnrec:=0 ;// │ Группы объектов ремонтов │
77:wnrec:=0 ;// │ Типы объектов ремонтов │
78:wnrec:=0 ;// │ Виды объектов ремонтов │
79:wnrec:=GetSchFactNrecByNum(0,wname) ;// │ Счета-фактуры │
80:wnrec:=GetKatsoprNrec(0,wname) ;// │ Накладные/Акты │
81:wnrec:=GetGRPODRNrec(wname) ;// │ Группы подразделений │
82:wnrec:=0 ;// │ Виды оплат │
5001:wnrec:=0 ;// │ Пооперационные планы │
5002:wnrec:=0 ;// │ Сводные планы │
5003:wnrec:=0 ;// │ Марки транспортных средств │
5004:wnrec:=0 ;// │ Направления инвестиций │
5005:wnrec:=GetKlPriceNrec(wname) ;// │ Прайс-листы │
5006:wnrec:=GetPrSBNrecByName(15,wname) ;// │ Признаки собственности ОС │
5007:wnrec:=GetPrSBNrecByName(16,wname) ;// │ Признаки собственности НМА │
5008:wnrec:=GetTYPEMcNrecByName(wname) ;// │ Типы матценностей │
5009:wnrec:=0 ;// │ Локальные сметы │
5010:wnrec:=0 ;// │ Паспорта качества │
5011:wnrec:=0 ;// │ Варианты изготовления │
5012:wnrec:=0 ;// │ Пункты движения │
5013:wnrec:=0 ;// │ Транспортные средства │
5014:wnrec:=0 ;// │ Состояния транспортных средств │
5015:wnrec:=0 ;// │ Маршруты движения │
5016:wnrec:=0 ;// │ Банки │
5017:wnrec:=GetKAELEMNrecByName(wname) ;// │ Элементы затрат │
5018:wnrec:=0 ;// │ Операционные сметы │
5019:wnrec:=0 ;// │ Платежные документы │
5020:wnrec:=0 ;// │ Типы транспортных средств │
5022:wnrec:=0 ;// │ Пункты календарных планов │
end ;
}
end ; //case KatKau.SysNum of
GetAnaliticNrecByName:=wnrec ;
}
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

edward_K писал(а):для закачки небось нужно?
совершенно верно :)

но тут же везде маячит Get...Name, а у нас только коды... Да и наименование не есть уникально :(
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

вам повезло 8) . И что-то меняется? У меня их не было в основном, а даже если и были то не уникальные, в отличии от наименования.
в принципе можно еще жизнь упростить - там где можно использовать макроподстановки, а уникальные случаи уже прописать отдельно.
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

edward_K писал(а): в принципе можно еще жизнь упростить - там где можно использовать макроподстановки, а уникальные случаи уже прописать отдельно.
Про макроподстановки сразу была мысль. Только нет опыта работы с ними. Покажите пример плиз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

ну вот сия для сапорта
#declare dddd(tablename)
update #tablename where (( #tablename.tabn == lschet.tabn ))
and ( #tablename.cex<>lschet.cex or #tablename.clsch<>lschet.nrec)
set #tablename.cex:=lschet.cex ,#tablename.clsch:=lschet.nrec;

#end

#DDDD(SUMULTEC)
#DDDD(SUMULPRO)
#DDDD(SUMULBUD)
#DDDD(SUMULSOC)
#DDDD(SUMUPSOC)
#DDDD(SUMUPTEC)
#DDDD(SUMUPPRO)
#DDDD(SUMUPBUD)
#DDDD(DOPNAL2)
#DDDD(DOPNAP2)
#DDDD(DOPNAL)
#DDDD(DOPNAP)
#DDDD(ARXTAR)
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

начало получаться...
только вопрос: тут я смотрю явно задается параметр передаваемый в макроопределение, а если я туда вместо имени таблицы пытаюсь подсунуть переменную с именем таблицы - не работает
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а не надо переменную - пишите сразу имя таблы. И параметров могет быть несколько. Фактически все как вы напишите в вызове подстановки, так это так и пойдет в нее. Есть ограничения на использование кавычек и запятых и вообще доку почитайте.
вот еще
#declare Store(TableName,MonthField,YearField,SumField,DataMask,CategoryFunction,OperationKindAnalyticsFunction)
#Store(NACHISL, NACHISL.MES, Year(NACHISL.DATAN), SUMMA, 1, UnloadCategory(hTXO, NACHISL.KATEG),UnloadPaymentKindAnalytics(hTXO, NACHISL.VIDOPLS))
#Store(NENACH, NACHISL.MES, Year(NENACH.DATAN), SUMMA, 2, UnloadCategory(hTXO, NENACH.KATEG),UnloadPaymentKindAnalytics(hTXO, NENACH.VIDOPLS))
#Store(UDER, UDER.MES, Year(UDER.DATAN), SUMUD, 4, , UnloadDeductionKindAnalytics(hTXO, UDER.VIDUDS))
#Store(PEREVODTEK, PEREVODTEK.MES, PEREVODTEK.YEARK, SUMPER, 8, UnloadCategory(hTXO, PEREVODTEK.KATEG),UnloadTaxKindAnalytics(hTXO, PEREVODTEK.VIDPER))

это из TxoZar.
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

а вот как раз переменную то и нада :) с остальным разобрался вроде
у меня есть имя таблицы в переменной (по коду нахожу в x$files)
вот ее прокинуть можно?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

врядли.
макроподстановка во время работы ничего уже не делает.
по идее нужна бы еще функция к txoGetFieldvalue в которой можно было бы указывать индекс для поиска и задавать 3 поля для ключа, но это уже в ИП.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Уже не раз тут грилось, что нельзя на vip-е сказать,что то типа :

set @li1='t$katorg'
exec('select f$name from '+@li1)

как это можно в нормальном TSQL. Т.е. Вы не сможете через перменную отдать в предложение select имя таблицы :sad:
Если у Вас скуль Галактика, то можно попробать через DirectSQl. Там вроде собирается через sqlPrepare(...) строка запроса. Но сам не проверял, будет ли работать
Ответить