Re: Помогите разобраться - почему не работает конструкция
Добавлено: 29 дек 2011, 15:56
Недоглядел ).
Удалил лишнюю не жесткую связку - ничего не изменилось.
Удалил лишнюю не жесткую связку - ничего не изменилось.
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://asu.tyumbit.ru/
Код: Выделить всё
//Добавлять во все проекты -----------------
#param /linc:d:\viperprojekt\autoexec.vpp
#setcurenv "galnet" from 'c:\GAL810\exe\';
#define ComponentVersion
//-----------------------------------------
#include GALNET.CCM
//Выбираем с чем работаем (в данном случае ресурс L_SOPRDOC)
#Component "L_SOPRDOC"
//Выбираем интерфейс из ресурса (в данном случае AKTREC)
alter interface AKTREC;
// Будем изменять обработчики таблице "SPSOPR"
tableEvent table SPSOPR
// Объявляем обработчик который нам нужен
cmPick:
{
// выбираем случай из "#NAMEMCUSL:" и присваиваем запуск интерфейса
case curfield of
#NAMEMCUSL:
{
if runinterface (L_MCU::GETMC,spsopr.cmcusl) = cmdefault and spsopr.cmcusl != 0
if isnew()
insert current spsopr;
else
update current spsopr;
rereadrecord(#spsopr);
runinterface (L_SOPRDOC::Example, katsopr.corgbase, spsopr.cmcusl, katsopr.cgruzfrom,spsopr.kolfact,spsopr.price,spsopr.csporder)
spsopr.rprice:=spsopr.price;
update current spsopr;
PutCommand(cmRefreshBDdata)
}
// иначе обрабатываем обычный "cmPick"
else if(inherited::HandleEvent(cmPick) = heOk) {}
end;
}
end;
end.
Interface Example 'TEST' , escClose, cyan,doAccept;
var _corg, _cmc, _csporder, _gruz, _cpodr:comp;
var _kol,_price:double;
parameters _corg, _cmc, _cpodr, _kol,_price,_csporder
create view as select * from katsopr, spsopr, katorg, katparty, sklorder, sporder, katpodr
where
((
_corg == katsopr.corgbase and
_cpodr == katsopr.cgruzfrom(noindex) and
201 == katsopr.vidsopr and
_cmc == spsopr.cmcusl and
katsopr.nrec /== spsopr.csopr and
katsopr.corgbase /== katorg.nrec and
spsopr.cmcusl == katmc.nrec and
1>>=spsopr.prmc and
spsopr.cparty == katparty.nrec and
spsopr.nrec == sporder.cspsopr and
sporder.csklorder == sklorder.nrec and
sklorder.cpodr /== katpodr.nrec
))
bounds filGruz = _gruz == katsopr.cgruzto(noindex)
;
browse EmployeeBrowse;
table KATSOPR;
Fields
katsopr.nsopr '№ сопроводительного документа':[30], protect;
katsopr.dsopr 'Дата':[10], protect;
// katsopr.vidsopr:protect;
katmc.name 'Наименование товара':[25], protect;
katorg.name 'Наименование контрагента':[25], protect;
katparty.name 'Название партии':[25], protect;
sklorder.norder '№ Ордера':[10], protect;
katpodr.name 'Наименование склада':[15], protect;
end;
handleevent
cmInit :
{
}
cmDefault:
{
_kol:=spsopr.kolfact;
_price:=spsopr.price;
_csporder:=sporder.nrec;
}
cmpick:
{
_gruz:=0;
runinterface(L_KATORG::GetKatOr,_gruz,0,false,0,0);
if _gruz !=0
{
subbounds(tbfilGruz);
addbounds(tbfilGruz);
}
else
subbounds(tbfilGruz)
PutCommand(cmRefreshBDdata)
}
end;
end.
Раз показывает katorg.name в бравсе, то быстрее всего isvalid )kvit писал(а):С контрагентом, конечно странно, попробуйте использовать в browse IsValid(#KatOrg)
Функция помогла но только в другом виде:kvit писал(а):С контрагентом, конечно странно, попробуйте использовать в browse IsValid(#KatOrg)
Код: Выделить всё
if (IsValid(tnKATSOPR), katorg.name, ' ') 'Наименование контрагента':[25], protect;
Значит при вызове вашего интерфейса "Example" вы передаете в его параметр _corg равный corgbase таблицы KatSopr в интерфейсе AKTREC.denisag писал(а):Функция помогла но только в другом виде:
Код: Выделить всё
_corg == katsopr.corgbase and
katsopr.corgbase /== katorg.nrec and
Смотрите статус-лайны и события cmPick, cmEdit и др.denisag писал(а):как реализовать чтобы из вызываемого мной интерфейс, вызывался еще один по какой то кнопке,
А чуток конкретней можно? Что такое статус-лайны?kvit писал(а):Смотрите статус-лайны и события cmPick, cmEdit и др.denisag писал(а):как реализовать чтобы из вызываемого мной интерфейс, вызывался еще один по какой то кнопке,