Страница 3 из 5
Re: Alter interface
Добавлено: 20 мар 2012, 12:13
savov
Вижу: скрин SCRPRNVARIATMCUSL входит в L_SF::PRNSCHFVARIATMCUSL (Укажите варианты наименований для МЦ/услуг).
Код VIP
Код: Выделить всё
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
cfsSetCurrentContainer('L_SF::PRNSCHFVARIATMCUSL');
cfsCreateObject('button', 'SCRPRNVARIATMCUSL', 'ChangeStateSF', FALSE, ButMyComSF);
cfsSetProp ( ButMyComSF, cfpOrigin_X,300);
cfsSetProp ( ButMyComSF, cfpOrigin_Y, 70 );
cfsSetProp ( ButMyComSF, cfpSize_X, 95 );
cfsSetProp ( ButMyComSF, cfpSize_Y, 24 );
cfsSetProp ( ButMyComSF, cfpCommand, cmChangeStateSF);
cfsSetProp ( ButMyComSF, cfpTitle, 'Выбрать вариант' );
cfsSetProp ( ButMyComSF, cfpVisible,TRUE);
}
cmChangeStateSF:
{
.....
}
end;
end.
Должно вроде работать, но не работает.
Re: Alter interface
Добавлено: 20 мар 2012, 12:35
savov
Попробовал код:
Код: Выделить всё
Window PRNSCHFVARIATMCUSL '' EscClose;
HandleEvent
cmChangeStateSF:
{ тут делаем....
}
end; //
end; //
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
cfsSetCurrentContainer('L_SF::PRNSCHFVARIATMCUSL');
cfsCreateObject('button', 'SCRPRNVARIATMCUSL', 'ChangeStateSF', FALSE, ButMyComSF);
cfsSetProp ( ButMyComSF, cfpOrigin_X,300);
cfsSetProp ( ButMyComSF, cfpOrigin_Y, 70 );
cfsSetProp ( ButMyComSF, cfpSize_X, 95 );
cfsSetProp ( ButMyComSF, cfpSize_Y, 24 );
cfsSetProp ( ButMyComSF, cfpCommand, cmChangeStateSF);
cfsSetProp ( ButMyComSF, cfpTitle, 'Выбрать вариант' );
cfsSetProp ( ButMyComSF, cfpVisible,TRUE);
}
не работает..
Re: Alter interface
Добавлено: 20 мар 2012, 13:19
Den
этот скрин находится в mainwindow
Код: Выделить всё
#component "l_sf"
const
cmpdopmy =9881;
end;
alter interface PrnSchFVariatMcUsl;
create view
var
st,aself,aSelf1,cur_cont : longint ;
cur_o,cont_i,aObjType : string ;
;
HandleEvent
CmInit :{
if ( inherited :: handleEvent (cminit)=heOk)
{
st:=cfsGetObjInfo(
'SCRPRNVARIATMCUSL' ,
cur_o ,
aself ,
cont_i ,
aObjType
);
if st=0
{
st:=cfsCreateObject ('Button',
aself ,
'MyPedal',
false,
aSelf1 );
if st=0
{
! Message('ееееее...удалось создать кнопарь :)');
cfsSetProp(aself1, 'Origin_X', 300);
cfsSetProp(aself1, 'Origin_Y', 70);
cfsSetProp(aself1, 'Size_X', 95);
cfsSetProp(aself1, 'Size_y', 24);
cfsSetProp(aself1, 'Title', 'qwerty');
cfsSetProp(aself1, 'Command', cmpdopmy);
}
}
}
}
cmpdopmy: {
Message('run cmpdopmy');
}
end;
end.
Re: Alter interface
Добавлено: 20 мар 2012, 13:28
savov
Den, укажи тупому, чем данный код
Den писал(а):этот скрин находится в mainwindow
Код: Выделить всё
#component "l_sf"
const
cmpdopmy =9881;
end;
alter interface PrnSchFVariatMcUsl;
create view
var
st,aself,aSelf1,cur_cont : longint ;
cur_o,cont_i,aObjType : string ;
;
HandleEvent
CmInit :{
if ( inherited :: handleEvent (cminit)=heOk)
{
st:=cfsGetObjInfo(
'SCRPRNVARIATMCUSL' ,
cur_o ,
aself ,
cont_i ,
aObjType
);
if st=0
{
st:=cfsCreateObject ('Button',
aself ,
'MyPedal',
false,
aSelf1 );
if st=0
{
! Message('ееееее...удалось создать кнопарь :)');
cfsSetProp(aself1, 'Origin_X', 300);
cfsSetProp(aself1, 'Origin_Y', 70);
cfsSetProp(aself1, 'Size_X', 95);
cfsSetProp(aself1, 'Size_y', 24);
cfsSetProp(aself1, 'Title', 'qwerty');
cfsSetProp(aself1, 'Command', cmpdopmy);
}
}
}
}
cmpdopmy: {
Message('run cmpdopmy');
}
end;
end.
принципиально отличается от
Код: Выделить всё
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
cfsSetCurrentContainer('L_SF::PRNSCHFVARIATMCUSL');
cfsCreateObject('button', 'SCRPRNVARIATMCUSL', 'ChangeStateSF', FALSE, ButMyComSF);
cfsSetProp ( ButMyComSF, cfpOrigin_X,300);
cfsSetProp ( ButMyComSF, cfpOrigin_Y, 70 );
cfsSetProp ( ButMyComSF, cfpSize_X, 95 );
cfsSetProp ( ButMyComSF, cfpSize_Y, 24 );
cfsSetProp ( ButMyComSF, cfpCommand, cmChangeStateSF);
cfsSetProp ( ButMyComSF, cfpTitle, 'Выбрать вариант' );
cfsSetProp ( ButMyComSF, cfpVisible,TRUE);
}
cmChangeStateSF:
{
.....
}
end;
end.
, который не работает?
Мне кажется (может и не прав), что в обоих случаях обработчик относится к одному окну (mainwindow)
Re: Alter interface
Добавлено: 20 мар 2012, 13:34
Den
Видимо какие то нюансы есть все же...может приведешь полный код alter своего ? попробую у себя его тоже )
Re: Alter interface
Добавлено: 20 мар 2012, 13:46
savov
Код: Выделить всё
#component 'L_SF'
#include cfg_all.inc
const
cmChangeStateSF = 990190;
End;
Alter interface PRNSCHFVARIATMCUSL;
overload end;
var ButMyComSF : longint ;
var VarNameSF : string ;
var rf, nn : integer ;
var NrecAttrSF : Comp ;
var NameStateSF : String ;
var nrecspschf : Comp ;
Create view Maint as select * FROM attrval;
Create view tspschf as select tmpvarspschf.crec,
catalpsd.prim, catalpsd.name
FROM
tmpvarspschf, catalpsd
WHERE((root==tmpvarspschf.crec
and tmpvarspschf.crec==spschf.nrec
and spschf.CMCUSL==katmc.nrec
and katmc.nrec==catalpsd.crec
and VarNameSF==catalpsd.name ));
Create view nattrnam as select Attrnam.nrec
From
Attrnam
WHERE((Word(3502)==Attrnam.wtable
and 'ВАРИАНТ НАИМЕНОВАНИЯ'==attrnam.name));
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
cfsSetCurrentContainer('L_SF::PRNSCHFVARIATMCUSL');
nn:=SetFormatEnabled('L_SF::PRNSCHFVARIATMCUSL',true);
cfsCreateObject('button', 'SCRPRNVARIATMCUSL', 'ChangeStateSF', FALSE, ButMyComSF);
cfsSetProp ( ButMyComSF, cfpOrigin_X,300);
cfsSetProp ( ButMyComSF, cfpOrigin_Y, 70 );
cfsSetProp ( ButMyComSF, cfpSize_X, 95 );
cfsSetProp ( ButMyComSF, cfpSize_Y, 24 );
cfsSetProp ( ButMyComSF, cfpCommand, cmChangeStateSF);
cfsSetProp ( ButMyComSF, cfpTitle, 'Выбрать вариант' );
cfsSetProp ( ButMyComSF, cfpVisible,TRUE);
}
cmChangeStateSF:
{
rf:=Nattrnam.GetFirst;
NrecAttrSF:=Nattrnam.Attrnam.nRec;
VarNameSF:='';
RunInterface('L_PRNSOPR::ChangeStates',VarNameSF);
if VarNameSF<>''
{
rf:=tspschf.getfirst;
while (rf=0)
{
NameStateSF:=tspschf.catalpsd.prim;
NrecSpschf:=tspschf.tmpvarspschf.crec;
insert attrval set attrval.wtable:=3502,
attrval.cattrnam:=NrecAttrSF, attrval.vstring:=NameStateSF, attrval.crec:=nrecspschf;
rf:=tspschf.getnext;
}
}
RescanPanel(#tmpvarspschf);
}
end;
end.
Этот код работает на двух других аналогичных фейсах (для ДО и накладных). Единственное различие между этими фейсами в том, что в ДО и накладных есть изменяемый чекбокс, а для СФ - нет. Отсюда подозрение, что добавление любого кнопаря не будет работать ( в другом посте писалось, что если все поля SKIP, то ничего и не работает). Но полной уверенности в этом у меня нет.
Re: Alter interface
Добавлено: 20 мар 2012, 13:58
Den
У меня работает вроде твой код тоже....в смысле отрабатывает код кнопки ...по крайней мере при нажатии "Выбрать вариант" огребаю что не найден ChangeStates...
Re: Alter interface
Добавлено: 20 мар 2012, 14:07
savov
А как выглядит у тебя галактический интерфейс выбора варианта названия для СФ? В Верхней части окна при подключении моего кода только кнопка "Выбрать вариант" и никаких других галактических чекбоксов и пр ( что можно изменить)?
Re: Alter interface
Добавлено: 20 мар 2012, 14:18
Den
чекбокс есть..."заполнить вариантом по умолчанию" (WSETDEF поле) - дает тоже по нему флаг выставлять/сбрасывать..
Re: Alter interface
Добавлено: 20 мар 2012, 14:25
savov
ВОТ!!!! А У МЕНЯ ЭТОГО ЧЕКБОКСА НЕТУ!! Т.е. нельзя ничего изменить в фейсе...Наверно нету и HendleEvent Чего тогда делать?
Re: Alter interface
Добавлено: 20 мар 2012, 16:09
Den
Да...как то встречал кажется такое, но тогда выкрутился, т.к. у меня была несколько иная ситуация - это какой то косяк атлантиса.
навсидку попробуй (решение конечно не самое хорошее, но все же....) воспользоваться hideFormats в своей докомпиляции описав тот же самый скрин 1:1, но сделав первое поле noprotect
Т.е. там сейчас что то вроде :
Screen scrPrnVariatMcUsl
Show At (,,,4);
Table SchFact;
Fields
UsersDoc.Name : Skip, {Font = {Bold = true}};
.....
...а нужно попробовать описать тот же самый формат тока не одноименный а свой (первое поле скрина делаем Noprotect):
Screen scrPrnVariatMcUslMy;
Show At (,,,4);
Table SchFact;
Fields
UsersDoc.Name : Noprotect, {Font = {Bold = true}};
....
end;
ну и в alter сделать hideFormats SCRPRNVARIATMCUSL;
Тока тогда в коде добавления кнопки иждентификатор своего нового формата поправить нужно будет :
...
st:=cfsGetObjInfo(
'scrPrnVariatMcUslMy' ,
...
Хотя если прокатит так, то можно прямо кнопку описать в своем скрине и все )
Re: Alter interface
Добавлено: 20 мар 2012, 17:31
savov
К моему счастью, в той базе, где реально будет работать этот фейс, стоит исправленный Галактический фейс (
), т.е. кнопка включилась.
Хотя по большому счету , вопрос остался ( вдруг еще раз такое попадется).
спасибо за участие!
Re: Alter interface
Добавлено: 06 июн 2012, 14:31
Руслан
После установки патчей при компиляции стал ругаться на события cmAlt5 и cmMAKEORDER ("Ошибка: Oops. Такой команды нет: MAKEORDER")... Может эти события переименовали???
Новая версия компонента L_SKLAD, на которой не компилится - 8.10.111.0. Старая версия L_SKLAD - 8.10.84.0
Код: Выделить всё
#Component "L_SKLAD"
alter interface PERESORT;
create view;
Window EDITDOC;
HandleEvent
cmAlt5:
{
Message ('Выполняется обработчик');
var nrecPl,nrec_Doc : comp;
var NAZ, M_S, NOM_DD :string;
var koef, sum_katsopr : double;
nrec_Doc := katsopr.nrec;
koef := 0.51221876;
sum_katsopr := 0;
_loop PATDEFS where (KEY = '&Const_GP')
{
koef := Double(PATDEFS.FORMULA);
}
If KATSOPR.Vidsopr = Word(600) //#1
{
_loop SPSOPR where ((nrec_Doc == SPSOPR.CSOPR))
{
spsopr.rprice := Round(spsopr.rprice*koef,0);
spsopr.price := Round(spsopr.price*koef,0);
sum_katsopr := sum_katsopr + Round(spsopr.rprice*spsopr.kolfact);
Update current spsopr;
ReReadRecord (#spsopr);
}
katsopr.Summa := sum_katsopr;
Update current Katsopr;
ReReadRecord (#katsopr);
}
Message ('Цены пересчитаны с коэф. = ' + DoubleToStr(koef,'66.999999'));
}
cmMAKEORDER:
{
if katsopr.cpodrto<>katsopr.cpodrfrom
{
var stmt : LongInt;
var stmt_str : LongInt;
var messageErr : longint;
var nresult : word;
var nresult2 : word;
var nresult3 : word;
var KatsoprNrec : comp;
var tempRes : longint;
KatsoprNrec := comp(katsopr.nrec);
stmt := sqlAllocStmt;
sqlBindCol(stmt, 1, nresult);
sqlBindParam( stmt, 1, KatsoprNrec );
sqlPrepare(stmt, stmt_str);
sqlFreeStr(stmt_str);
messageErr := sqlExecute(stmt);
if(messageErr = 0)
{
tempRes := 0;
while( sqlFetch( stmt ) = tsOk )
do
{
if(nresult = 1)
{
message('Будет создана новая партия');
tempRes := 1;
}
else if nresult = 2
{
message('Присвоится существующая партия');
tempRes := 2;
}
else if nresult = 3
{
message('Партия уже выбрана');
tempRes := 3;
}
else if nresult = 4
{
message('МЦ не относится ни к одной из групп в таблице Nadolskiian.Group_mc');
tempRes := 4;
}
else if nresult = 5
{
message('Функция S$F_GET_PARTY_SECOND неправильно отработала');
tempRes := 5;
}
}
if(tempRes = 0) message('Оприходование отработало неверно. Звоните в техподдержку по телефону 91');
}
else message('Опять этот Еррор(');
ReReadRecord(#sporder);
ReReadRecord(#spsopr);
ReReadRecord(#katsopr);
}
inherited::handleEvent(cmMAKEORDER);
}
end;
end;
end.
Re: Alter interface
Добавлено: 06 июн 2012, 15:25
edward_K
что то старая у вас версия
уже есть L_SKLAD_RES_8101160.acd
У меня вот так вот
Код: Выделить всё
...
Window EDITDOC ;
HandleEvent
cmMAKEORDER:
{ UpDateTable;
inherited :: handleEvent (cmMAKEORDER);
}
end;
end;
собирает
Re: Alter interface
Добавлено: 06 июн 2012, 16:38
Руслан
Не хочет компилить, не находит такого события makeorder... Может какой-то рес надо еще указывать кроме L_SKLAD????
Код: Выделить всё
#Component "L_SKLAD"
alter interface PERESORT;
Window EDITDOC;
HandleEvent
cmMAKEORDER:
{
if katsopr.cpodrto<>katsopr.cpodrfrom
{
var stmt : LongInt;
var stmt_str : LongInt;
var messageErr : longint;
var nresult : word;
var nresult2 : word;
var nresult3 : word;
var KatsoprNrec : comp;
var tempRes : longint;
KatsoprNrec := comp(katsopr.nrec);
stmt := sqlAllocStmt;
sqlBindCol(stmt, 1, nresult);
sqlAddStr(stmt_str, 'select top 1 F_GET_PARTY_SECOND (?) from katsopr');
sqlBindParam( stmt, 1, KatsoprNrec );
sqlPrepare(stmt, stmt_str);
sqlFreeStr(stmt_str);
messageErr := sqlExecute(stmt);
if(messageErr = 0)
{
tempRes := 0;
while( sqlFetch( stmt ) = tsOk )
do
{
if(nresult = 1)
{
message('üπñÑΓ ß«ºñá¡á ¡«óá∩ »áαΓ¿∩');
tempRes := 1;
}
else if nresult = 2
{
message('Åα¿ßó«¿Γß∩ ßπΘÑßΓóπεΘá∩ »áαΓ¿∩');
tempRes := 2;
}
else if nresult = 3
{
message('ÅáαΓ¿∩ πªÑ óδíαá¡á');
tempRes := 3;
}
else if nresult = 4
{
message('îû ¡Ñ «Γ¡«ß¿Γß∩ ¡¿ ¬ «ñ¡«⌐ ¿º úαπ»» ó Γáí½¿µÑ Nadolskiian.Group_mc');
tempRes := 4;
}
else if nresult = 5
{
message('öπ¡¬µ¿∩ S$F_GET_PARTY_SECOND ¡Ñ»αáó¿½∞¡« «Γαáí«Γá½á');
tempRes := 5;
}
}
if(tempRes = 0) message('Ä»α¿σ«ñ«óá¡¿Ñ «Γαáí«ΓὫ ¡ÑóÑα¡«. çó«¡¿ΓÑ ó ΓÑσ»«ññÑ᪬𠻫 ΓѽÑΣ«¡π 91');
}
else message('Ä»∩Γ∞ φëà àαα«α(');
ReReadRecord(#sporder);
ReReadRecord(#spsopr);
ReReadRecord(#katsopr);
}
inherited::handleEvent(cmMAKEORDER);
}
end;
end;
end.